มีวิธีสกัดกั้นการโทรไปที่ rm หรือไม่และแทนที่จะลบไฟล์อย่างถาวรย้ายมันไปที่ถังขยะแทนหรือไม่
มีวิธีสกัดกั้นการโทรไปที่ rm หรือไม่และแทนที่จะลบไฟล์อย่างถาวรย้ายมันไปที่ถังขยะแทนหรือไม่
คำตอบ:
มีสูตรใน webupd8.orgสำหรับสิ่งนี้ เพื่อป้องกันไม่ให้ลิงค์เน่านี่เป็นข้อมูลที่สำคัญ (มีการเพิ่มเติมเล็กน้อย)
sudo apt-get install trash-cli
นี้จะติดตั้งtrash
, empty-trash
, list-trash
และrestore-trash
คำสั่งที่คุณสามารถใช้ตามที่เป็นหรือrm
นามแฝงของtrash
(ดูด้านล่าง)
ความหมายของtrash
คำสั่งนั้นแตกต่างจากมาตรฐานเล็กน้อยrm
- มันไม่ต้องการ-r
แฟล็กเพื่อให้สามารถลบไดเรกทอรีได้ หากสิ่งนี้รบกวนคุณ webupd8.org เสนอสคริปต์ต่อไปนี้ซึ่งคุณสามารถใส่ไว้ใน PATH ของคุณและเรียกมันว่า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[@]}"
ใน Ubuntu 12.04 และใหม่กว่าคำสั่งสุดท้ายในสคริปต์ควรเป็นคำสั่งtrash-put "${cmd[@]}"
แทนtrash "${cmd[@]}"
(เนื่องจากคำสั่งเปลี่ยนจากtrash
เป็นtrash-put
)
จากนั้นทำให้สคริปต์เรียกใช้งานได้:
chmod +x trash-rm
เมื่อคุณมีมันในบางไดเรกทอรีในของคุณPATH
เพิ่มนามแฝงใน ~ / .bashrc ของคุณซึ่งจะทำให้ทุบตีเพื่อเรียกใช้สคริปต์ของคุณแทนrm
คำสั่งจริง:
alias rm="trash-rm"
เมื่อ djeikyb ชี้ให้เห็นอย่างถูกต้องเคล็ดลับนามแฝง. bashrc จะใช้ได้กับผู้ใช้ที่มีการแก้ไข. bashrc และเฉพาะในเซสชันเทอร์มินัล bash เท่านั้น
และที่ควรจะเป็น
alias="trash"
) คุณรู้ไหมว่าข้อดีของการมีสคริปต์คืออะไร
trash
ลักษณะเหมือนrm
การลบไดเรกทอรี สิ่งนี้อาจมีความสำคัญสำหรับบางสคริปต์ที่คาดว่าrm
จะทำงานในแบบที่เป็นเช่น ฉันอัพเดตคำตอบแล้ว
libtrash (แพคเกจ libtrash ใน Ubuntu) ดูเหมือนว่าจะทำสิ่งนี้ แต่ฉันไม่เคยใช้มัน