shell - كيفية mkdir فقط إذا كان دير غير موجود بالفعل؟




scripting ksh (8)

أو إذا كنت تريد التحقق من الوجود أولاً:

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

-e هو الاختبار الموجود لقذيفة الكورن.

يمكنك أيضًا تجربة googling manual korn shell.

أنا أكتب السيناريو قذيفة لتشغيل تحت KornShell (KS) على AIX. أرغب في استخدام الأمر mkdir لإنشاء دليل. ولكن قد يكون الدليل موجودًا بالفعل ، وفي هذه الحالة لا أريد القيام بأي شيء. لذلك أريد أن اختبار إما أن الدليل غير موجود ، أو منع الخطأ "ملف موجود" أن mkdir يلقي عندما يحاول إنشاء دليل موجود.

أي أفكار حول أفضل طريقة للقيام بذلك؟


إذا كنت لا تريد إظهار أي رسالة خطأ:

[ -d newdir ] || mkdir newdir

إذا كنت تريد إظهار رسالة الخطأ الخاصة بك:

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

القديم حاول وصحيح

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

سوف تفعل ما تريد مع أي من ظروف السباق لديها العديد من الحلول الأخرى.

في بعض الأحيان تكون أبسط الحلول (وأقبحها) هي الأفضل.


تعريف أشجار الدليل المعقد بأمر واحد

mkdir -p project/{lib/ext,bin,src,doc/{html,info,pdf},demo/stat/a}

لا يدعم mkdir التبديل -p بعد الآن على أنظمة Windows 8+.

يمكنك استخدام هذا:

IF NOT EXIST dir_name MKDIR dir_name

هذه وظيفة بسيطة (shell bash) تتيح لك إنشاء دليل إذا لم يكن موجودًا.

#----------------------------------
# Create a directory if it doesn't exist
#------------------------------------
createDirectory() {
    if [ ! -d $1 ]
        then
        mkdir -p $1
    fi
}

يمكنك استدعاء الوظيفة المذكورة أعلاه على النحو التالي:

createDirectory / tmp / fooDir / BarDir

ما سبق يخلق fooDir و BarDir إذا لم تكن موجودة. لاحظ الخيار "-p" في الأمر mkdir الذي يقوم بإنشاء الدلائل بشكل متكرر. أتمنى أن يساعدك هذا.


mkdir foo يعمل حتى لو كان الدليل موجود. لجعله يعمل فقط إذا كان الدليل المسمى "foo" غير موجود ، حاول استخدام علامة -p .

مثال: -

mkdir -p foo

سيؤدي ذلك إلى إنشاء الدليل المسمى "foo" فقط إذا لم يكن موجودًا. :)


directory_name = "foo"

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




mkdir