5 comandos para manipular diretórios e arquivos no Linux

Os comandos para manipular arquivos e diretórios no Linux consistem em mover, remover, copiar e criar os itens utilizando a interface CLI (command-line interface). Alguns dos comandos mais comuns são: rm, mv, cp e mkdir.

Quem já conhece o Linux em nível superficial percebeu que a recorrência do uso de comandos no terminal é muito maior em relação aos populares Mac OS e Windows. São múltiplas as razões para usuários e administradores recorrerem ao terminal, sendo as principais delas:

  • o terminal é necessário para instalar programas; e
  • é a camada que mais aproxima o usuário do kernel.

5 comandos diretorios arquivos linux

Ao longo da série de publicações disponíveis no blog sobre o assunto, foram apresentados vários tipos de ferramentas e comandos úteis para gerenciar usuários e serviços, entre outros para lidar com processos de redes, downloads, compactação etc.

Desta vez, vou mostrar como utilizá-los a fim de manipular arquivos e diretórios no Linux; portanto, aprenderemos a fazer tarefas como mover, remover, copiar e criar tais elementos apenas digitando instruções no terminal. Vamos praticar? Então confira, abaixo, cinco comandos básicos.

1. mkdir

O comando mkdir é um utilitário do Linux que nos possibilita criar diretórios. Com ele, podemos rapidamente gerar múltiplos diretórios de uma só vez e configurar as suas respectivas permissões.

Vale frisar que o usuário que aciona o mkdir precisa ter permissão de acesso ao diretório pai (parent directory); do contrário, o sistema rejeitará a solicitação enviando a mensagem “permission denied”.

A sintaxe do comando é simples; primeiramente, digita-se mkdir no terminal, seguido do caminho do diretório a ser criado. Além disso, a ferramenta oferece algumas opções que podem ser aplicadas no processo, sendo elas:

-m (–mode=MODE): usada a fim de estabelecer regras e permissões ao diretório criado, de modo similar ao comando chmod;

-p (–parents): a opção -p habilita a criação de diretórios parentes quando necessário;

-v (–verbose): imprime em tela uma mensagem para cada diretório criado;

-Z: ajusta o contexto de segurança SELinux de cada diretório criado para o seu tipo padrão.

Temos outras opções à disposição além dessas mencionadas acima, como –version (exibe a versão do mkdir), –help (apresenta as opções existentes) e –context (faz o mesmo que a opção -Z ao ajustar o contexto do diretório com o SELinux).

Agora que já conhecemos um pouco os recursos oferecidos pelo mkdir, vejamos, abaixo, alguns exemplos de uso.

Criando um diretório simples

A forma mais simples de se utilizar o mkdir é criando um diretório sem nenhuma especificação além do próprio caminho. Exemplo:

mkdir Music
mkdir ~/Music

# isso fará com que o item seja criado no diretório em que você está navegando no momento

Criando uma sequência de subdiretórios

Agora nós vamos utilizar a opção -p a fim de criar subdiretório dentro do diretório Music, expandindo para vertentes musicais e outros detalhes que ajudem na organização dos arquivos. Exemplo:

mkdir -p Music/Rock/Punk/Clash

Por meio do comando o usuário consegue criar quantos diretórios desejar e sem interligá-los, necessariamente. Veja:

mkdir -p Music/Rock/Indie Music/80s/A-Ha Music/Rock/Nacional/Nação Zumbi Music/Rap/2Pac

ou

cd Music/Rock
mkdir -p ~/Punk Pop Metal Indie Hardcore Classic Classic/60s Classic/70s

Comparado ao método convencional via interface gráfica, por exemplo, o mkdir nos ajuda a economizar bastante tempo com a organização de diretórios.

Aplicando permissões aos diretórios recém-criados

Suponha-se que o computador no qual criamos as pastas acima seja compartilhado, sendo que cada usuário tem as suas próprias credenciais de acesso, e todos devem ter acesso aos conteúdos (no caso, músicas). Vamos usar a opção -m e conceder as permissões necessárias?

mkdir -m a=rwx Music

Note que há presença de outros elementos fora o m. Começando pelo a (all), este é um parâmetro que estabelece a aplicação das permissões a todos os usuários da máquina. Já as letras r, w e x significam read, write e execute, respectivamente — em outras palavras, elas são as permissões para leitura, escrita e execução dos arquivos presentes no diretório.

2. rmdir

Quando desejamos remover diretórios, um dos comandos que podemos utilizar é o rmdir, porém existe um critério impeditivo para que ele funcione: os diretórios a serem removidos não devem conter arquivos ou subdiretórios.

