क्या rm को कॉल इंटरसेप्ट करने का कोई तरीका है, और इसके बजाय फाइलों को डिलीट करने के बजाय उन्हें रद्दी में स्थानांतरित करना है?
क्या rm को कॉल इंटरसेप्ट करने का कोई तरीका है, और इसके बजाय फाइलों को डिलीट करने के बजाय उन्हें रद्दी में स्थानांतरित करना है?
जवाबों:
इसके लिए webupd8.org पर एक नुस्खा है । लिंक रोट को रोकने के लिए, यहाँ महत्वपूर्ण जानकारी (कुछ अतिरिक्त के साथ) है।
sudo apt-get install trash-cli
यह स्थापित हो जाएगा trash, empty-trash, list-trashऔर restore-trashआज्ञाओं, जो आप उपयोग कर सकते हैं के रूप में है या बनाने rmके उपनाम trash(नीचे देखें)।
trashकमांड का सिमेंटिक थोड़ा अलग है, फिर मानक rm- यह -rनिर्देशिकाओं को हटाने में सक्षम होने के लिए ध्वज की आवश्यकता नहीं है । यदि यह आपको परेशान करता है, webupd8.org निम्नलिखित स्क्रिप्ट का प्रस्ताव करता है, जिसे आप अपने पैट में डाल सकते हैं और इसे कॉल कर सकते हैं 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[@]}"
उबंटू 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 (Ubuntu में पैकेज libtrash) ऐसा लगता है, लेकिन मैंने कभी इसका उपयोग नहीं किया है।