Si su objetivo es ejecutar un comando de una línea que:
- Elimina y
~/Desktop/foovuelve a crear el directorio si ya existe.
- Simplemente crea el directorio
~/Desktop/foosi aún no existe.
Entonces puedes usar:
rm -r ~/Desktop/foo; mkdir ~/Desktop/foo
; es equivalente a una nueva línea, pero le permite ejecutar múltiples comandos en una sola línea (es decir, como un "comando único").
- Si el directorio que está eliminando puede contener archivos de solo lectura, necesitará el
-findicador para eliminarlos sin solicitar al usuario de forma interactiva. Esto está bien, pero recomiendo ser especialmente cuidadoso rm -rf .... Ver man rmpara más detalles.
- Necesita que el
rmcomando termine antes de que se mkdirejecute el comando; esta es la razón para usar en ;lugar de &. (Un comando anterior se &ejecuta de forma asíncrona en segundo plano).
- Necesita que el
mkdircomando se ejecute cuando el rmcomando tenga éxito; esta es la razón para usar en ;lugar de ||.
- Necesita que el
mkdircomando se ejecute cuando el rmcomando falla (por lo general, el error significará que el directorio ya no existía); esta es la razón para usar en ;lugar de &&.
- El
rmcomando puede fallar incluso cuando el directorio ya existía, en cuyo caso el mkdircomando también fallará, pero los mensajes de error tendrán sentido y probablemente no sea necesario agregar un paso intermedio para verificar foola existencia antes de intentar crearlo.
Ver 3.2.3 listas de comandos en el Manual de Referencia de Bash para obtener más información y una explicación acerca de los ;, &, ||, y &&los operadores.
Como muru sugirió (y Rinzwind explicó ), le recomiendo que investiguersync para ver si cumple con sus necesidades de respaldo. Hay algunas guías útiles adicionales en la página de documentación de rsync , así como esta guía de Ubuntu rsync .
¿Por qué mkdir no tiene esta opción?
mkdircrea directorios (el "mk" significa "make" ). Que también elimine recursivamente directorios y todos los archivos en ellos sería malo, ya que violaría el principio de menor asombro de una manera que probablemente conduciría a la pérdida de datos.
rmdirni siquiera elimina los directorios que tienen archivos (que no sean directorios). rmtiene una -ropción, lo cual tiene sentido ya que rmse espera que elimine los archivos (ese es su propósito, por lo tanto, el peligro inherente es intuitivo y los usuarios generalmente deben tener cuidado al ejecutar rmcomandos).
foocomo en eliminar todo el contenido de la misma?mkdirtiene una-popción que ignora si el directorio existe.