引用:`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