मैं 'rm' फ़ाइलों को ट्रैश कैन में कैसे स्थानांतरित कर सकता हूं?


62

मैं दैनिक आधार पर टर्मिनल का उपयोग करता हूं, मैं अक्सर उपयोग करूंगा rm DirectoryName। कभी-कभी मैं थोड़ा पागल हो जाता हूं और करता हूं rm *। जैसा कि आप कल्पना कर सकते हैं, ये शीनिगान कभी-कभी वापस आते हैं और मुझे चेहरे पर मारते हैं। क्या किसी को पता है कि मैं एक मैपिंग कैसे बनाता हूं ताकि rm whateverसब कुछ ट्रैशकेन में चला जाए जिसे मैं फिर मैन्युअल रूप से हटा देता हूं।


3
आप कर सकते हैंmv /file/to/delete ~./Trash

6
अन्य लिपियों को तोड़े बिना rm जैसे सटीक उपकरण पर प्रशिक्षण पहियों को लगाना कठिन है। ऐसा कुछ alias rm=/bin/rm -iहोना चाहिए जो आपको सुरक्षित रूप से अपने पागल से प्रशिक्षित होना चाहिए । भी - जो ट्रैश निर्देशिका आप rm उपयोग करना चाहते हैं? मैक ओएस एक्स के पास प्रत्येक वॉल्यूम के लिए एक ट्रैश डायरेक्टरी होने के साथ-साथ यूजर लेवल ट्रैश कैन हो सकता है।
bmike

