shell - Mkdir कैसे करें अगर एक डीआईआर पहले से मौजूद नहीं है?



scripting ksh (8)

-पी ध्वज का प्रयोग करें।

man mkdir
mkdir -p foo

https://src-bin.com

मैं AIX पर कॉर्नशेल (ksh) के तहत चलाने के लिए एक शेल स्क्रिप्ट लिख रहा हूं। मैं निर्देशिका बनाने के लिए mkdir कमांड का उपयोग करना चाहता हूं। लेकिन निर्देशिका पहले से मौजूद हो सकती है, इस मामले में मैं कुछ भी नहीं करना चाहता हूं। इसलिए मैं यह देखने के लिए परीक्षण करना चाहता हूं कि निर्देशिका मौजूद नहीं है, या "फ़ाइल मौजूद है" त्रुटि mkdir जो mkdir फेंकता है जब यह मौजूदा निर्देशिका बनाने का प्रयास करता है।

इस पर कोई विचार कैसे करें?


Answer #1

mkdir समर्थन नहीं करता है -p विंडोज 8+ सिस्टम पर अब स्विच करें।

आप इसका उपयोग कर सकते हैं:

IF NOT EXIST dir_name MKDIR dir_name

Answer #2

पुरानी कोशिश की और सच

mkdir /tmp/qq >/dev/null 2>&1

जो कुछ भी आप चाहते हैं वह करेंगे जो किसी अन्य दौड़ समाधान के साथ नहीं है।

कभी-कभी सबसे सरल (और सबसे उदार) समाधान सबसे अच्छे होते हैं।


Answer #3

यदि आप कोई त्रुटि संदेश नहीं दिखाना चाहते हैं:

[ -d newdir ] || mkdir newdir

यदि आप अपना स्वयं का त्रुटि संदेश दिखाना चाहते हैं:

[ -d newdir ] && echo "Directory Exists" || mkdir newdir

Answer #4

यह काम करना चाहिए:

$ mkdir -p dir

या:

if [[ ! -e $dir ]]; then
    mkdir $dir
elif [[ ! -d $dir ]]; then
    echo "$dir already exists but is not a directory" 1>&2
fi

जो निर्देशिका बनायेगा यदि यह अस्तित्व में नहीं है, लेकिन आपको चेतावनी देता है कि निर्देशिका का नाम जिसे आप बनाने का प्रयास कर रहे हैं, पहले से ही निर्देशिका के अलावा किसी अन्य चीज़ द्वारा उपयोग में है।


Answer #5

या यदि आप पहले अस्तित्व की जांच करना चाहते हैं:

if [[ ! -e /path/to/newdir ]]; then
            mkdir /path/to/newdir
fi

- कॉर्न खोल के लिए मौजूदा परीक्षण है।

आप कॉर्न शेल मैनुअल को गुगल करने का भी प्रयास कर सकते हैं।


Answer #6

mkdir foo निर्देशिका मौजूद होने पर भी काम करता है। इसे केवल तभी काम करने के लिए यदि "foo" नामक निर्देशिका मौजूद नहीं है, तो -p ध्वज का उपयोग करने का प्रयास करें।

उदाहरण :-

mkdir -p foo

यह केवल "foo" नाम की निर्देशिका बनाएगा यदि यह अस्तित्व में नहीं है। :)


Answer #7
directory_name = "foo"

if [ -d $directory_name ]
then
    echo "Directory already exists"
else
    mkdir $directory_name
fi




mkdir