Se seu objetivo é executar um comando de uma linha que:
- Remove e recria o diretório,
~/Desktop/foo
se ele já existir.
- Apenas cria o diretório
~/Desktop/foo
se ele ainda não existir.
Então você pode usar:
rm -r ~/Desktop/foo; mkdir ~/Desktop/foo
;
é equivalente a uma nova linha, mas permite executar vários comandos em uma única linha (ou seja, como um "comando único").
- Se o diretório que você está removendo pode conter arquivos somente leitura, você precisará do
-f
sinalizador para removê-los sem avisar o usuário interativamente. Tudo bem, mas eu recomendo ser especialmente cuidadoso rm -rf ...
. Veja man rm
para detalhes.
- Você precisa que o
rm
comando termine antes da mkdir
execução do comando; esta é a razão para usar em ;
vez de &
. (Um comando anterior &
é executado de forma assíncrona em segundo plano.)
- Você precisa que o
mkdir
comando seja executado quando o rm
comando for bem-sucedido; esta é a razão para usar em ;
vez de ||
.
- Você precisa que o
mkdir
comando seja executado quando o rm
comando falhar (geralmente falha significa que o diretório ainda não existia); esta é a razão para usar em ;
vez de &&
.
- O
rm
comando pode falhar mesmo quando o diretório já existe; nesse caso, o mkdir
comando também falhará, mas as mensagens de erro farão sentido e provavelmente não há necessidade de adicionar uma etapa intermediária para verificar foo
a existência antes de tentar criá-lo.
Veja 3.2.3 listas de comandos no manual Bash Reference para mais informações e explicações sobre os ;
, &
, ||
, e &&
operadores.
Como o muru sugeriu (e Rinzwind elaborou ), eu recomendo que vocêrsync
verifique se ele atenderá às suas necessidades de backup. Existem alguns guias úteis adicionais na página de documentação do rsync , bem como neste guia do rsync do Ubuntu .
por que o mkdir não tem essa opção?
mkdir
cria diretórios (o "mk" significa "make" ). Também excluir diretórios recursivamente e todos os arquivos neles seriam ruins, porque violariam o princípio de menos espanto de uma maneira que provavelmente levaria à perda de dados.
rmdir
nem remove os diretórios que possuem arquivos (que não sejam de diretório). rm
possui uma -r
opção, que faz sentido, pois rm
é esperado remover arquivos (esse é o seu objetivo, portanto, o perigo inerente é intuitivo e os usuários geralmente sabem que devem ter cuidado ao executar rm
comandos).
foo
como em excluir todo o conteúdo dele?mkdir
possui uma-p
opção que ignora se o diretório existe.