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
-f
para removê-los sem avisar o usuário interativamente. Tudo bem, mas eu recomendo ter cuidado especial comrm -rf ...
. Vejaman rm
para detalhes. - Você precisa que o comando
rm
termine antes que o comandomkdir
seja 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
mkdir
quando o comandorm
for bem-sucedido; este é o motivo para usar;
em vez de||
. - Você precisa executar o comando
mkdir
quando o comandorm
falhar (geralmente, a falha significará que o diretório ainda não existe); este é o motivo para usar;
em vez de&&
. - O comando
rm
pode falhar mesmo quando o diretório já existir, caso em que o comandomkdir
também falhará, mas as mensagens de erro farão sentido e provavelmente não será necessário adicionar uma etapa intermediária à verificação defoo
de 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
).