Apakah ada cara untuk mencegat panggilan ke rm, dan alih-alih menghapus file secara permanen, memindahkannya ke sampah saja?
Apakah ada cara untuk mencegat panggilan ke rm, dan alih-alih menghapus file secara permanen, memindahkannya ke sampah saja?
Jawaban:
Ada resep di webupd8.org untuk ini. Untuk mencegah pembusukan tautan, inilah informasi penting (dengan beberapa tambahan).
sudo apt-get install trash-cli
Ini akan menginstal trash, empty-trash, list-trashdan restore-trashperintah, yang dapat Anda gunakan sebagai-adalah atau membuat rmalias dari trash(lihat di bawah).
Semantik dari trashperintah ini sedikit berbeda dari standar rm- itu tidak memerlukan -rflag untuk dapat menghapus direktori. Jika ini mengganggu Anda, webupd8.org mengusulkan skrip berikut, yang dapat Anda masukkan ke dalam PATH Anda dan menyebutnya trash-rm:
#!/bin/bash
# command name: trash-rm
shopt -s extglob
recursive=1
declare -a cmd
((i = 0))
for f in "$@"; do
case "$f" in
(-*([fiIv])r*([fiIv])|-*([fiIv])R*([fiIv]))
tmp="${f//[rR]/}"
if [ -n "$tmp" ]; then
#echo "\$tmp == $tmp"
cmd[$i]="$tmp"
((i++))
fi
recursive=0
;;
(--recursive) recursive=0
;;
(*)
if [ $recursive != 0 -a -d "$f" ]; then
echo "skipping directory: $f"
continue
else
cmd[$i]="$f"
((i++))
fi
;;
esac
done
trash "${cmd[@]}"
Di Ubuntu 12.04 dan yang lebih baru, perintah terakhir dalam skrip seharusnya trash-put "${cmd[@]}"bukan trash "${cmd[@]}"(karena perintah telah berubah dari trashmenjadi trash-put).
Kemudian buat skrip tersebut dapat dieksekusi:
chmod +x trash-rm
Setelah Anda memilikinya di beberapa direktori di Anda PATH, tambahkan alias ke ~ / .bashrc Anda, yang akan membuat bash untuk memanggil skrip Anda alih-alih rmperintah yang sebenarnya :
alias rm="trash-rm"
Seperti yang ditunjukkan djeikyb dengan benar, trik .bashrc alias hanya akan berfungsi untuk pengguna yang .bashrc dimodifikasi, dan hanya dalam sesi terminal bash.
Dan seharusnya begitu.
alias="trash"). Tahukah Anda apa keuntungan memiliki skrip?
trashuntuk berperilaku lebih seperti rmdalam menghapus direktori. Ini mungkin penting untuk beberapa skrip yang berharap rmberfungsi seperti itu, misalnya. Saya memperbarui jawabannya.
libtrash (package libtrash di Ubuntu) tampaknya melakukan ini, tetapi saya belum pernah menggunakannya.