आपका बैश उपनाम अच्छी तरह से नहीं लिखा गया है (एकल उद्धरण अच्छी तरह से उपयोग नहीं किए गए हैं)। इसके बजाय यह होना चाहिए:
alias rm~='find . -name "*~" -print0 | xargs -0 /bin/rm -f'
अब, मुझे व्यक्तिगत रूप से पाइप के बेकार उपयोग पसंद नहीं हैं और xargs
, इसलिए आपका उपनाम इस तरह लिखा जाएगा:
alias rm~='find . -name "*~" -type f -exec /bin/rm -fv -- {} +'
-type f
केवल फ़ाइलें (नहीं निर्देशिका, लिंक, आदि), खोजने के लिए इतनी के रूप में विकल्प -v
के लिए विकल्प rm
इतनी के रूप में अत्यधिक शब्द (बाहर क्या यह हटाने प्रिंट) किया जाना है। +
अंत में इतना है कि find
रन rm
(spawns उसमें केवल एक ही सब पाया फ़ाइलों के साथ rm
फ़ाइल प्रति एक के बजाय)।
अब से man bash
:
लगभग हर उद्देश्य के लिए, शेल कार्यों द्वारा एलियंस को अलग कर दिया जाता है।
एक उपनाम के बजाय, एक फ़ंक्शन का उपयोग करना बेहतर है: .bash_aliases
फ़ाइल में अपना उपनाम लिखें (यानी, #
उस पंक्ति के सामने एक डालें ), और फ़ाइल में .bashrc
, इस फ़ंक्शन (फ़ाइल में कहीं भी, अंत में ठीक है) डालें :
rm~() {
find . -name "*~" -type f -exec /bin/rm -fv -- {} +
}
इसके अलावा, अन्य उत्तर के रूप में, आप -delete
आदेश का उपयोग कर सकते हैं खोजने के लिए। इस स्थिति में, आपका rm~
कार्य होगा:
rm~() {
find . -name "*~" -type f -printf "Removing file %p\n" -delete
}
वास्तव में, आप एक शांत फ़ंक्शन बना सकते हैं जो एक तर्क लेगा, कहेगा --dry-run
, यह केवल आउटपुट करेगा जो इसे हटा देगा:
rm~() {
case "$1" in
"--dry-run")
find . -name "*~" -type f -printf "[dry-run] Removing file %p\n"
;;
"")
find . -name "*~" -type f -printf "Removing file %p\n" -delete
;;
*)
echo "Unsupported option \`$1'. Did you mean --dry-run?"
;;
esac
}
तो के रूप में उपयोग करें:
rm~ --dry-run
केवल उन फ़ाइलों को दिखाने के लिए जिन्हें हटा दिया जाएगा (लेकिन उन्हें हटाएं नहीं) और फिर
rm~
जब आप इससे खुश होते हैं।
अपनी आवश्यकताओं के अनुकूल और विस्तृत करें!
ध्यान दें। परिवर्तनों को प्रभावी करने के लिए आपको एक नया टर्मिनल खोलना होगा।