Introdução


O gerenciamento básico de arquivos é um assunto crítico para qualquer usuário de computador, particularmente em sistemas do tipo Unix, devido a estes sistemas tratarem quase tudo como um arquivo, incluindo dispositivos de hardware e várias interfaces especializadas. Criar, apagar, mover, renomear, salvar e outros tipos de manipulações de arquivos são uma tarefa básica para qualquer usuário ou administrador de sistemas Linux.

Note que este artigo representa o básico do básico em tratando-se de comandos de arquivos no Linux. É de extrema importância que você permaneça pesquisando muito a respeito.

Para começar, você deverá entender algumas regras que governam os nomes de arquivos e os atalhos que você utiliza para se referir a eles. Com esta Informação, você aprender a como manipular arquivos, diretórios, como arquivá-los e como gerenciar os links.


Nomes de arquivos e de caminhos


Cada entidade física e lógica no Linux é representada como um arquivo no sistema de arquivos do Linux. Aqui iremos comentar sobre o sistema de arquivos lógicos, que incluem diretórios e arquivos comuns. No Linux você precisa distinguir entre um nome de arquivo e um nome de caminho. Um nome de arquivo consiste de uma série de letras contínuas, números e alguns sinais de pontuação. Existem algumas restrições para os nomes dos arquivos:

  1. Não podem conter espaços e quaisquer caracteres que representam um separador de campo;
  2. Não pode conter quaisquer caracteres que têm significados especiais para o shell. Os caracteres “proibidos” são ! @ # $ % ^ & * ( ) [ ] { } ‘ “ / | ; < >

No Linux, os arquivos não existem em um vácuo; eles existem em um diretório. O diretório de nível mais alto é o root e é simbolizado pelo caractere ( / ). Se um arquivo chamado musica existe no diretório root, o seu nome de caminho absoluto é /musica. Ao acrescentar um usuário ao sistema usando o comando adduser, ele recebe um diretório home. Por padrão, esse diretório home é geralmente encontrado no root, em um diretório apropriadamente chamado de home. O nome de caminho absoluto especifica exatamente onde um determinado arquivo é armazenado no sistema de arquivos.

Já o nome de caminho relativo, de maneira não-ambígua, aponta para o local de um arquivo em relação ao diretório atual. Se o musica está no seu diretório home, por exemplo, o nome de arquivo musica.arq é também um nome relativo, ou seja, relativo ao seu diretório atual. É interessante notar que você poderá definir um arquivo em qualquer lugar no sistema de arquivos do Linux com nomes de caminho relativos usando dois pseudônimos encontrados em todos os diretórios. O ponto simples (.) se refere ao diretório atual e o ponto duplo (..) se refere ao diretório pai. O tamanho dos nomes dos arquivos depende do sistema de arquivo em uso. No ext2fs, ext3fs, ext4fs, ReiserFS, XFS e outros o limite é de 255 caracteres.

O sistema de arquivos no Linux trata os mesmos de forma case-sentive, ou seja, EU.txt e eu.txt são diferentes.

Tipos de arquivos


O Linux reúne tudo em quatro tipos básicos de arquivos:
  • Comuns – aqueles manipulados na parte do tempo, contendo texto, código fonte em C, scripts shell, arquivos binários, etc.
  • Diretórios – arquivos que contêm os nomes dos arquivos e subdiretórios, assim como os ponteiros para aqueles arquivos e subdiretórios.
  • Links – não são realmente arquivos; na verdade, são entradas de diretório que apontam para o mesmo inode .
  • Especiais – Todos os dispositivos físicos associados ao sistema Linux são representados no sistema de arquivos, e , na maioria das vezes, estão localizados no diretório /dev. Um arquivo especial de dispositivo – o bit bucket, ou /dev/null – é muito útil. Tudo o que você envia para /dev/null é ignorado, o que é útil quando você não quer ver a saída de um comando.


Comandos de arquivos


Alguns comandos de manipulação são extremamente importantes para as operações do dia a dia. Vamos conhecer os comandos principais do Linux.

O comando ls
Para manipular arquivos, é interessante saber o que eles são. Esta é a função do comando ls. O comando mostra os nomes dos arquivos em um diretório.
Exemplo: ls -t (ordena arquivos pelo horário de modificação) e ls -v (ordena pela ordem natural dos números de versão dentro do texto).


Comando ln
Cria links, simbólicos ou absolutos. Uma das opções, -d, permite ao root do sistema a criação de um link absoluto para um diretório.
Exemplo: ln -s/teste /home/leandro/teste
Este comando criará o link /home/leandro/teste.