Logo, se você tentar deletar o diretório “Rock” que criamos nos exemplos anteriores, aparecerá a mensagem de erro <failed to remove ‘Rock’: Directory not empty>. Por mais que isso torne o comando, digamos, “menos eficiente”, dependendo do caso é possível contornar o problema.

Quando a árvore de diretórios é composta por muitos subdiretórios, é necessário especificar as últimas pastas, primeiramente, usando a opção p (cuja função é a mesma do mkdir), deixando o diretório parent para o final de modo a esvaziá-lo. Vamos a um breve exemplo:

cd Music

rmdir -p Rock/Classic/60s Rock/Classic/70s Rock/Classic Rock Rock

É bem provável que tenham surgido mensagens de erro após a operação acima, correto? Em contrapartida, os diretórios desapareceram dali, não é mesmo? Isso significa que fomos efetivos. Mas como evitar as mensagens? Elas podem ser ignoradas ao digitarmos –ignore-fail-on-non-empty. Exemplo:

rmdir -p --ignore-fail-on-non-empty Rock/Classic/60s Rock/Classic/70s Rock/Classic Rock Rock

Cabe uma observação: este não é o único jeito de remover diretórios e, mais do que isso, o rmdir não é o comando mais utilizado para a tarefa.

3. rm

O comando rm é próprio para remoção de objetos em um sistema baseado em Linux ou Unix. Isso significa que tanto dados quanto os pontos de referência a eles no sistema de arquivos, como um link simbólico. Até por isso, o item em questão tem de ser especificado com os detalhes necessários para que seja desassociado incorretamente.

Tomar essa precaução é muito importante quando se decide utilizar o comando rm, justamente porque, ao ser deletado, , o espaço liberado passa a ficar disponível para armazenar dados futuros; portanto o arquivo removido se torna inacessível e, então, irrecuperável. Não há nada a fazer para reciclá-lo quando isso acontece.

Se lembra do que falei há pouco sobre o rmdir não ser o comando mais utilizado para remover diretórios? Pois então, o rm, embora não o faça por padrão, é bastante utilizado para isso, mais precisamente a sua correspondência no sistema de arquivos.

Porém, antes de aprendermos a realizar essa e outras tarefas com o rm, vamos ver as opções que a ferramenta oferece?

Opções disponíveis no comando rm

Digitando rm –help, uma série de informações são exibidas na tela, dentre as quais quero destacar:

-f (–force): ignora arquivos e argumentos inexistentes, sem prompt;

-r, -R (–recursive): remove diretórios e respectivos conteúdos recursivamente;

-d, –dir: remove diretórios vazios;

-v (–verbose): explique as ações promovidas com o uso do comando rm;

–preserve-root: não remove o diretório root;

–one-file-system: ao remover uma hierarquia recursivamente, o comando pula qualquer diretório que se encontre em um sistema de arquivos diferente daquele argumentado.

Com as informações acima é possível termos uma noção de como aplicar o comando rm de maneira mais efetiva e prudente — isto é, sem correr riscos com a remoção, como a exclusão do diretório root, embora esta opção seja padrão justamente para não acontecer um desastre do tipo.

Exemplos de uso do comando rm

Depois da introdução e da apresentação de algumas opções, chegou a hora de praticar o comando rm; abra o seu terminal e, de preferencia, crie arquivos e diretórios especialmente para testes. Vamos começar?

Removendo arquivos

O processo de remoção de arquivo é bastante simples. A sintaxe consiste no próprio comando rm acompanhado da opção e o item a ser excluído. Exemplo:

rm arquivo.txt

Perceba que a função básica nem mesmo requer a escolha de uma opção. Além disso, o comando também não retornará nenhuma mensagem a menos que ocorra um erro (arquivo ou diretório inexistente, por exemplo).

Contudo, se o arquivo tem o nome iniciado por um traço / dash (“-“), é preciso evitar que o caractere faça com que a ferramenta interprete-o como uma opção. Para isso, digite um traço duplo ou ponto + barra (“./”) antes de declarar o arquivo. Exemplo:

rm -- -arquivo.pdf

ou

rm ./-arquivo.pdf

Uma alternativa a isso é declarar o caminho para o referido arquivo. Exemplo:

rm /Documents/Downloads/-arquivo.pdf.

Removendo múltiplos arquivos

Agora vejamos uma situação de múltiplos arquivos. Suponha-se que os itens existentes em um diretório sejam listados com o comando ls.

ls

draft.doc hello-world.txt programming_in_lua.pdf xyz.txt

Dentre os elementos acima, há um arquivo que não é descartável, mas não faço questão de manter os demais. Então vou simplesmente declarar:

rm draft.doc hello-world.txt xyz.txt