1
यदि आप zsh का उपयोग करते हैं, तो डिफ़ॉल्ट रूप से यह तब होगा जब आप करते हैं rm *याrm /path/*
डैनियल सेरोडियो

1
मुझे उन लोगों की सूची में जोड़ें जो यह सोचते हैं कि उत्तर देने के लिए ऐसा जघन्य खतरनाक सवाल है। यदि आपने मेरे लिए काम किया, तो मैं आपको तब तक थप्पड़ नहीं मारूंगा जब तक आप एक शेल प्रॉम्प्ट में "थोड़ा पागल" होने का वादा नहीं करते और 'आरएम' जैसे आदेश जारी करते हैं। मैं यह भी सुनिश्चित करूँगा कि आपके पास किसी भी मशीन के लिए sudo प्रशासनिक विशेषाधिकारों का उपयोग न करें या जिनके लिए मेरी जिम्मेदारी है। इससे पहले कि मैं "rm" या "sudo" टाइप करूं, मैं शारीरिक रूप से खड़ा हो जाता हूं और खुद से पूछता हूं कि क्या मैं 100% निश्चित हूं कि मैं जो कुछ करने जा रहा हूं उसके नतीजों को समझता हूं। शायद आपको बस एक "आरएम-आरएफ़" करने और थोड़ी देर के लिए पीड़ित होने की आवश्यकता है।
विल्फ्रेड स्मिथ

अगर मेरी टिप्पणी क्रूर लगती है, तो पहले से माफी माँगता हूँ, लेकिन बहुत ही सवाल मुझे परेशान करता है।
विल्फ्रेड स्मिथ

जवाबों:


79

बुरा विचार

rmफ़ाइलों को ट्रैश में ले जाने का उपयोग करना खरपतवार की तरह है। यह आम और सुखद है लेकिन भविष्य में आपके लिए बुरा हो सकता है । ;)

उपयोग करते समय आपको वास्तव में खुद पर नियंत्रण रखने की आवश्यकता है rm


Rm का उपयोग न करें

कल्पना कीजिए , आपको कूड़ेदान में जाने की आदत है और इसे एक आदत बनाना है। ज़रूर, आपका सिस्टम सुरक्षित है लेकिन जब आप किसी दोस्त की (या अपनी पत्नी की या अपने बॉस की) नोटबुक में लॉग इन करते हैं और कुछ डिलीट करना पड़ता है? आप वास्तव में वास्तविक rm- उन फ़ाइलों को हमेशा के लिए हटा रहे हैं। यह एक बुरी आदत है, और आपको यह जानना होगा।

इसलिए इसके बजाय, rmtrashइसे उपयोग करने की आदत डालें और बनाएं:

# install rmtrash, (either from the macports or by the brew.)
$ alias trash="rmtrash"
$ alias   del="rmtrash"       # del / trash are shorter than rmtrash

बुरी आदतों को ठीक करना

एक और चीज जो आप अपने आप को इस्तेमाल rmtrashकरने के लिए मजबूर कर सकते हैं , rmवह यह है कि यह आपके लिए एक कस्टम संदेश है .profile

alias rm="echo Use 'del', or the full path i.e. '/bin/rm'"

इसलिए, जब भी आप उपयोग करते हैं rm, आपको rmtrashया तो उपयोग करने के लिए प्रेरित किया जाएगा या /bin/rm। याद रखें, यह केवल अस्थायी है, थोड़ी देर बाद आपको उर्फ ​​को हटा देना चाहिए।


कभी नहीं, कुछ इस तरह से करें:

$ pwd
/
$ cd /tnp; rm -rf *
sh: cd: /tnp: No such file or directory

पॉप क्विज: rmकमांड किस डायरेक्टरी में चलेगी? :)

Ps: बस इस पोस्ट में कुछ अवांछित संपादन हटा दिए गए, जो उपनामों के बारे में कुछ बकवास जोड़ते हैं।


14
&&आपकी जीवन रेखा है। ;शैतान है। पुनश्च उत्तर यह है कि आपके सिस्टम पर बहुत अधिक सब कुछ गायब हो जाता है, उपरोक्त उदाहरण में।
जेसन सैलाज

हालाँकि, rm doesn't डिलीट सिक्योर करता है, लेकिन ट्रैश / खाली करता है (मेरे सेटअप में)।
माइक ग्राफ

1
डेबियन / उबंटू उपयोगकर्ता trash-cliइसके बजाय, पूर्व स्थापित करते हैं। aptitude install trash-cli- देखें github.com/andreafrancia/trash-cli
डैनियल सोकोलोव्स्की

@ jm666 कचरा ( ब्लॉग पोस्ट और स्रोत ) भी देखें। यह फाइल्स को ट्रैश करने के लिए फाइंडर पूछता है। इसके अलावा यह अपर्याप्त उद्देश्यों के लिए मानक ऑब्जेक्टिव सी फाइलसिस्टम एपीआई (तेज) और फालबैक में भी उपयोग कर सकता है। brew install trash
पार्थ

rmtrashवास्तव में पुराना है, 2003 में अंतिम बार अपडेट किया गया था, और यह दिखाता है। यह तुलना में कई कम विकल्प है rm, और अगर आप कहते हैं कि rmtrashएक माध्यमिक मात्रा पर ले जाता है सिस्टम ड्राइव है, जो बड़ी फ़ाइलों के लिए एक लंबा समय लग सकता है पर अपने उपयोगकर्ता का कचरा फ़ोल्डर में उन फ़ाइलों। trashविकल्प पार्थ द्वारा सिफारिश रखें-ऑन-एक ही मात्रा समस्या कई सुलझाने, लेकिन अभी भी लापता, बेहतर है rmविकल्प।
वॉरेन यंग

25

मैं इसे कोड करने के एक दर्जन तरीकों के बारे में सोच सकता हूं, लेकिन स्पष्ट रूप से उनमें से किसी एक को उत्तर में टाइप करने से मना कर सकता हूं। मैं दृढ़ता से आपको थोड़ा पागल होने की आपकी आदत पर अंकुश लगाने की सलाह देता हूं । rmयदि आप इसे ठीक से उपयोग नहीं कर सकते हैं तो आपको बिल्कुल भी उपयोग करने की आदत नहीं होनी चाहिए ।

यहां मूलभूत समस्या यह है कि भले ही आप अपने सिस्टम पर एक सुरक्षा जाल स्थापित करते हैं, जो केवल आपकी बुरी आदतों को बनाए रखने में आपकी मदद करेगा और जब आप किसी और दिन किसी दूसरी मशीन पर होंगे, जिसमें समान कस्टम सुरक्षा नहीं होगी, तो आप करेंगे कुछ बुरा करो।

उचित समाधान का उपयोग करना है rmक्योंकि इसका उपयोग -iतर्क सहित मैन्युअल रूप से किया जाना था जब भी आप संदेह में हों कि एक ग्लोब का विस्तार कैसे होगा, और आपके पास अच्छा सिस्टम बैकअप है जिसे आप गंभीर उपयोगकर्ता त्रुटि की स्थिति में पुनर्स्थापित कर सकते हैं। आदेश में "कचरा" जोड़ने की कोशिश कर रहा है कि बाकी ब्रह्मांड में इसका उपयोग न करें यह एक आधा रास्ता है जो दोनों दुनिया में सबसे खराब है।

या तो कचरे का उपयोग करें या नहीं। का उपयोग करते हुएrmकचरा नहीं जाता है, यह निकालता है।

यदि आप कूड़ेदान का उपयोग करना चाहते हैं, तो इसमें कुछ भी गलत नहीं है। बस rmtrashइसके बजाय कमांड का उपयोग करने की आदत डालें rm। यह आपके मस्तिष्क को यह समझने में मदद करेगा कि क्या हो रहा है और आपको बुरी आदत में नहीं जाना है जो बाद में दुःख का कारण बनेगा।


1
आपकी बात इस उदाहरण में नहीं है। लोग दैनिक आधार पर गलती से चीजों को हटा देते हैं, सिस्टम बैकअप घर पीसी (जो मेरा है) के मामले में काम नहीं करते हैं क्योंकि संसाधन सीमित हैं, कचरा हटाने का एक कदम मेरे विशेष रूप से इन विलोपन को संभालने का एक अधिक कुशल तरीका है उदाहरण।
स्टीव

5
@ जल्द ही आप पूरी तरह से चूक गए। rmपरिभाषा के अनुसार डिस्क से एक फ़ाइल निकालता है। यह इसे कूड़ेदान में नहीं भेजता है। अपने आप को उपयोग करने के लिए सिखाना rmजब आपका मतलब है कि आप आपदा के लिए कूड़ेदान भेजते हैं । यदि आप कूड़ेदान, उपयोग rmtrashया किसी प्रोग्राम के लिए भेजना चाहते हैं जो नौकरी के लिए डिज़ाइन किया गया था, तो आप बाद में बुरे सपने में नहीं आएंगे। मैं यह नहीं कह रहा था कि कूड़ेदान का इस्तेमाल करना गलत है, लेकिन अगर आप इसका इस्तेमाल करना चाहते हैं, तो इसे ऐसी किसी चीज से तार न दें, जो इसे इस्तेमाल करने के लिए न हो!
कालेब

2
brew install rmtrashऔर का उपयोग बंदrm
GabLeRoux

यह एक भयानक जवाब है, मेरे लिए कुछ चीजें साफ की हैं। मैं rmtrashइसके बजाय उपयोग करने की आदत बनाने की कोशिश करूँगा rm
17

सुडो ऐड-एप्ट-रिपॉजिटरी ppa: nateshmbhat / rm-कचरा। फिर "rm-कचरा"
Natesh bhat

3

अपने आप को भयानक परिणामों से बचाने के तरीके हैं rm। हालाँकि, मैं अन्य टिप्पणीकारों से यहाँ सहमत हूँ: बहुत कम लोग अच्छे हैं।

एक मिनट के लिए यह न मानें कि कमांड वातावरण बदलने से आपको मदद मिलेगी। उदाहरण के लिए, आप हर जगह ऑनलाइन लोगों को इस तरह की चीज करने की सलाह देंगे:

alias rm="rm -i"

या

function rm()
{
    echo >&2 'rm forbidden; use "/bin/rm"'
}
export -f rm

यह काम नहीं करेगा। अवधि। उपयोग के मामलों के भार हैं जहां ये छोटे पार्लर ट्रिक आपको बुरी तरह से विफल कर देंगे।

एकमात्र मजबूत तरीका जो मैंने खुद को खतरे से अलग करने के लिए इस्तेमाल किया है, rmवह उन निर्देशिकाओं में क्रोन के माध्यम से एक नियमित बैकअप प्रक्रिया स्थापित करके है जहां मैं काम करता हूं। रॉ UNIX यह आपके लिए अच्छी तरह से करता है, बड़ी सरलता के साथ, एक निश्चित समय के भीतर या बाद में अद्यतन की गई फ़ाइलों की जांच करने के लिए findसंयोजन के साथ उपयोग -mtimeकरता है।


cronअकेले के लिए +1 । धन्यवाद :)
bmike

2

Rmtrash या एक स्क्रिप्ट टाट जैसे कमांड लाइन टूल का उपयोग करें खोजक को हटाने के लिए एपस्क्रिप्ट का उपयोग करता है।

कहने के लिए rmtras स्थापित करने के बाद / usr / स्थानीय / बिन / rmtrash जीव bash के लिए एक उपनाम

alias rm='rmtrash'

आप सीधे rm को कॉल करने के लिए \ alm का उपयोग कर सकते हैं और उपनाम को अनदेखा कर सकते हैं


14
यदि आप एक उपकरण का उपयोग करते हैं rmtrash, तो कृपया अपने आप को एक एहसान करें और इसे अपने नाम से उपयोग करें । कभी भी ऐसी चीजें न rmकरें जो आपको नहीं हैं rm, यह किसी दिन आपको काटेगा।
कालेब

1
rmtrashके साथ संगत नहीं है rm(एक ही कमांड लाइन मापदंडों का समर्थन नहीं करता है -r) इसलिए एक उपनाम वास्तव में किसी भी मामले में उपयोगी नहीं है
पेरी

यह उर्फ करने के लिए एक बुरा विचार है rmtrashकरने के लिए rm। न केवल वे संगत नहीं हैं, बल्कि यह बुरी आदत को भी लागू करेगा और आप गलती rmसे किसी अन्य प्रणाली में उपयोग कर रहे हैं यह सोचकर कि आप केवल उपयोग कर रहे हैं rmtrash
फैयाज

1

बस उन लोगों के लिए एक उपयोगी आदत जोड़ना चाहते हैं जो पहले से ऐसा नहीं करते हैं। किसी भी चीज़ के लिए rm का उपयोग करने से पहले, उस पर 'ls' करें। इस तरह आप उन सभी फाइलों को देख सकते हैं जिन्हें आप हटाने का इरादा रखते हैं। फिर पीछे हटने के बजाय, पिछले 'ls' कमांड को ऊपर खींचें और rm के लिए ls को स्वैप करें। आरएम को आमंत्रित करते समय इस आदत ने बहुत चिंता कम कर दी है।


-1

परिचय (आप इसे छोड़ सकते हैं)

मेरे rm -iलिए पर्याप्त होगा, क्योंकि यह किसी भी फ़ाइल को हटाने से पहले आपको संकेत देता है। हालाँकि, कुछ अतिरिक्त सुरक्षा द्वारा प्रदान किया गया safe-rmएक बुरा विचार नहीं है।

एक साधारण aliasजैसा कि पर्याप्त rm=safe-rm -i हो सकता है, हालांकि rm -rfकाम नहीं करेगा, क्योंकि -iइसके द्वारा ओवरराइड किया जाता है -f

इसलिए, हमें यह सुनिश्चित करना होगा कि -iहमेशा बाद में आएं -f!


मेरा समाधान (3 चरण):

  • सुरक्षित-आरएम स्थापित करें: brew install safe-rm

    आप अभी भी साथ काम कर सकते हैं rm, लेकिन आपने RM_BINअगले चरण में संशोधित किया है

  • अपना ~/.profile(या bash_profile या जो भी) संपादित करें , और निम्नलिखित कोड स्निपेट डालें, (जिसमें एक aliasऔर एक है function):

    alias rm="rm_i"
    
    function rm_i(){
    RM_BIN=safe-rm # you can replace it with regular rm if you like
    
    args=""
    files=""
    argsDone=0 # to make sure arguments are before the files
    
    for var in "$@"
    do
        if [[ $var == \-* ]] ; then
            if [ $argsDone -eq 1 ] ; then
                $RM_BIN # just to show the usage of rm
                return
            fi
            args+=" $var"
        else
            argsDone=1
            files+=" $var"
        fi
    done
    
    args+=" -i" # Put -i at the end (so rm -rf will not ignore it)
    
    $RM_BIN $args $files
    }
    
  • अंत में , logoutऔर login, इसलिए .profile में अपडेट लागू होते हैं। लॉगआउट / लॉगिन करने से पहले इसका उपयोग करें!


टिप्पणियाँ:

  • इसे थोड़े संशोधनों के साथ किसी भी लिनक्स डिस्ट्रो पर लागू किया जा सकता है।
  • यह आपके कर्मचारियों को थ्रैश में स्थानांतरित नहीं करता है। यह प्रत्येक फ़ाइल को हटाने से पहले आपसे पूछता है!
  • यह -rfregexes के साथ और साथ काम करता है ।
  • यदि आप वास्तव में हर एक फ़ाइल / फ़ोल्डर के लिए पूछे rm -rf बिना उपयोग करना चाहते हैं, तो आप अभी भी उपयोग कर सकते हैं /bin/rm -rf(या safe-rm -rfयदि आपने इसे स्थापित किया था)।
  • कोई और अधिक अनजाने rm -rf या rm * ;)

5
अपने आप से बड़े (जैसे alias rm='sudo rm') के लिए किसी अन्य को अलियासिंग करना रसोई के चाकू के लिए एक उजी को जकड़ने के समान है: किसी दिन जब आप उस अनानास को काटने के लिए जाते हैं तो आपको उससे अधिक सौदेबाजी करनी पड़ेगी। खुद से छोटे किसी भी चीज के लिए आरएमआई (जैसे alias rm='rmtrash') अपने बच्चों को निहत्थे हथगोले के साथ खेलने देना और उन्हें यह सिखाना नहीं है कि वे वास्तव में क्या हैं: किसी दिन जब उनका सामना होता है तो वे उचित सावधानी नहीं बरतते। किसी भी तरह से- aliasing rm आपकी व्यक्तिगत सुरक्षा और सार्वजनिक स्वास्थ्य के लिए बुरा है!
कालेब

2
सुरक्षित-आरएम जैसी किसी चीज का उपयोग करना उचित सलाह है। यह rm करने के लिए अलियासिंग नहीं है। इसका उपयोग अपने स्वयं के नाम या एक अन्य उपनाम के तहत करें ताकि आप एक सुरक्षा जाल प्रदान न करें जो हमेशा नहीं रहेगा।
कालेब

में तुम्हारी बात समझ रहा हूँ। लेकिन, इसका कारण यह है कि मैं कई टर्मिनलों के साथ काम करता हूं .. कुछ दूरस्थ टर्मिनल, और कुछ स्थानीय। और मैं दूरदराज के टर्मिनलों पर बहुत सारे हथगोले फेंकना चाहता हूं , लेकिन जब मैं गलती से स्थानीय टर्मिनल पर सुरक्षा सील खींचता हूं, तो विस्फोट होने से पहले मैं एक चेतावनी देखना चाहता हूं ।
पास्चलीस

@Paschalis और क्या होता है यदि स्क्रिप्ट या इंस्टॉल किए गए प्रोग्राम को उपयोग करने की आवश्यकता होती है rm? इसके अलावा, कालेब की बात और भी मान्य है - यदि आपको सुरक्षित-आरएम अलियासिड के साथ एक सिस्टम की आदत है, तो आप इसके साथ लापरवाह हो सकते हैं और अंततः इसे सिस्टम पर उपयोग नहीं कर सकते हैं।
मनीषीर्थ जूथ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.