
何らかの理由で私の指の記憶力mv
がに変わりました。rm
この指を再訓練するまでどのようにrm
ヒントを得ることができますか?複数の場所を提供する場合(そのうちの1つは存在しない可能性があります)?
-I
このオプションは、3つ以上のファイルに対してメッセージを表示し、各ファイルにメッセージを表示することを知っていますが、複数のファイルに対してメッセージを表示するのと-i
同様のものが必要です。
答え1
rm
Bash で関数を定義し、引数の数を確認します。引数が1つだけの場合、元のcommand rm
コマンドを呼び出すために実行されます。それ以外の場合は警告を印刷します。
それは次のとおりです。
function rm()
{
if (( $# > 1 )); then
read -r -p "sure? [y/n] " response
case $response in
[yY])
command rm "$@"
;;
*)
echo "ignored"
;;
esac
else
command rm "$@"
fi
}
私の機能で改善が必要なのは、最初にすべてのパラメータをスキャンし、パラメータが次から始まる場合は、そのパラメータを-
オプションとして処理することです。したがって、関数はrm
次の入力を処理できますrm -f 1.txt
。
答え2
ZFS
頻繁にバックアップし、ファイルシステムがまたはある場合はスナップショット(タイムマシンなど)を使用し、btrfs
正しいコマンドを使用するように指を訓練します。ただし、rm
動作と意味を変更しないことをお勧めします。
遅かれ早かれ、これは不快な悪影響を引き起こすでしょうalias rm="rm -i"
...
あなたの場合、私がお勧めするのは、無効にしてrm
対話型シェルを実行するときに元のタスクを実行するカスタムに置き換えることです。rm
たとえば、次の行.bashrc
rm() {
echo "rm disabled, use myRM instead"
}
alias myRM="command rm"
新機能をrm
使用すると、入力エラーをより効果的に排除し、すぐに入力を中止することができますrm
。
このアドバイスは非生産的なように見えるかもしれませんが、私が推奨する理由は、危険なUnixコマンドに対して非標準ですが、まだ有効な動作に慣れるのに危険がないからです。遅かれ早かれ、あなたはハッキングされずに自分のアカウントや他のシステムにログインし、ファイルを保存するように促すプロンプトなしでファイルを削除します。
一方、myRM
入力してファイルを削除することに慣れている場合は、外部システムでこれを実行しても問題はありません。
最後に、まだコマンドをオーバーロードしたい場合は、きちんとしたrm
方法は次のとおりです。
rm() {
echo command rm $([ ${#} -gt 1 ] && echo \-i) "$@"
}