rm
コマンドを設定したいです。ユーザーがrm
ファイルを削除しようとした場合は、すぐに削除するのではなく、そのファイルをホームフォルダの.trashに転送する必要があります。誰でも私を助けることができますか?
答え1
libtrashでLD_PRELOADを使用できます。
望むより:http://www.techrepublic.com/article/safely-delete-linux-files-with-libtrash/5034918
~/.trash フォルダーにあるファイルへのハードリンクを作成することもできます。通常のファイル(以前のハードリンク)が削除されると、ごみ箱から削除されるまでディスクに残ります。
ハードリンクを作成するには:
ln test.txt ~/.trash/test.txt
答え2
クイック回避策は、次の関数宣言を~.bashrc
。
function rm() {
mv "${@}" ~/.trash
}
指示:
rm
との間のオプションの違いはmv
コメントとして扱われます。- ゴミ箱の行動に慣れることもできます。この修正なしで他のコンピュータ/アカウントからすばやく削除すると、大きな問題が発生する可能性があります;-)
5セントだけください。以下を使用してください。
alias rm='rm -i '
答え3
実際、「rm」コマンドの名前を変更または移動することは良い考えではないことに注意してください。より良いアプローチは、ユーザープロファイルでまったく異なるスクリプトを使用するalias
ことです。rm
.bash_profileで(bashをデフォルトシェルとして使用すると仮定)
alias rm='~/bin/deleteFile'
その後、スクリプトを作成できます~/bin/deleteFile
。必要に応じて以下をコピー/修正してください。
#!/bin/bash
TODEL=$1
if [ "${TODEL:0:1}" == "/" ]; then #full path?
TRASH=~/trash-can/`dirname $1`
else #relative path.
TRASH=~/trash-can/`pwd`/`dirname $1`
fi
mkdir -p $TRASH 2> /dev/null
mv $TODEL $TRASH
これはテストされていませんが、必要に応じて機能します。解決する必要があるいくつかの注意事項がありますが、それをどのように処理するかを決定するのはユーザーの役割です。つまり、ファイルを削除して同じ名前の新しいファイルを作成してから削除するとどうなりますか?そして、このスクリプトはゴミをクリーンアップしません。たぶん毎週予定されている仕事やそれに似ていますか?
これは直接呼び出されたスクリプトをオーバーライドせず、/bin/rm
bash構成ファイルにロードされていないスクリプトと一緒には使用されません。このスクリプトをある程度信頼する前に考慮する必要がある何百ものがあるかもしれません。
答え4
Debian では、 ~./bash_aliases の 'alias rm='mv -t ~/home/.trash/ ' のような動作が必要です。しかし、エイリアスを使用することは良い習慣ではありません。RM到着MVこれは、永続的な削除を使用したい他のユーザーに影響を与える可能性があるためです。RM。また、エイリアスパスに移動する場合は、定期的にごみ箱を空にするようにcronジョブを設定する必要があります。
いくつかの選択肢が与えられたときここ- 主にサードパーティのツール/スクリプト。