2016-04-15 4 views
0

私の日はもう一度rm -fで台無しにしたくないですが、私は自己制御を止めることはできません。私は "rm"が "-f"フラグを無視するようにbashrcで何かしたいと思います。.bashrcのフラグを無視する

私の現在の.bashrcスキル(エイリアスと機能)では、この問題を解決できないようです。エイリアス "rm"または関数に置き換える場合、私は実際の "rm"を上書きし、もはや何も削除することはできません。 .bashrcで "rm"が "-f"を無視するようにするにはどうすればよいですか?

+1

'command rm'を使って、実際のディスク上の' rm'コマンドにアクセスするために同じ名前で関数やエイリアスを無視することができます。 – chepner

+0

それは問題の半分に過ぎません。正当な呼び出しから '-f'を削除することは自明ではありません。任意のオプションの最後に '-i'を追加すると、前の' -f'を上書きしますが、振り子をスペクトルの他端まであまりにも遠くまで振ります。 – chepner

+0

私は関数に渡されるフラグのリストにアクセスでき、 "f"を慎重に解析すると仮定していました。 – dshapiro

答えて

0

これでジョブが完了します。これにより、-fを使用することができなくなりますが、有効な "rm"オプションだけがそのファイルの名前でない限り、 "-f"を含むファイルを削除することができます。そのような名前のファイルがある場合は、そのファイルを "rm"する前に名前を変更することができます。これはOSX用に書かれたもので、OSXがrmのフラグとして認識するオプションを正確に探します。

function rm() { 
    for arg 
    do 
     if [[ $arg == *"f"* ]] && [[ $arg =~ ^-[dfiPRrvW]+$ ]] 
     then 
      echo "rm is trying to -f!" 
      return 1 
     fi 
    done 

    command rm "[email protected]" 
} 

EDIT:1

+1

おそらく 'return 1'です。なぜなら、これはすべてエラーとして再定義されたからです。 – ghoti

+0

ああ、ありがとう。混乱して、0がエラーコードであると思った。 – dshapiro

+1

その他の懸念事項が1つあります。 ' - [dfiPRrvW] +'は、OSXまたはFreeBSDのマニュアルページの抜粋のようです。 Linuxにはいくつかのオプションがありますが、HP/UXにはいくつかの機能があります。移植性を持たせるには、使用可能なオプションを判断するか、この機能が最もうまくいくと思われるプラットフォームについて言及する必要があります。 – ghoti

0

に変更し、リターンコード、私はあなたが保護に使用されますので、このアプローチを警告したい - と1日あなたは、外国人のマシン上にない動作する可能性がありそのような変更が行われていないあなた自身のものであれば、トラブルはもっと大きくなる可能性があります。

私は別のアプローチを提案するかもしれません。
10分ごとにhomedirs(およびその他の重要な領域)に対して増分バックアップを実行することによって、このような問題(偶発的な削除)を適切に解決しました。これは大部分が開発や編集作業(中小のファイル)を行う場合にはうまくいきます。大きなメディアファイルなどを扱うとうまくいかないでしょう。私はバックアップからダウンロードとメディアと.cacheを除外しました。私はbaculaを使用していますが、これは初心者のために構成するのが容易ではないかもしれませんが、他にもツールがあります。これは適切な働きをするための仕事ですが、何年もの間、私は努力に値すると思うだけの頭痛を免れました。
この作業を行うために必要な主なものは、バックアップを格納する場所です。これは通常、バックアップ・サーバーとして機能する別のマシン上にありますが、誤った削除の問題のために、同じマシン上の保護されたファイル・スペースになることもあります。今日はおそらくウェブ上にあるかもしれません(しかし、セキュリティ上の問題に注意してください)。

+0

私はあなたの懸念を理解しています。私の望みは実際に-fの使用を止めることです。私のスクリプトは、-fが関わっている場合、実際に削除を防ぎます。ですから、-fを使うたびに何も削除されないので、-fオプションを付けずにコマンドを再試行する必要があります。私はこれが最終的に私はそのオプションの使用をやめるように私を訓練するべきだと思う。 – dshapiro

関連する問題