ファイルをゴミ箱に移動するにはどうすればよいですか?


62

私は日常的に端末を使用していますが、よく使用しますrm DirectoryName。時々私は少し夢中になりますrm *。あなたが想像できるように、これらのシェナンガンは時々戻ってきて、私を顔にぶつけました。私がマッピングを作成する方法を誰もが知っているのでrm whatever、すべてをゴミ箱に移動してから手動で削除します。


3
あなたができるmv /file/to/delete ~./Trash

6
他のスクリプトを壊すことなく、rmのような精密なツールにトレーニングホイールを配置することは困難です。あなたの狂気からalias rm=/bin/rm -i安全に訓練されるようなものが必要です。また、どのゴミ箱ディレクトリをrmに使用しますか?Mac OS Xには各ボリュームのゴミ箱ディレクトリとユーザーレベルのゴミ箱があるため、不格好になります。
bmike

1
あなたはzshのを使用する場合は、あなたが行うとき、デフォルトではそれはあなたを促すメッセージが表示されますrm *rm /path/*
ダニエルSerodio

1
これはとても危険な質問だと思う人のリストに私を加えてください。あなたが私のために働いていたなら、シェルプロンプトで「ちょっとおかしくなって」「rm」などのコマンドを発行しないと約束するまで、私はあなたを平手打ちしないように努力します。また、私が使用または責任を負っているマシンのsudo管理者権限がないことを確認します。「rm」または「sudo」と入力する前に、物理的に立ち上がって、これからしようとしていることの影響を理解していることを100%確信しているかどうかを自問します。たぶん、「rm -rf」を実行してしばらく苦しむだけです。
ウィルフレッドスミス

私のコメントが残酷に思える場合は事前におApび申し上げますが、その質問自体が恐ろしいものです。
ウィルフレッドスミス

回答:


77

悪いアイデア

使用してrmごみ箱にファイルを移動することは雑草のようなものです。それは一般的で楽しいですが、将来的にはあなたにとって悪いことできます。;)

を使用するときは、自分で制御する必要がありますrm


rmを使用しないでください

想像してみてくださいゴミに移動する習慣に慣れるのに慣れるでしょう。確かに、システムは安全ですが、友人(または妻や上司)のノートブックにログインして何かを削除する必要がある場合はどうでしょうか?あなたは実際に本物を使用するでしょうrm-それらのファイルを永久に削除します。それは悪い習慣であり、あなたはそれを知る必要があります。

そのrmtrashため、代わりにインストールして使用する習慣をつけてください。

# install rmtrash, (either from the macports or by the brew.)
$ alias trash="rmtrash"
$ alias   del="rmtrash"       # del / trash are shorter than rmtrash

悪い習慣を修正する

rmtrash代わりに使用することを強制するためにできる別のことrmは、それをあなたの.profile

alias rm="echo Use 'del', or the full path i.e. '/bin/rm'"

したがって、を使用するたびにrmrmtrashまたはを使用するように求められます/bin/rm。これは一時的なものであり、しばらくしてからエイリアスを削除する必要があることに注意してください。


決して、このようなことをしないでください:

$ pwd
/
$ cd /tnp; rm -rf *
sh: cd: /tnp: No such file or directory

ポップクイズ:rmコマンドはどのディレクトリで実行されますか?:)

追伸:この投稿に対する不要な編集を削除しただけで、エイリアスに関するナンセンスが追加されました。


14
&&あなたのライフラインです。;悪魔です。PS答えは、上記の例では、システム上のほとんどすべてが消えることです。
ジェイソンサラズ

ただし、rmは安全な削除を行いませんが、ゴミ箱/空に移動すると(私の設定では)行われます。
マイクグラフ14年

1
trash-cli代わりに、Debian / Ubuntuユーザーがインストールします。-github.com/andreafrancia/trash-cliをaptitude install trash-cli参照してください
ダニエルソコロウスキー

@ jm666 ゴミ箱もチェックしてください(ブログ投稿ソース)。Finderにファイルを破棄するように要求します。さらに、標準のObjective CファイルシステムAPI(高速)を使用し、権限が不十分な場合はFinderにフォールバックすることもできます。brew install trash
パート

rmtrash2003年に最後に更新されたことが本当に古いです。オプションはに比べてはるかrmに少なくrmtrash、セカンダリボリュームで言うと、システムドライブ上のユーザーのゴミ箱にこれらのファイルを移動するため、大きなファイルの場合は時間がかかる可能性があります。trashparthが推奨するオプションは、キープ・オン・同じ容量の問題を解決する、優れているが、それでも多くの行方不明rmのオプションを。
ウォーレンヤング

25

私はこれをコーディングするための多くの方法を考えることができますが、答えにそれらのいずれかをタイプアップすることを断固として拒否します。少しクレイジーになる習慣を抑えることを強く勧めます。適切に使用できない場合は、使用する習慣がまったくないはずです。rm

ここでの基本的な問題は、自分のシステムにセーフティネットをインストールしても、悪い習慣を維持するのに役立つだけで、いつか同じカスタム保護機能を持たない別のマシンにいるときは、ひどく悪いことをする。

適切な解決策は、グロブがどのように拡張されるか疑問がある場合は常にrm手動で-i引数を追加し、深刻なユーザーエラーが発生した場合に復元できる適切なシステムバックアップを用意するなど、使用することを意図したものを使用することです。他の宇宙では使用しないコマンドに「ゴミ箱」を追加しようとすることは、両方の世界で最悪の中間ステップです。

ゴミ箱を使用するかしないでください。使用rmするとゴミ箱に移動せず、削除されます。

ゴミ箱を使用したい場合は、何も問題はありません。のrmtrash代わりにコマンドを使用する習慣を身につけてくださいrm。これは、あなたの脳が何が起こっているかを理解するのを助け、後で悲嘆を引き起こす悪い習慣にあなたを連れて行かないでしょう。


1
この場合、ポイントは計算されません。人々は毎日偶発的に物を削除しますが、リソースが限られているため、自宅のPC(私のものです)の場合、システムバックアップは機能しません、ごみ箱への移動は私の特定の削除を処理するはるかに効率的な方法です使用事例。
スティーブ

5
@steveあなたはポイントを完全に逃しました。rm定義により、ディスクからファイルを削除します。ゴミ箱には送りません。ごみ箱に送るrmという意味で使用するように自分で教えることは、災害に備えます。ゴミ箱、使用、または仕事のために設計されたプログラムに送信したい場合は、後で悪夢に遭遇することはありません。ゴミ箱を使用することは本質的に間違っていると言っていませんでしたが、使用したい場合は、それを使用することを意図していないものに接続しないでください!rmtrash
カレブ

2
brew install rmtrashそして、使用を中止rm
GabLeRoux

これは素晴らしい答えです。私にとっていくつかのことを解決しました。のrmtrash代わりに使用する習慣を形成しようとしますrm
-Sheharyar

sudo add-apt-repository ppa:nateshmbhat / rm-trash 次に、「rm-trash」をインストールします
Natesh bhat

3

からの恐ろしい結果から身を守る方法がありますrm。しかし、私はここで他のコメント者に同意します:少しでも良いものはほとんどありません。

コマンド環境の変更があなたを助けると信じないでください。たとえば、このようなことをすることをすすめている人はどこでもオンラインで見つけるでしょう:

alias rm="rm -i"

または

function rm()
{
    echo >&2 'rm forbidden; use "/bin/rm"'
}
export -f rm

これは機能しません。期間。これらの小さなパーラーのトリックが惨めに失敗するユースケースがたくさんあります。

危険から身を守るために私が使用した唯一の堅牢な方法rmは、私が働いているディレクトリ上でcronを介して定期的なバックアッププロセスを設定することです。Raw UNIXは、特定の時間内または特定の時間以降に更新されたファイルをチェックするためにを使用findして、非常にシンプルに、うまく-mtime機能します。


cron単独で+1 。ありがとう:)
bmike

2

rmtrashなどのコマンドラインツールを使用するか、スクリプトtatがappscriptを使用してFinderを呼び出し、そこで削除を行います。

/ usr / local / bin / rmtrashと言うrmtrasをインストールした後、bashのエイリアスを作成します

alias rm='rmtrash'

\ rmを使用してrmを直接呼び出し、エイリアスを無視できます


14
あなたのようなツールを使用する場合はrmtrash、自分に好意を行うとしてください、それ自身の名前でそれを使用します。されていないエイリアス決して物事rmにするrm、それはいつの日かあなたをかみます。
カレブ

1
rmtrashと互換性rmがないため(のような同じコマンドラインパラメーターはサポートされません-r)、エイリアスは実際には役に立ちません
ペリー

にエイリアスrmtrashするのは悪い考えrmです。それらは互換性がないだけでなく、悪い習慣を強要し、使用rmしているだけだと思って別のシステムで誤って使用しますrmtrash
ファヤズ

1

まだこれを行っていない人のために役立つ有用な習慣を追加したいだけです。rmを使用する前に、まずlsを実行します。これにより、削除する予定のすべてのファイルを表示できます。次に、再入力する代わりに、前の「ls」コマンドを引き上げて、lsをrmに交換します。この習慣により、rmを呼び出す際の不安が大幅に軽減されました。


-1

はじめに(スキップできます)

rm -iファイルを削除する前にプロンプ​​トが表示されるため、私にとっては十分でしょう。ただし、によって提供されるいくつかの追加のセキュリティはsafe-rm悪い考えではありません。

aliasような単純なもので十分rm=safe-rm -i かもrm -rfしれませんが、-iによってオーバーライドされるため、動作しません-f

ですから、-i常に後を追って確認する必要があります-f


私の解決策(3ステップ):

  • safe-rmをインストールします。 brew install safe-rm

    でも引き続き使用できrmますがRM_BIN、次の手順で変更します

  • ~/.profile(またはbash_profileなど)を編集し、次のコードスニペット(aliasandとa を含む)を追加しますfunction

    alias rm="rm_i"
    
    function rm_i(){
    RM_BIN=safe-rm # you can replace it with regular rm if you like
    
    args=""
    files=""
    argsDone=0 # to make sure arguments are before the files
    
    for var in "$@"
    do
        if [[ $var == \-* ]] ; then
            if [ $argsDone -eq 1 ] ; then
                $RM_BIN # just to show the usage of rm
                return
            fi
            args+=" $var"
        else
            argsDone=1
            files+=" $var"
        fi
    done
    
    args+=" -i" # Put -i at the end (so rm -rf will not ignore it)
    
    $RM_BIN $args $files
    }
    
  • 最後にlogoutおよびlogin.profile内の更新が適用されます。ログアウト/ログインの前に使用しないでください!


ノート:

  • わずかな変更を加えて、任意のLinuxディストリビューションに適用できます。
  • スタッフをスラッシュに移動することはありません。各ファイルを削除する前に確認するだけです!
  • -rf正規表現と一緒に動作します。
  • あなたが本当に使いたい場合はrm -rf なしすべての単一のファイル/フォルダを求められるあなたはまだ使用することができます/bin/rm -rf(またはsafe-rm -rf、あなたがそれをインストールしていた場合)。
  • これ以上意図しない rm -rf または rm * ;)

5
rmをそれ自体よりも大きいもの(たとえばalias rm='sudo rm')にエイリアスすることは、Uziを包丁に縛り付けるようなものです。いつか、そのパイナップルを切りに行くとき、あなたが交渉した以上のものを手に入れるでしょう。rmをそれ自体よりも小さいもの(たとえばalias rm='rmtrash')にエイリアスすることは、子供に武装解除手hand弾で遊ばせ、実際に何であるかを教えないようにすることです。どちらにしても、エイリアスrmは個人の安全と公衆衛生に悪影響を及ぼします。
カレブ14年

2
safe-rmのようなものを使用することは合理的なアドバイスです。rmにエイリアスすることはできません。常に存在するとは限らないセーフティネットを当然のことと思わないように、独自の名前または一意のエイリアスで使用してください。
カレブ14年

あなたの言ってる事がわかります。しかし、私がこれをした理由は、私が多くの端末で作業しているからです。いくつかのリモート端末といくつかのローカル。そして、私はリモート端末に手rena弾をたくさん投げたいのですが、誤ってローカル端末の安全シールを引っ張ったとき、爆発が起こる前に警告を見たいです。
Paschalis

@Paschalisと、スクリプトまたはインストールされたプログラムを使用する必要がある場合はrmどうなりますか?また、Calebのポイントはさらに有効です。safe-rmエイリアスが設定されたシステムに慣れると、無謀になり、最終的にエイリアスのないrmが設定されたシステムで使用される可能性があります。
マニッシュアース14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.