回答:
Linuxは(他の大学と同様に)元に戻す機能を提供しません。哲学は、もしそれがなくなったら消えるというものです。重要な場合は、バックアップする必要がありました。
古いバージョンのコピーを自動的に保持するfuseファイルシステム:copyfsがあり、すべての適切なディストリビューションで利用できます。もちろん、それは多くのリソースを使用する可能性があります。
このような事故から保護する最善の方法は、バージョン管理システム(cvs、bazaar、darcs、git、mercurial、subversionなど)を使用することです。学ぶには少し時間がかかりますが、中長期的には見事に成果を上げます。
残念だけど違う。
-i
でrm
有効になっているオプションも気に入らない。私のUnixシステムは私の手を握るべきではありません。
コマンドラインには元に戻すことはできません。ただし、rm -i
およびとしてコマンドを実行できますmv -i
。これにより、「よろしいですか?」というプロンプトが表示されます。コマンドを実行する前に質問します。
スタートアップスクリプトにエイリアスを追加することもできます(~/.bashrc
または/etc/bash.bashrc
)。
alias remove='rm -i'
alias move='mv -i'
編集:以下の提案により、デフォルトのコマンドをエイリアス化するアドバイスを削除しました。代わりに、新しいコマンドが導入されました)。
mv -i
ファイルを上書きするときにのみプロンプトを表示します(これにより、ファイルが便利になり、不快ではなくなります)。同じように、alias cp='cp -i'
。
Linux / Unixシステムに元に戻す機能がない理由は、ほとんどのファイルシステムが情報を保存する方法に由来します。ファイルのメタ情報はすべてディスクの前面に保存され、残りのディスク上のiノードへの参照が含まれます。通常、ほとんどのファイルシステムは、このメタ領域のファイルに10ブロックを割り当てます。最初の7つは最初の7つのiノードを指します。8番目と9番目はiノードのリスト(二重にリンクされたブロック)に行き、10番目はリストのリスト(三重にリンクされたブロック)に行きます。これはファイルシステム(ext4、jfs、xfsなど)によって異なりますが、これらのブロックリストは通常2GBから数TBのファイルサイズに対応できます。
ただし、これらの情報はすべてディスクの前面に保存されるため、ファイルが消去されると、ディスク上のiノードを使用して、所属するメタデータを参照する方法がなくなります。対照的に、FAT32とNTFSは実際にいくつかのヘッダー情報をファイル自体に保存し、ブロックのセットがどのファイルに属するのかを識別しやすくします(そのスペースが新しいファイルによってまだ回収されていない限り)。Linuxの作業では、何かを削除すると、ほとんどの場合、効率のために新しいデータですぐに上書きされます。
元に戻す機能が本当に必要な場合は、ソース管理を使用します。 Subversionは、実際にはシングルユーザーマシンで非常にうまく機能します。これを使用して、ホームシステム上のすべての個人ファイルを制御します。災害、不正なスクリプト、またはコマンドラインの入力ミスが発生するまでは、やり過ぎのようです。
rm -r .
しかし、それはあなたを保護しません。;)
rm -r project.git
。あなたが起こることは稀だリモートサーバー上の別のバージョンに保つ幸い場合
rm -r .
ます。本当にばか。
.bashrcに追加したいことの1つは、コピーと削除の機能です。何かのようなもの:
cprm(){
cp -p $1 ~/deleted/$1
rm $1
}
ただし、rmではなくcprmと入力する習慣を身に付ける必要があります。
ディスクスペースが限られている場合は、削除された領域を常に把握する必要があります。
"$1"
。引用が正しい場合、ファイル「new Document 1」を別の「new Document 1」で上書きします。
GitFSは、ヒューズベースのファイルシステムでありdiff
、バージョン間でs を自動的に計算し、バージョン間の復元/参照を可能にします。
ウェブページ:https : //www.presslabs.com/gitfs