O comando Linux rm: tudo o que você precisa saber
Publicados: 2023-01-22 O comando Linux rm
exclui arquivos e diretórios. Para usar esta ferramenta com segurança, você precisa ter certeza do que vai acontecer quando você apertar “Enter”. Aqui está o que você precisa saber.
O que é o comando rm no Linux?
Como excluir arquivos com rm
Usando curingas com rm
Usando rm interativamente
Usando a opção rm Force
Excluindo diretórios com rm
Evitando erros ao usar rm
Qual EPI?
O que é o comando rm no Linux?
O comando rm
do Linux é principalmente para excluir arquivos. É aquele que a maioria das pessoas encontra logo após começar a usar o Linux. Apenas por ser um novato no Linux, é provável que você cometa erros. Você criará ou copiará arquivos por acidente, ou com o nome errado, ou para o lugar errado. Tudo faz parte da curva de aprendizado da linha de comando. As operações de limpeza desses erros envolvem rm
.
O comando rm
pode excluir arquivos, grupos de arquivos, diretórios ou árvores de diretórios completas. Por isso deve ser usado com cautela. Usar rm
não é difícil, mas a penalidade por falha é alta.
Quando um arquivo é excluído com rm
, ele desaparece. Ele não é movido para a lixeira. É obliterado imediatamente. Isso não significa que você deve evitar usar rm
. Mas, para usá-lo com segurança, você precisa estar ciente do que ele pode fazer e garantir que o esteja usando corretamente.
Algumas ferramentas são mais perigosas do que outras e muito menos tolerantes com erros. É por isso que nunca houve um filme chamado The Texas Wrench Massacre . rm
não é uma chave inglesa, é definitivamente uma motosserra.
As pessoas usam motosserras o dia todo, todos os dias e, desde que usem uma com responsabilidade e atenção, estão bem. É o mesmo negócio com rm
. Quando você tira rm
de sua bolsa de ferramentas, você deve desacelerar e verificar, e então checar novamente, sua linha de comando.
O comando rm
é um executável, não faz parte do shell. Portanto, embora estejamos usando o Bash aqui, é o Linux rm
padrão, não um Bash rm
especial.
RELACIONADOS: Linhas de comando: por que as pessoas ainda se incomodam com elas?
Como excluir arquivos com rm
A maneira mais simples de usar o rm
é fornecer o nome de um arquivo que você deseja excluir.
rm config.gc
Você retorna silenciosamente à linha de comando. O rm
adota a postura clássica e discreta do Linux de que, se não reclamar de nada, você pode presumir que fez o que você pediu. Fornecer um nome de arquivo como este faz com que o rm
procure o arquivo no diretório de trabalho atual.
Você pode fornecer vários nomes de arquivo na linha de comando. Você também pode fornecer um caminho de diretório se um arquivo que deseja excluir não estiver no diretório atual.
rm memlog.sh /home/dave/dev-archive/config.gc
Novamente, nada é relatado se o rm
conseguir excluir os arquivos especificados.
RELACIONADOS: 37 comandos importantes do Linux que você deve saber
Usando curingas com rm
Os curingas permitem que você especifique grupos ou coleções de arquivos sem precisar listar os arquivos individuais na linha de comando.
O asterisco “ *
” representa qualquer sequência de caracteres, incluindo nenhum. O ponto de interrogação “ ?
” representa qualquer caractere único.
Para verificar se seus curingas vão corresponder ao que você espera, e nada mais, você pode usá-los com ls antes de usá-los com rm.
Para excluir todos os arquivos PNG no diretório atual, use “*.png”. Isso significa que qualquer sequência de caracteres seguida por “.png” será correspondida. Quando os arquivos forem excluídos, podemos usar ls
para verificar se eles foram embora.
ls *.png
rm *.png
ls *.png
Em nosso computador de teste, temos dois arquivos no diretório atual com nomes começando com “config”.
Podemos excluir ambos usando o curinga asterisco. Ele corresponde a ambos os arquivos porque o rm
está procurando nomes de arquivos que começam com “config”, seguido por qualquer sequência de caracteres. Em um arquivo, essa sequência de caracteres é “.sl3”, a extensão do nome do arquivo. O outro nome de arquivo não possui caracteres após “config”, mas como o asterisco corresponde a qualquer caractere ou a nenhum caractere , ele também corresponde a esse nome de arquivo.
ls config*
rm config*
ls config*
Você pode usar o ponto de interrogação em pares. Isso excluirá os arquivos que possuem extensões de arquivo de dois caracteres exatamente.
ls *.??
rm *.??
ls *.??
RELACIONADOS: 15 caracteres especiais que você precisa conhecer para o Bash
Usando rm interativamente
Uma maneira segura de usar o rm
é forçá-lo a pedir confirmação antes de excluir cada arquivo. A opção -i
(interativa) permite fazer isso. Quando você adiciona essa opção à sua linha de comando, o rm
o avisará antes de cada exclusão, dando a você a chance de passar por cima de ações que você não pretendia.
Usaremos a opção -i
(interativa) neste comando. Ele tenta excluir todos os arquivos com uma única extensão de arquivo de caractere.
rm -i *.?
Cada arquivo correspondente é apresentado por vez. Se você responder “y” ou “Y”, o arquivo será excluído. Se você responder “n”, o arquivo será retido. Na verdade, se você responder com algo diferente de “y” ou “y”, o arquivo será mantido. Você pode simplesmente pressionar “Enter” e o arquivo é mantido.
Você pode trabalhar rapidamente em sua lista de arquivos, excluindo ou pulando arquivos para escolher aqueles que deseja remover. Como veremos, você pode usar a opção i-
(interativa) com outras opções do rm
.
Comandos do Linux | ||
arquivos | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · renomear · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · converter · rclone · fragmentar · srm · scp · gzip · chattr · recortar · encontrar · umask · wc | |
Processos | alias · tela · topo · bom · renice · progresso · strace · systemd · tmux · chsh · história · em · lote · grátis · qual · dmesg · chfn · usermod · ps · chroot · xargs · tty · mindinho · lsof · vmstat · tempo limite · parede · sim · matar · dormir · sudo · su · tempo · groupadd · usermod · grupos · lshw · desligamento · reiniciar · parar · poweroff · senha · lscpu · crontab · data · bg · fg · pidof · nohup · pmap | |
rede | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · dedo · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld |
RELACIONADOS: Melhores laptops Linux para desenvolvedores e entusiastas
Usando a opção rm Force
Se você tentar excluir um arquivo somente leitura, o rm
solicitará sua confirmação antes de excluir o arquivo. Essa é uma boa rede de segurança, mas que pode se tornar entediante se você tiver muitos arquivos para excluir.
rm geonames.sl3
A opção -f
(force) instrui o rm
a nunca solicitar. Você está dizendo "Sim, exclua todos os arquivos sobre os quais você normalmente me avisaria". Também evita que o rm
reclame sobre arquivos inexistentes.
rm -f geonames.sl3
A opção -f
(forçar) geralmente é usada quando você está excluindo um conjunto aninhado de arquivos e diretórios.
Excluindo diretórios com rm
O comando rm
pode, opcionalmente, remover diretórios também, juntamente com os arquivos que eles contêm. Isso é semelhante ao comando rmdir
, mas o rmdir
não pode excluir diretórios com arquivos neles. Ele exclui apenas diretórios vazios. O comando rm
pode facilmente excluir diretórios que contêm arquivos e outros diretórios.
A exclusão de um diretório é semelhante à exclusão de um arquivo. Fornecemos o nome do diretório na linha de comando. Precisamos incluir a opção -d
(diretório). Como fizemos quando estávamos excluindo arquivos, podemos fornecer o nome de vários diretórios. Podemos fornecer um caminho para o diretório que não esteja no diretório de trabalho atual.
rm -d projetos antigos
Se o diretório contiver arquivos, isso falhará.
Para excluir um diretório e seu conteúdo, use o sinalizador -r
(recursivo). Isso exclui o diretório, seus arquivos e todos os diretórios aninhados que ele contém.
arquivo rm -d
rm -r arquivo
O segundo comando é bem-sucedido.
Para alternar o rm
para o modo motosserra completo, podemos combinar as opções -r
(recursiva) e -f
(forçar). Isso diz ao rm
para excluir recursivamente todos os arquivos e diretórios em uma árvore de diretórios, mesmo que sejam somente leitura e sem nos avisar.
Em nosso computador de teste, temos um diretório chamado “código migrado”. Ele contém arquivos e outro diretório chamado “6502”. O diretório “6502” também contém arquivos e outro diretório chamado “ASM”. Há arquivos nesse diretório também. Alguns dos arquivos são somente leitura.
Também incluiremos o comando -v
(detalhado) para que rm
nos diga o que está fazendo.
rm -rfv código migrado
Na saída podemos ver que os arquivos são removidos e, quando estiverem vazios, os diretórios também são removidos.
Evitando erros ao usar rm
Espaços e outros caracteres estranhos em nomes de arquivos podem apresentar problemas. Nomes de arquivo que começam com um hífen “ -
”, por exemplo, podem ser confundidos com opções de linha de comando. Se tivermos um arquivo chamado “-contributors.txt”, o rm
tentará processar o nome como uma sequência de opções de linha de comando.
Como o rm
não tem uma opção chamada “ -c
“, a análise da linha de comando falha e o arquivo não é excluído. Para excluir o arquivo, você precisa precedê-lo com “./” para fornecer um caminho para ele.
rm -contributors.txt
rm ./-contributors.txt
Espaços em nomes de arquivos também são problemáticos. Cite o nome de arquivo inteiro ou use a conclusão de tabulação para inserir o nome do arquivo na linha de comando para você, escapando dos espaços ao fazê-lo. Se você não usar nenhuma dessas opções, o rm
tratará cada parte do nome do arquivo como um arquivo individual.
Aqui, temos dois arquivos, um chamado “backup” e outro chamado “backup para deletar”. Podemos demonstrar o problema com esses nomes de arquivo, usando ls
. Se tentarmos usar ls
no arquivo “backup to delete” e não escaparmos ou citarmos o nome do arquivo, o comando falhará.
ls -hl backup para deletar
ls
reclama que não consegue encontrar arquivos chamados “to” ou “delete”, mas encontra um arquivo chamado “backup”. Isso é o que o rm
fará também. Ele vai reclamar de dois arquivos faltando, e então deletar o arquivo chamado “backup”, que não era o que queríamos.
rm backup para deletar
rm
acha que está trabalhando com três arquivos, “backup”, “to” e “delete”. Ele reclama que não consegue encontrar “para” e “excluir”, mas encontra e exclui silenciosamente “backup”.
Citar o nome do arquivo permite que o rm
exclua o arquivo correto.
rm 'backup para deletar'
Você também pode escapar dos espaços com barras invertidas “ \
“, assim:
rm backup\ para\ deletar
Se você usar a conclusão de tabulação para inserir seus nomes de arquivo, eles serão escapados automaticamente, se necessário.
Qual EPI?
Ao contrário das motosserras do mundo real, não há equipamento de proteção individual que você possa usar com rm
.
O que você pode fazer é verificar sua sintaxe com ls
antes de tentar com rm
e usar o modo interativo para decidir o que será excluído.
Fora isso, é prática até se sentir confortável e confiante. A maneira mais segura de fazer isso é copiar um monte de arquivos de sacrifício para um diretório e praticar neles.
RELACIONADO: Excluir arquivos com mais de x dias no Linux