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-trash
dan restore-trash
perintah, yang dapat Anda gunakan sebagai-adalah atau membuat rm
alias dari trash
(lihat di bawah).
Semantik dari trash
perintah ini sedikit berbeda dari standar rm
- itu tidak memerlukan -r
flag 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 trash
menjadi 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 rm
perintah 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?
trash
untuk berperilaku lebih seperti rm
dalam menghapus direktori. Ini mungkin penting untuk beberapa skrip yang berharap rm
berfungsi seperti itu, misalnya. Saya memperbarui jawabannya.
libtrash (package libtrash di Ubuntu) tampaknya melakukan ini, tetapi saya belum pernah menggunakannya.