rm エイリアスを mv に変更

rm エイリアスを mv に変更

引用:`rm`を `mv ~/.trash`のようなものに変更する方法

UNIXにはごみ箱ユーティリティがないので、UNIXではごみ箱ユーティリティを実装したいと思います。ファイル
のエイリアスを変更します。.bashrcrm='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

関連情報