Kako mkdir samo, če dir še ne obstaja?
Pišem skriptno lupino, ki se zažene pod KornShell (ksh) v sistemu AIX. Za ustvarjanje imenika želim uporabiti ukaz mkdir
. Toda imenik morda že obstaja, in v tem primeru ne želim storiti ničesar. Zato želim bodisi preveriti, ali imenik ne obstaja, bodisi odpraviti napako "Datoteka obstaja", ki jo vrže ukaz mkdir
, ko poskuša ustvariti obstoječi imenik.
Kaj menite o tem, kako to najbolje storiti?
1764
3
Poskusite
mkdir -p
:Upoštevajte, da bo to ustvarilo tudi vse vmesne imenike, ki ne obstajajo; na primer,
bo ustvaril imenike
foo
,foo/bar
infoo/bar/baz
, če ti še ne obstajajo.Nekatere implementacije, kot je GNU
mkdir
, vključujejomkdir --parents
kot bolj berljiv vzdevek, vendar to ni določeno v specifikaciji POSIX/Single Unix Specification in ni na voljo na številnih običajnih platformah, kot so macOS, različne BSD in različni komercialni Unixi, zato se mu je treba izogniti.Če želite napako, kadar nadrejeni imeniki ne obstajajo, in želite ustvariti imenik, če ta ne obstaja, lahko najprej
testirate
obstoj imenika:To bi moralo delovati:
ali:
ki bo ustvaril imenik, če ta ne obstaja, vendar vas bo opozoril, če ime imenika, ki ga poskušate ustvariti, že uporablja kaj drugega kot imenik.
Uporabite zastavico -p.