Aprenda / Terminal e linha de comando

FundamentosAula 3 de 1614 min0% da trilha

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

terminal
mkdir projeto-novo

Cria 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:

terminal
mkdir -p projeto-novo/src/components

Sem o -p, esse mesmo comando falharia se projeto-novo ainda não existisse.

touch — criando um arquivo vazio

terminal
touch README.md

touch 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

terminal
cp README.md README-backup.md

Para 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":

terminal
cp -r projeto-novo projeto-novo-copia

mv — 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).

terminal
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

terminal
rm README.old.md

Isso apaga o arquivo. Pra apagar uma pasta, de novo é preciso -r:

terminal
rm -r projeto-novo-copia

Até 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.

o comando mais perigoso desta lição
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.

Quiz rápido

Por que 'rm -rf pasta/' é tão perigoso quanto 'sudo rm -rf pasta/' num terminal comum?
Qual a diferença real entre 'cp arquivo.txt copia.txt' e 'mv arquivo.txt copia.txt'?