Am scris un script de shell pentru a rula sub KornShell (ksh) pe AIX. Aș dori să folosi mkdir comandă pentru a crea un director. Dar directorul poate exista deja, caz în care nu vreau să fac nimic. Deci, vreau să fie testați pentru a vedea că directorul nu există, sau suprima "Fișier există" eroare care
mkdir` aruncă atunci când încearcă pentru a crea un director existent.
Ceva idei despre cum cel mai bine să facă acest lucru?
Încerca mkdir -p
:
mkdir -p foo
Rețineți că acest lucru va crea, de asemenea, orice intermediar directoare care don't există; de exemplu,
mkdir -p foo/bar/baz
va crea directoare foo
, foo/bar", și " foo/bar/baz
dacă ei nu't există.
Unele aplicare ca GNU `mkdir "includ" mkdir --părinților ca o mai ușor de citit alias, dar acest lucru nu este specificat în POSIX/Single Unix Specification și nu este disponibil pe mai multe platforme comune ca macOS, diverse BSDs și comerciale diverse sisteme de operare unix, așa că ar trebui să fie evitate.
Dacă doriți o eroare atunci când părintele directoare don't există, și doriți să creați directorul în cazul în care nu't există, atunci puteți test
pentru existența directorul primul:
[ -d foo ] || mkdir foo
Acest lucru ar trebui să funcționeze:
$ mkdir -p dir
sau:
if [[ ! -e $dir ]]; then
mkdir $dir
elif [[ ! -d $dir ]]; then
echo "$dir already exists but is not a directory" 1>&2
fi
care va crea directorul în cazul în care nu't există, dar te avertizez dacă numele de directorul're încercarea de a crea este deja în uz și de altceva decât de un director.
Dacă tu nu't vreau pentru a afișa nici un mesaj de eroare:
[ -d newdir ] || mkdir newdir
Dacă doriți să arate propriul mesaj de eroare:
[ -d newdir ] && echo "Directory Exists" || mkdir newdir
mkdir foo
funcționează, chiar dacă directorul nu există.
Pentru a face să funcționeze numai dacă directorul numit "foo" nu există, încercați să utilizați -p
pavilion.
Exemplu :-
mkdir -p foo
Acest lucru va crea un director numit "foo" numai dacă aceasta nu există. :)
directory_name = "foo"
if [ -d $directory_name ]
then
echo "Directory already exists"
else
mkdir $directory_name
fi
Puteți folosi fie dacă bucla pentru a verifica dacă directorul nu există, dacă nu iese decât să creeze director.
if [ ! -d $dir ]
then
mkdir $dir
else
echo "Directory exists"
fi
mkdir -p $dir
mkdir -p, de asemenea, vă permite să creați structura arborescentă de directoare. Dacă doriți să creați părinte și copil directoare folosind aceeasi comanda, pot opta mkdir -p
mkdir -p /home/parent_dir /home/parent_dir/child1 /home/parent_dir/child2
Referindu-se la pagina man `man mkdir pentru opțiune- "p"
-p, --parents
no error if existing, make parent directories as needed
care va crea toate directoarele de pe o anumită cale, dacă există aruncă nici o eroare în caz contrar se creează toate directoarele de la stânga la dreapta în cale. Încercați comanda de mai jos. directoarele newdir " și " anotherdir
nu't există înainte de emiterea acestei comanda
Utilizarea Corectă
mkdir -p /tmp/newdir/anotherdir
După executarea comenzii puteți vedea newdir " și " anotherdira creat în /tmp. Puteți folosi această comandă ca de multe ori doriți, comanda mereu au
exit(0)`. Din acest motiv cei mai mulți oameni folosesc aceasta comanda in shell script-uri înainte de a utiliza aceste căi.
Aceasta este o funcție simplă (bash shell), care vă permite să creați un director, dacă nu't există.
#----------------------------------
# Create a directory if it doesn't exist
#------------------------------------
createDirectory() {
if [ ! -d $1 ]
then
mkdir -p $1
fi
}
Puteți apela funcția de mai sus ca :
createDirectory /tmp/fooDir/BarDir
Cele de mai sus creează fooDir și BarDir dacă ei nu't există. Notă " p" opțiune în mkdir care creează directoarele recursiv. Sper că acest lucru vă ajută.
mkdir -p sam