Si su objetivo es ejecutar un comando de una línea que:
- Elimina y
~/Desktop/foo
vuelve a crear el directorio si ya existe.
- Simplemente crea el directorio
~/Desktop/foo
si 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
-f
indicador para eliminarlos sin solicitar al usuario de forma interactiva. Esto está bien, pero recomiendo ser especialmente cuidadoso rm -rf ...
. Ver man rm
para más detalles.
- Necesita que el
rm
comando termine antes de que se mkdir
ejecute 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
mkdir
comando se ejecute cuando el rm
comando tenga éxito; esta es la razón para usar en ;
lugar de ||
.
- Necesita que el
mkdir
comando se ejecute cuando el rm
comando 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
rm
comando puede fallar incluso cuando el directorio ya existía, en cuyo caso el mkdir
comando también fallará, pero los mensajes de error tendrán sentido y probablemente no sea necesario agregar un paso intermedio para verificar foo
la 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?
mkdir
crea 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.
rmdir
ni siquiera elimina los directorios que tienen archivos (que no sean directorios). rm
tiene una -r
opción, lo cual tiene sentido ya que rm
se 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 rm
comandos).
foo
como en eliminar todo el contenido de la misma?mkdir
tiene una-p
opción que ignora si el directorio existe.