Se seu objetivo é executar um comando de uma linha que:
- Remove e recria o diretório,
~/Desktop/foose ele já existir.
- Apenas cria o diretório
~/Desktop/foose 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
-fsinalizador para removê-los sem avisar o usuário interativamente. Tudo bem, mas eu recomendo ser especialmente cuidadoso rm -rf .... Veja man rmpara detalhes.
- Você precisa que o
rmcomando termine antes da mkdirexecuçã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
mkdircomando seja executado quando o rmcomando for bem-sucedido; esta é a razão para usar em ;vez de ||.
- Você precisa que o
mkdircomando seja executado quando o rmcomando falhar (geralmente falha significa que o diretório ainda não existia); esta é a razão para usar em ;vez de &&.
- O
rmcomando pode falhar mesmo quando o diretório já existe; nesse caso, o mkdircomando 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 fooa 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?
mkdircria 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.
rmdirnem remove os diretórios que possuem arquivos (que não sejam de diretório). rmpossui uma -ropçã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 rmcomandos).
foocomo em excluir todo o conteúdo dele?mkdirpossui uma-popção que ignora se o diretório existe.