O comando Linux rm: tudo o que você precisa saber

Publicados: 2023-01-22
Laptop Linux mostrando um prompt bash
fatmawati achmad zaenuri/Shutterstock.com
O comando rm permite excluir um arquivo ou diretório passando seu nome: "rm filename" ou "rm -d directory". Você também pode incluir um caminho de diretório. Se houver arquivos no diretório, use a opção -r "rm -r diretório" para excluir arquivos e pastas recursivamente.

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.

Índice

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 .

8 erros de digitação que você realmente precisa evitar no Linux
RELACIONADOS 8 erros de digitação que você realmente precisa evitar no Linux

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 

Excluindo um único arquivo passando seu nome de arquivo para rm

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 

Excluindo dois arquivos passando o nome do arquivo e o caminho do diretório para rm

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 

Usando o curinga asterisco para excluir todos os arquivos com extensão de arquivo 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* 

Usando o curinga asterisco para excluir dois arquivos, um com e outro sem, uma extensão de arquivo

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 *.?? 

Usando dois curingas de ponto de interrogação para excluir arquivos que possuem extensões de arquivo de exatamente dois caracteres

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 *.? 

Usando rm interativamente para que seja solicitado antes de cada exclusão

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 .

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 

rm solicitando ao usuário que confirme que deseja excluir um arquivo somente leitura

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 

Usando a opção -f (forçar) para evitar que rm avise sobre exclusões

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.

Como excluir arquivos e diretórios no terminal Linux
RELACIONADO Como excluir arquivos e diretórios no terminal Linux

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 

Usando a opção -d (diretório) para excluir um diretório

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 

Usando a opção -r (recursiva) para excluir um diretório e seus arquivos

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 

Usando os sinalizadores -rfv para fazer com que o rm remova arquivos e diretórios, até mesmo arquivos somente leitura, sem avisar

Na saída podemos ver que os arquivos são removidos e, quando estiverem vazios, os diretórios também são removidos.

A saída dos sinalizadores -rfv mostrando os arquivos que são excluídos e os diretórios que são excluídos quando estão vazios

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 

Usando "./" para contornar o problema de excluir um arquivo cujo primeiro caractere é um hífen

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.

Como lidar com espaços em nomes de arquivos no Linux
RELACIONADO Como lidar com espaços em nomes de arquivos no Linux

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 

Tentando usar ls em um arquivo com espaços em seu nome, sem citar a string ou escapar dos espaços

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 

Tentando usar rm em um arquivo com espaços em seu nome, sem citar a string ou escapar dos espaços

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' 

Usando rm com um nome de arquivo entre aspas para superar o problema de espaços no nome do arquivo

Você também pode escapar dos espaços com barras invertidas “ \ “, assim:

 rm backup\ para\ deletar 

Usando rm com um nome de arquivo com espaços de escape para superar o problema de espaços no nome do arquivo

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