trilha / arco 2 · mexer em arquivo
o que é rm e o que ele faz
o script tinha uma variável com o caminho da pasta a limpar. a variável veio vazia. o rm recebeu o que sobrou da linha, e o que sobrou foi a raiz do sistema.
em poucos minutos: o que o rm faz, por que não existe lixeira, e como conferir a variável antes de apagar. a pílula fica no final.
a aula já funciona: lê, treina no terminal e faz o quiz.
escolhe a camada
em uma frase
é rasgar a página do caderno. não tem lixeira, e o rm não pergunta se era a página certa.
para quem está começando
apaga arquivos. para pasta, precisa de uma opção: -d para pasta vazia, -r para pasta com coisas dentro. o rm não move nada para lixeira nenhuma.
a fonte da verdade
o rm pede ao kernel para apagar o nome na pasta, e quando nenhum nome aponta mais para o inode, o espaço volta. quem expande o asterisco é o bash, antes do rm: o rm só recebe a lista pronta.
o número por trás do nome
o rm -f devolve 0 mesmo quando o arquivo não existe: o 0 não quer dizer que apagou. e a proteção --preserve-root só segura o rm -rf / literal, não o /* que a variável vazia vira.
agora você
um linux de verdade, só seu, apagado quando você sai.
apaga o velho.txt e confere que ele sumiu.
rm velho.txt && lstenta apagar a pasta-vazia só com rm, sem opção. o que acontece?
apaga a pasta vazia com a opção própria para isso e confere.
rm -d pasta-vazia && lsapaga a pasta projeto-velho com tudo dentro, listando o que apagou.
rm -rv projeto-velhoagora a variável vazia, só com echo na frente: nada vai ser apagado, só mostrado. veja o que o rm receberia.
DIR=""; echo rm -rf "$DIR"/*
cuidado: rm -rf "$DIR"/* com DIR vazio vira /*
o arquivo ~/limpar.sh apaga o conteúdo da pasta que você passar como argumento. por segurança, ele está em modo de teste: tem um echo na frente do rm, então só mostra o que apagaria. só que ele não confere o argumento. rodando sem nada, o DIR fica vazio e o "$DIR"/* vira /*. passo 1: veja o que ele faria. rode ~/limpar.sh (sem nada depois). repare que o rm receberia a raiz inteira. passo 2: conserte o script. abra com nano ~/limpar.sh. para salvar: ctrl+o e enter. para sair: ctrl+x. não tire o echo. passo 3: teste. rode ~/limpar.sh sem argumento de novo: ele tem que parar com erro e não mostrar rm nenhum.
a pílula
rm arquivo | apaga, sem lixeira |
rm -r pasta | apaga a pasta e tudo dentro |
echo rm -rf "$DIR"/* | mostra o que o rm receberia |
confere a variável antes de apagar.