Criando, copiando e removendo arquivos
Criar é tranquilo, copiar é tranquilo — remover é o único desses quatro comandos que exige respeito.
Depois de saber navegar, o próximo passo natural é manipular o que existe dentro das pastas: criar, copiar, mover e apagar. Os quatro comandos desta lição — mkdir, touch, cp, mv e rm — cobrem praticamente tudo que você vai precisar fazer com arquivos no dia a dia sem tocar em nenhuma interface gráfica.
mkdir — criando pastas
mkdir projeto-novoCria a pasta projeto-novo dentro da pasta atual. Se você quiser criar uma estrutura de várias pastas aninhadas de uma vez, a flag -p cria os níveis intermediários que ainda não existem:
mkdir -p projeto-novo/src/componentsSem o -p, esse mesmo comando falharia se projeto-novo ainda não existisse.
touch — criando um arquivo vazio
touch README.mdtouch cria um arquivo vazio se ele não existir. Se o arquivo já existir, touch não apaga nem altera o conteúdo — ele só atualiza a data de "última modificação" do arquivo. É um comando pequeno, mas aparece o tempo todo pra criar rapidamente um arquivo em branco antes de editá-lo.
cp — copiando
cp README.md README-backup.mdPara copiar uma pasta inteira (com tudo dentro dela), cp sozinho não basta — precisa da flag -r (recursive), que diz "entre em cada subpasta e copie tudo também":
cp -r projeto-novo projeto-novo-copiamv — movendo e renomeando
mv (move) faz duas coisas que parecem diferentes, mas são o mesmo comando por baixo: mover um arquivo pra outra pasta, ou renomeá-lo (que é, tecnicamente, "mover" pro mesmo lugar com nome novo).
mv README-backup.md README.old.md
mv README.old.md arquivados/A primeira linha renomeia; a segunda move o arquivo renomeado pra dentro da pasta arquivados/. Diferente de cp, mv não deixa o original pra trás — o arquivo simplesmente "vira" outro nome ou local.
rm — removendo, e por que isso merece respeito
rm README.old.mdIsso apaga o arquivo. Pra apagar uma pasta, de novo é preciso -r:
rm -r projeto-novo-copiaAté aqui, nada muito diferente de clicar em "mover pra lixeira". A diferença crítica é que não existe lixeira no terminal. Quando você roda rm, o arquivo não vai pra nenhum lugar de onde dá pra recuperar — ele é apagado direto. E existe uma flag que piora isso ainda mais: -f (force), que ignora avisos de confirmação e remove mesmo arquivos protegidos contra escrita, sem perguntar nada.
rm -rf pasta-antiga/rm -rf combina "apaga recursivamente" com "não pergunte nada" — é rápido, é poderoso, e é exatamente por isso que developers experientes conferem duas vezes o caminho antes de apertar Enter nesse comando específico. Um espaço digitado no lugar errado (rm -rf pasta /antiga em vez de rm -rf pasta/antiga) já foi responsável por muita dor de cabeça de gente experiente, imagine de quem está começando.
Exercício
Você quer apagar uma pasta chamada rascunhos que tem vários arquivos dentro. Escreva o comando certo, e depois explique com suas palavras por que rodar isso sem verificar o nome da pasta antes é arriscado.