参考:如何将 `rm` 更改为类似 `mv ~/.trash` 的命令
我想在 UNIX 中实现回收站实用程序,因为 UNIX 没有回收站实用程序。
在.bashrc
文件中我更改别名rm='move.sh"
根据上面的参考指南,我在 move.sh 脚本中编写了函数
脚本:move.sh
#!/bin/sh
TRASH=<trash directory path>
move()
{
mv "$@" $TRASH;
}
move
当我运行时,出现以下错误。有人可以帮我解决我做错了什么吗?
mv:参数不足 (1) 用法:mv [-f] [-i] f1 f2
mv [-f] [-i] f1 ... fn d1
mv [-f] [-i] d1 d2
答案1
首先,如果这是您的整个脚本,则您不需要先创建一个函数。简单地写:
#!/bin/bash
TRASH=<trash directory path>
echo "$TRASH"
mv "$@" "$TRASH"
但要回答脚本的问题,最明显的错误是您没有向函数传递任何参数。换句话说,脚本中的最后一行还应该获取传递给它的脚本参数。move
应该成为move "$@"
.
除此之外,如果没有明确的理由,请记住始终引用您的变量。
正如您似乎想要的那样.bashrc
,只需直接在其中创建函数即可:
cat <<'EOF' | tee -a "$HOME/.bashrc"
trash(){ local t="/my/trash/path"; [[ -n "$*" ]] && echo "$t" && mv "$@" "$t" ;}
EOF
我强烈建议不要重写标准命令,这就是我在示例中rm
这样做的原因trash