Pronto. Com isso, excluí o que desejava e mantive um ótimo livro no disco rígido.

Excluindo um diretório

Como remover diretórios com o comando rm sendo que, por padrão, ele não o faz? Existem duas maneiras de prosseguir, cada uma adequada a uma situação; a primeira delas é a remoção de correspondências dos diretórios e os conteúdos que eles armazenam.

rm -r /diretório/arquivos/dados

Estando o diretório vazio (após o uso do comando a fim de limpar a pasta, por exemplo), use a opção -d e, então, o diretório será definitivamente removido.

4. mv

O comando mv é utilizado no Linux para mover e renomear objetos, os quais podem ser arquivos e diretórios. É, sem dúvidas, das ferramentas mais comuns entre os usuários acostumados a navegar pelo terminal.

A sua sintaxe é muito similar a tudo que vimos até aqui; o comando é acompanhado, geralmente, de uma opção e, necessariamente, do item a ser movido e do diretório de destino. Exemplo:

mv -f arquivo.png /Pictures/Projects/Design

A instrução acima executa a transferência do arquivo de imagem (arquivo.png) do local atual para o diretório /Pictures/Projects/Design sem prompt antes de sobreposição (opção -f), ou seja, se o elemento está sendo gravado por cima de outro com o mesmo nome e mesma extensão, a ferramenta prosseguirá sem solicitar confirmação.

O mesmo procedimento pode ser feito com múltiplos arquivos e com um único comando. Para isso, digite os nomes dos dados que deseja mover e declare o diretório destino. Exemplo:

mv texto.txt script.sh book.pdf song.mp3 /Documents/Files

Simples, não é mesmo?

Moção de diretórios

A lógica é a mesma quanto a mover diretórios no Linux; aplicando a mesma sintaxe, basta digitarmos o comando mais a opção, se houver, e os diretórios de origem e destino, respectivamente. Vejamos um breve exemplo:

mv /Documents/Projects/Design Works/Design

Renomeação de arquivos e diretórios

Como eu disse no início do tópico, o comando mv tem a capacidade de renomear arquivos, também. Supondo que o usuário pretenda mover o item ciente de que no diretório destino existe outro com o mesmo nome, conforme o exemplo anterior, mas não queira substituí-lo; basta ele fazer o seguinte:

mv arquivo.png /Pictures/Projects/Design/logotipo_3.png

Nesse caso, o uso da opção -f é desnecessário, pois o arquivo foi renomeado antes de ser movido para a nova pasta.

Já a renomeação de diretórios é similar à moção, porém o destino é até então inexistente, sendo ele criado durante o processo de modo que a pasta de origem se torna o seu subdiretório. Exemplo:

mv /Documents/Projects /Documents/Works

5. cp

O comando cp é próprio para cópia de arquivos e diretórios. Um recurso bem legal do cp, considerando o fator CLI, é a cópia de um ou mais itens com opção de cópias de segurança (backups) e preservação das suas características.

Falando em características, os comandos elencados neste artigo têm a sintaxe em comum, isto é, comando + opção (se houver) + objeto, o que não é diferente quando copiamos arquivos e diretórios no terminal usando o cp. Por exemplo, se o usuário deseja copiar um ou mais arquivos:

ls

foo.rar txt.doc book.pdf ubuntu.iso

cp foo.rar ubuntu.iso

ou

cp foo.rar ubuntu.iso /Diretório/Destino

# nesse caso, copiamos os arquivos para outro diretório

Se a intenção é copiar um diretório, pode-se aplicar a opção -r ou -R, que aciona a recursividade, e declarar os diretórios de origem e destino. Exemplo:

cp -r /home/mp3 /Documents/Music

Quer fazer um backup dos arquivos enquanto eles são copiados para o endereço de destino? Para isso, temos a opção –backup=, que deve ser acompanhada de uma opção de backup :— normalmente, usa-se o controle “simple”. Exemplo:

cp --backup=simple /home/mp3/song_2.mp3 /Documents/Music/Blur

Encerramos aqui mais um artigo onde ensinamos comandos básicos de terminal; neste conteúdo em especial, foram apresentados comandos para manipular diretórios e arquivos no Linux, imprescindíveis a profissionais que gerenciam redes e sistemas.

Quer se aprofundar ainda mais em Linux? Aproveite para conhecer os cursos oferecidos na página Profissionais Linux!

Leia também:  OpenSSH: Como Utilizar Para Criar Um Servidor SSH No Linux Com Diversas Camadas De Segurança

ebook completo e Gratuito

Aprenda a Dominar o Linux De Uma Vez Por Todas

baixe sua Cópia

APRENDA A DOMINAR O LINUX