Seberapa universal Anda bertanya? Apakah maksud Anda untuk setiap panggilan rm oleh setiap pengguna atau proses? Atau hanya untuk Anda saat Anda menggunakan bash? Atau ..
djeikyb
Jawaban:
13
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.
Ini adalah jawaban yang bagus, tetapi akan lebih baik jika Anda mengaturnya kembali untuk menekankan konsep utama menggunakan alias. Saya pikir paling penting untuk memahami bagaimana "mencegat" rm. Apa yang terjadi di tempatnya dapat disesuaikan dengan berbagai cara.
djeikyb
Juga, akan baik untuk menyebutkan bahwa ini hanya memengaruhi perintah rm untuk sesi bash pengguna.
djeikyb
@djeikyb: terima kasih untuk sarannya, saya memperbarui jawabannya
Sergey
Ini berfungsi baik bagi saya tanpa skrip (baru diinstal dan tambahkan alias="trash"). Tahukah Anda apa keuntungan memiliki skrip?
desgua
@desgua: tujuan dari skrip ini adalah trashuntuk berperilaku lebih seperti rmdalam menghapus direktori. Ini mungkin penting untuk beberapa skrip yang berharap rmberfungsi seperti itu, misalnya. Saya memperbarui jawabannya.
Sergey
0
libtrash (package libtrash di Ubuntu) tampaknya melakukan ini, tetapi saya belum pernah menggunakannya.
Jawaban:
Ada resep di webupd8.org untuk ini. Untuk mencegah pembusukan tautan, inilah informasi penting (dengan beberapa tambahan).
Ini akan menginstal
trash
,empty-trash
,list-trash
danrestore-trash
perintah, yang dapat Anda gunakan sebagai-adalah atau membuatrm
alias daritrash
(lihat di bawah).Semantik dari
trash
perintah ini sedikit berbeda dari standarrm
- 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 menyebutnyatrash-rm
:Di Ubuntu 12.04 dan yang lebih baru, perintah terakhir dalam skrip seharusnya
trash-put "${cmd[@]}"
bukantrash "${cmd[@]}"
(karena perintah telah berubah daritrash
menjaditrash-put
).Kemudian buat skrip tersebut dapat dieksekusi:
Setelah Anda memilikinya di beberapa direktori di Anda
PATH
, tambahkan alias ke ~ / .bashrc Anda, yang akan membuat bash untuk memanggil skrip Anda alih-alihrm
perintah yang sebenarnya :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.
sumber
alias="trash"
). Tahukah Anda apa keuntungan memiliki skrip?trash
untuk berperilaku lebih sepertirm
dalam menghapus direktori. Ini mungkin penting untuk beberapa skrip yang berharaprm
berfungsi seperti itu, misalnya. Saya memperbarui jawabannya.libtrash (package libtrash di Ubuntu) tampaknya melakukan ini, tetapi saya belum pernah menggunakannya.
sumber