O comando cp
O comando cp copia um arquivo.
Exemplo: cp /Bin/* . (copia todos os arquivos do diretório /Bin para o diretório em que nos encontramos no momento) e cp kiss.txt /tmp (copia o arquivo kiss.txt para dentro do diretório /tmp.



O comando mv
O comando mv (mover) é geralmente usado tanto para mover quanto para renomear os arquivos e diretórios.
Exemplo: mv kiss.txt teste1.txt (muda o nome do arquivo Kiss.txt para teste1.txt) e mv teste.txt /tmp (move o arquivo teste.txt para /tmp).



O comando rm
Para deletar um arquivo, utilize o comando rm (remover).
Exemplo: rm text.txt (apaga o arquivo teste.txt no diretório atual) e rm –rf /tmp/teste (Apaga todos os arquivos e sub-diretórios do diretório /tmp/teste, inclusive /tmp/teste).



O comando touch
O comando touch muda a data e a hora do último acesso/modificação de um arquivo.
Exemplo: touch -t 201002182233.10 -m Kiss.txt (o arquivos kiss.txt terá sua data e hora de modificação alteradas para 18/Fev/2010 às 22:33:10) e touch -t 199501010129.10 -a Kiss.txt (se o arquivo Kiss.txt não existir no diretório atual ele será criado).



Comando grep
Realiza a busca pela ocorrência de uma string no arquivo especificado.
Exemplo: grep - dialeto index.txt



Comando chmod
Modifica a permissão dos arquivos e diretórios.
Exemplo: chmod a+rx Kiss (permissão de leitura e execução para todas as classes de usuários).
Obs: o r e o x presentes no comando significam, respectivamente, leitura e execução.



A Utilidade cpio
A utilidade cpio possuem três modos de operação:
Copy-out mode: este modo, ativado pelo uso do -o ou --create, cria um arquivo e copia arquivos neles.
Copy-in mode: Ativado pelo uso do -i ou --extract, este modo extrai dados de um arquivo existente.
Copy-pass mode: ativado pelo uso do -p ou --pass-through. Combina os modos copy-out e copy-in, permitindo-lhe copiar uma árvore de diretório de um local para outro.

Além destas opções usadas para a seleção do modo, o cpio aceita muitas outras opções, tais como: -a (reseta o tempo de acesso após ler um arquivo; logo, não aparece ter sido lido) e -u (substitui todos os arquivos sem primeiramente perguntar sobre verificação).



Comando cat
O comando cat (concatenate) concatena arquivos e imprime na saída default. Em arquivos, utilizamos o cat para listar o seu conteúdo na tela.
Exemplo: cat contas_a_pagar – este comando irá listar todo o conteúdo do meu arquivo contas_a_pagar.

Obs: o comando tac realiza o mesmo que o cat, com a exceção de exibir pela ordem invertida, começando pela última linha e finalizando com a primeira.



Comando find
Caso você não consiga encontrar um arquivo procurando-o com o comando ls, poderá usar o comando find.
Exemplo: find / -name “hotter than hell”
Ao executar o comando acima, será retornado o caminho da pasta, o que nos permitirá encontrá-la facilmente.


Comandos de diretórios


A maioria dos comandos aplicados aos arquivos também são aplicáveis em diretórios. No entanto, existem outros comandos aplicáveis em diretórios muito interessantes.

Comando pwd
O comando pwd mostra o diretório corrente em que você se encontra. Como este comando não possui parâmetros, basta digitá-lo.



Comando mkdir
O comando mkdir (make directory) cria um diretório.
Exemplo: mkdir html/curso



Comando rmdir
O comando rmdir (remove directory) é o contrário do mkdir; ele destrói um diretório e subdiretórios especificados.
Exemplo: rmdir html/curso


Conclusão


Como comentei no início do artigo, é de extrema importância surfar na grande rede e buscar por mais materiais sobre comandos em arquivos e diretórios.

O Linux é um sistema que, logo de cara, na maioria das vezes, não lhe dá a mínima vontade de se dedicar. “Ah, é difícil.” “Ah, é muito chato”. São inúmeras as desculpas! Mas, posso dar uma dica: Mesmo não gostando, a princípio, estude um pouco. Conheça um pouco mais! À medida que for estudando, você vai começar a sentir um gostinho diferente de ser realmente um root. No Linux, você tem o domínio total do ambiente e pode fazer o que quiser sempre que quiser. No entanto, com esse poder vem uma grande responsabilidade: você precisa aprender a gerenciar um sistema UNIX real, o que pode ser divertido e proveitoso. Abraços e até a próxima.