Estoy escribiendo un script de shell para ejecutar bajo KornShell (ksh) en AIX. Me gustaría usar el mkdircomando para crear un directorio. Pero el directorio ya puede existir, en cuyo caso no quiero hacer nada. Por lo tanto, quiero probar para ver si el directorio no existe o suprimir el error "El archivo existe" que mkdiraparece cuando intenta crear un directorio existente.
¿Alguna idea sobre la mejor manera de hacer esto?

mkdiren sistemas tipo Unix, no en Windows.-pse requiere para el cumplimiento de la especificación POSIX / Single Unix, por lo que cualquier cosa que intente cumplir con esas especificaciones será compatible-p. Windows es completamente diferente, a menos que use una capa de emulación POSIX como Cygwin o MSYS.mkdir -p, ¡puedes usar paréntesis!{}para crear un árbol de directorio "complejo" en un comando. Ver aquí: technosophos.com/2010/04/15/…||lugar de&&porque toda la línea tiene el estado de salida correcto. Importante si su shell se ejecuta conerrexito si esa línea es la última en una función, switch-case, lo que sea.mkdir; el shell expande dicha expresión a una lista discreta de argumentos a los que se pasamkdir.Esto debería funcionar:
o:
que creará el directorio si no existe, pero le advertirá si el nombre del directorio que está tratando de crear ya está en uso por algo que no sea un directorio.
fuente
Use la bandera -p.
fuente
Definir árboles de directorios complejos con un comando
fuente
mkdirsí misma, sino el shell que ejecuta el comando. Se llama expansión de llaves: AFAIK, solo Bash, ksh, zsh y C shell lo admiten.folder name, debe usarfolder\ name)Si no desea mostrar ningún mensaje de error:
Si desea mostrar su propio mensaje de error:
fuente
El viejo probado y verdadero
hará lo que quiera sin ninguna de las condiciones de carrera que tienen muchas de las otras soluciones.
A veces las soluciones más simples (y más feas) son las mejores.
fuente
mkdir foofunciona incluso si el directorio existe. Para que funcione solo si el directorio llamado "foo" no existe, intente usar la-pbandera.Ejemplo:
Esto creará el directorio llamado "foo" solo si no existe. :)
fuente
fuente
O si desea verificar primero la existencia:
-e es la prueba de existencia para korn shell.
También puede intentar buscar en Google un manual de shell Korn.
fuente
mkdir ya no es compatible con -p switch en sistemas Windows 8+.
Puedes usar esto:
fuente
Consultando la página del manual
man mkdirpara la opción -pque creará todos los directorios en una ruta determinada, si existe no arroja ningún error, de lo contrario, crea todos los directorios de izquierda a derecha en la ruta dada. Prueba el siguiente comando. los directorios
newdiryanotherdirno existe antes de emitir este comandoUso Correcto
mkdir -p /tmp/newdir/anotherdirDespués de ejecutar el comando, puede ver
newdiryanotherdircrear en / tmp. Puede emitir este comando tantas veces como desee, siempre lo ha hechoexit(0). Debido a esta razón, la mayoría de las personas usan este comando en los scripts de shell antes de usar esas rutas reales.fuente
Puede usar el bucle if para verificar si el directorio existe o no, si no sale, cree el directorio.
1) dir = / home / dir_name
2) Puede usar el directorio mkdir con la opción -p para crear un directorio. Verificará si el directorio no está disponible, lo hará.
mkdir -p también permite crear la estructura de árbol del directorio. Si desea crear los directorios padre e hijo usando el mismo comando, puede optar por mkdir -p
fuente
Esta es una función simple (bash shell) que le permite crear un directorio si no existe.
Puede llamar a la función anterior como:
Lo anterior crea fooDir y BarDir si no existen. Tenga en cuenta la opción "-p" en el comando mkdir que crea directorios de forma recursiva. Espero que esto ayude.
fuente
fuente
fuente