Estoy escribiendo un script de shell para ejecutar bajo KornShell (ksh) en AIX. Me gustaría utilizar el comando mkdir
para crear un directorio. Pero el directorio puede existir ya, en cuyo caso no quiero hacer nada. Así que quiero comprobar que el directorio no existe, o suprimir el error "El archivo existe" que mkdir
lanza cuando intenta crear un directorio existente.
¿Alguna idea sobre la mejor manera de hacer esto?
Pruebe mkdir -p
:
mkdir -p foo
Tenga en cuenta que esto también creará cualquier directorio intermedio que no exista; por ejemplo
mkdir -p foo/bar/baz
creará los directorios foo
, foo/bar
y foo/bar/baz
si no existen.
Algunas implementaciones como GNU mkdir
incluyen mkdir --parents
como un alias más legible, pero esto no está especificado en POSIX/Single Unix Specification y no está disponible en muchas plataformas comunes como macOS, varios BSDs, y varios Unixes comerciales, por lo que debería evitarse.
Si desea un error cuando los directorios padre no existen, y quiere crear el directorio si no existe, entonces puede test
para la existencia del directorio primero:
[ -d foo ] || mkdir foo
Esto debería funcionar:
$ mkdir -p dir
o:
if [[ ! -e $dir ]]; then
mkdir $dir
elif [[ ! -d $dir ]]; then
echo "$dir already exists but is not a directory" 1>&2
fi
que creará el directorio si no existe, pero te avisará si el nombre del directorio que intentas crear ya está en uso por algo que no sea un directorio.