Se o seu objetivo é executar um comando de uma linha que:
- Remove e recria o diretório
~/Desktop/foo, se já existir. - Apenas cria o diretório
~/Desktop/foo, se 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 readonly, você precisará do sinalizador
-fpara removê-los sem avisar o usuário interativamente. Tudo bem, mas eu recomendo ter cuidado especial comrm -rf .... Vejaman rmpara detalhes. - Você precisa que o comando
rmtermine antes que o comandomkdirseja executado; este é o motivo para usar;em vez de&. (Um comando que precede&é executado de forma assíncrona em segundo plano.) - Você precisa executar o comando
mkdirquando o comandormfor bem-sucedido; este é o motivo para usar;em vez de||. - Você precisa executar o comando
mkdirquando o comandormfalhar (geralmente, a falha significará que o diretório ainda não existe); este é o motivo para usar;em vez de&&. - O comando
rmpode falhar mesmo quando o diretório já existir, caso em que o comandomkdirtambém falhará, mas as mensagens de erro farão sentido e provavelmente não será necessário adicionar uma etapa intermediária à verificação defoode existência antes de tentar criá-lo.
Veja 3.2.3 Listas de Comandos no Manual de referência do bash para obter mais informações e explicações sobre os operadores ; , & , || e && .
Como o muru sugeriu (e Rinzwind elaborado ), Eu recomendo que você olhe em rsync para ver se ele atende às suas necessidades de backup. Existem alguns guias úteis adicionais na página de documentação do rsync , bem como este guia rsync do Ubuntu .
porque o mkdir não tem essa opção?
mkdir cria diretórios (o "mk" significa "make" ). Para ele também recursivamente excluir diretórios e todos os arquivos neles seria ruim, porque violaria o princípio de menos espanto de uma forma que provavelmente levaria à perda de dados.
rmdir nem sequer remove diretórios que possuam nenhum ( não-diretório) arquivos neles. rm tem uma opção -r , o que faz sentido, pois espera-se que rm remover arquivos (essa é sua finalidade, portanto, o perigo inerente é intuitivo e os usuários geralmente sabem que devem ter cuidado ao executar comandos rm ).