複数のファイルが提供されると、「rm」プロンプトが表示されます。

複数のファイルが提供されると、「rm」プロンプトが表示されます。

何らかの理由で私の指の記憶力mvがに変わりました。rmこの指を再訓練するまでどのようにrmヒントを得ることができますか?複数の場所を提供する場合(そのうちの1つは存在しない可能性があります)?

-Iこのオプションは、3つ以上のファイルに対してメッセージを表示し、各ファイルにメッセージを表示することを知っていますが、複数のファイルに対してメッセージを表示するのと-i同様のものが必要です。

答え1

rmBash で関数を定義し、引数の数を確認します。引数が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) "$@"
}

関連情報