将 rm 别名更改为 mv

将 rm 别名更改为 mv

参考:如何将 `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

相关内容