जवाबों:
यदि फ़ाइल मौजूद है, तो उसे जाँचने की जहमत न करें, बस उसे हटाने का प्रयास करें।
rm -f /p/a/t/h
# or
rm /p/a/t/h 2> /dev/null
ध्यान दें कि यदि फ़ाइल मौजूद नहीं थी, तो दूसरी कमांड विफल हो जाएगी (एक गैर-शून्य निकास स्थिति लौटें), लेकिन पहला विकल्प के -f
लिए (लघु --force
) विकल्प के कारण सफल होगा । स्थिति के आधार पर, यह एक महत्वपूर्ण विवरण हो सकता है।
लेकिन अधिक संभावना है, यदि आप फ़ाइल में संलग्न कर रहे हैं, तो यह है क्योंकि आपकी स्क्रिप्ट >>
फ़ाइल में कुछ रीडायरेक्ट करने के लिए उपयोग कर रही है। बस के >>
साथ बदलें >
। यह कहना मुश्किल है कि आपने कोई कोड प्रदान नहीं किया है।
ध्यान दें कि आप कुछ ऐसा कर सकते हैं test -f /p/a/t/h && rm /p/a/t/h
, लेकिन ऐसा करना पूरी तरह से व्यर्थ है। यह बहुत संभव है कि परीक्षण सही हो जाएगा, लेकिन / p / a / t / h आपके द्वारा इसे हटाने का प्रयास करने से पहले मौजूद नहीं होगा, या इससे भी बदतर होगा कि परीक्षण विफल हो जाएगा और / p / a / t / h बन जाएगा इससे पहले कि आप अगले आदेश को निष्पादित करें जो यह उम्मीद करता है कि यह मौजूद नहीं है। यह प्रयास एक क्लासिक दौड़ की स्थिति है। यह मत करो।
rm /p/a/t/h 2> /dev/null
echo $?
यदि फ़ाइल मौजूद नहीं थी, तो रिटर्न कोड ( ) को 0 के रूप में नहीं रखेंगे । यह जेनकींस की नौकरियों को विफल कर देगा क्योंकि हमने एक गैर मौजूदा फ़ाइल को हटाने की कोशिश की थी।
noclobber
बाश) में कोशिश कर सकते हैं , या हो सकता है कि मौजूदा फ़ाइल को चोद-इन करें, यदि फ़ाइल मौजूद नहीं है (तो रेस की स्थिति से बचें) लेकिन ऐसा करने से सभी कीड़े अधिक सूक्ष्म हो जाएंगे।
एक और एक लाइन कमांड जिसका मैंने उपयोग किया है:
[ -e file ] && rm file
आप इसका उपयोग कर सकते हैं:
#!/bin/bash
file="file_you_want_to_delete"
if [ -f $file ] ; then
rm $file
fi
echo $?
यदि फ़ाइल मौजूद नहीं है तो 1 नहीं देता है।
यदि आप यह देखना चाहते हैं कि फ़ाइल मौजूद है या नहीं, तो जाँचने के चरण को अनदेखा करें, तो आप एक आसान कमांड का उपयोग कर सकते हैं, जो मौजूद होने पर फ़ाइल को हटा देगा और गैर-मौजूद होने पर कोई त्रुटि नहीं करेगा।
rm -f xyz.csv
-f
कोई त्रुटि नहीं होगी। इस जवाब ने मेरी मदद की, धन्यवाद।
कुछ इस तरह काम करेगा
#!/bin/sh
if [ -fe FILE ]
then
rm FILE
fi
-यदि यह एक नियमित फ़ाइल है, तो जाँच करें
-अगर जाँचता है कि फ़ाइल मौजूद है या नहीं
अधिक जानकारी के लिए यदि परिचय
संपादित करें: -ई के साथ प्रयोग किया जाता है, बेमानी है, अकेले का उपयोग करने के लिए भी काम करना चाहिए
-a
पदावनत किया जाता है, -e
इसके बजाय उपयोग करें ।
-f
।
-e
में -fe
अनावश्यक है, के रूप में -f
जहाँ तक मैं जानता हूँ कि यह भी जाँच करता है फ़ाइल के अस्तित्व ..
if [ $( ls <file> ) ]; then rm <file>; fi
इसके अलावा, यदि आप इसके >
बजाय अपने आउटपुट को पुनर्निर्देशित करते हैं तो >>
यह पिछली फ़ाइल को अधिलेखित कर देगा
file
कुछ ऐसा है5 -lt 2
rm $my_file
, है ना? आप किस खोल का उपयोग कर रहे हैं?