Estoy escribiendo un script de shell para ejecutar bajo KornShell (ksh) en AIX. Me gustaría usar el mkdir
comando 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 mkdir
aparece cuando intenta crear un directorio existente.
¿Alguna idea sobre la mejor manera de hacer esto?
mkdir
en sistemas tipo Unix, no en Windows.-p
se 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 conerrexit
o 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
mkdir
sí 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 foo
funciona incluso si el directorio existe. Para que funcione solo si el directorio llamado "foo" no existe, intente usar la-p
bandera.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 mkdir
para la opción -p
que 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
newdir
yanotherdir
no existe antes de emitir este comandoUso Correcto
mkdir -p /tmp/newdir/anotherdir
Después de ejecutar el comando, puede ver
newdir
yanotherdir
crear 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