क्या 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) ऐसा लगता है, लेकिन मैंने कभी इसका उपयोग नहीं किया है।