Comandos para Manipulação de Arquivos | DeServ – Info
Lomadee, uma nova espcie na web. A maior plataforma de afiliados da Amrica Latina.

Comandos para Manipulação de Arquivos

By Flávio Silva

Um tutorial sobre vários dos comandos necessários para lidar com arquivos e diretórios no Linux.

Uma das coisas essenciais ao usar um sistema operacional é saber como lidar os arquivos e diretórios dentro dele. Em sistemas operacionais como o Linux, mexer com arquivos é essencialmente tudo o que você vai fazer ao configurar o sistema e seus serviços.

pwd – Exibe o diretório atual

Sintaxe: $ pwd

Mostra de forma simples em qual diretório o usuário está localizado no momento.

cd – Navegando entre diretórios

Sintaxe: $ cd [nome_do_diretório]

Muda o diretório atual.

Exemplos:

$ pwd
/usr/games
$ cd ~
$ pwd
/home/eitch

No exemplo acima, estávamos no diretório /usr/games e com um simples cd para o diretório ~, fomos para o diretório HOME (/home/eitch). Neste caso utilizamos o ~ que é uma espécie de atalho para o diretório HOME do usuário. Alguns destes “atalhos”:

. (ponto) 	       Diretório atual
.. (dois pontos)     Diretório anterior (um nível acima)
~ (til) 	       Diretório HOME do usuário
/ (barra) 	       Raiz do sistema
- (hífen) 	       Último diretório (Voltar)

Se você deseja ir para um diretório que está na raiz diretamente, usa-se a / antes, exemplo:

$ pwd
/usr/local/bin
$ cd /etc/rc.d
$ pwd
/etc/rc.d
$ cd -
$ pwd
/usr/local/bin

Ao utilizar uma barra antes do diretório, especificamos o caminho absoluto do diretório, ou seja, todo o seu caminho desde a raiz. Se não colocamos a barra para especificar a raíz, quer dizer que estamos especificando um caminho relativo, ou seja, de acordo com o diretório atual. Em outras palavras, se eu estou no diretório /home/eitch, os dois comandos a seguir farão a mesma coisa, só que um usando o caminho relativo e o outro o caminho absoluto:

$ cd ..
$ cd /home
ls – Listar arquivos
Sintaxe: $ ls [opções] [arquivo/diretório]

Lista os arquivos e diretórios. Se executarmos apenas o comando ls sozinho, ele mostrará todos os arquivos existentes no diretório atual. Há também alguns parâmetros extras:

-l 	Lista os arquivos em formato detalhado.
-a 	Lista os arquivos ocultos (que começam com um .)
-h 	Exibe o tamanho num formato legível (combine com -l)
-R 	Lista também os subdiretórios encontrados

Exemplo de uma listagem detalhada:

$ ls -l
total 9916
drwxrwxr-x   5 hugo hugo    1302 Aug 16 10:15 diretorio
-rw-r--r--   1 hugo hugo  122631 Jul 12 08:20 Database.pdf
-rw-r--r--   1 hugo hugo 2172065 Jul 12 08:20 MySQL.pdf
-rw-r--r--   1 hugo hugo 2023315 Jul 12 08:20 PHP.pdf

No exemplo acima, os arquivos e diretórios são listados com outras informações antes de seus nomes. Estas informações são separadas por um ou mais espaços (para uma melhor formatação) e apresentam os seguintes dados: tipo de arquivo e permissões, número de hard links, usuário dono, grupo dono, tamanho, data de modificação e por último o nome do arquivo.

Podemos ver acima que a segunda linha (diretorio) inicia com a letra d, o que significa que ele é um diretório, ao contrário dos outros arquivos que não contém nenhuma letra (-) e por isso são arquivos comuns. É possível identificar o tipo de arquivo desta maneira e as letras podem ser: b para arquivo especial de bloco, c para arquivo especial de caracter, d para diretório, l para link simbólico, p para um FIFO, s para socket.

Podemos também usar no ls o que chamamos de wildcards (caracteres coringa), ou seja, caracteres que substituem outros.

Exemplo, listar todos os arquivos que têm a extensão .txt:

$ ls *.txt
debian-install.txt  manualito.txt  named.txt           plip.txt  seguranca.txt
ipfw.txt            mouse.txt      placa_de_video.txt  rede.txt  sis.txt

O wildcard neste caso é o “*”, que representa “tudo”.txt. Existem outros wildcards, como por exemplo o ponto de interrogação “?”, que substitui apenas 1 caractere. Exemplo:

$ ls manual?.txt
manual1.txt  manual2.txt  manual3.txt  manualx.txt  manualP.txt

Ou ainda os colchetes, que substituem uma faixa de caracteres:

$ ls manual[3-7].txt
manual3.txt  manual4.txt  manual6.txt  manual7.txt

mkdir – Cria um diretório

Sintaxe: $ mkdir <nome_do_diretório>

Cria um diretório. Exemplo, criar um diretório dentro do HOME do usuário:

$ mkdir ~/paginas

rmdir – Remove um diretório vazio

Sintaxe: $ rmdir <nome_do_diretorio>

Apaga um diretório que esteja vazio.

Exemplo, apagando o diretório /tmp/lixo apenas se ele estiver vazio:

$ rmdir /tmp/lixo

Para apagar um diretório com seu conteúdo, usa-se o comando rm.

cp – Cópia de arquivos e diretórios

Sintaxe: $ cp [opções] <arquivo_origem> <arquivo_destino>

Copia arquivos e diretórios. Como parâmetros, temos:

-i 	Modo interativo. Pergunta se você quer sobrescrever ou não (confirmações)
-v 	Mostra o que está sendo copiado.
-R 	Copia recursivamente (diretórios e subdiretórios)

Exemplo, copiando o arquivo brasil.txt para livro.txt, com a opção de modo interativo:

$ cp -i brasil.txt livro.txt
cp: sobrescrever `livro.txt'?

Como o arquivo livro.txt já existia, o comando pergunta se quer sobrescrever, responda y (sim) ou n (não).

Copiar o diretório /home/ftp e todo seu conteúdo (incluindo seus subdiretórios) para /home/ftp2:

$ cp -R /home/ftp /home/ftp2

mv – Move arquivos e diretórios

Sintaxe: $mv <arquivo_origem> <arquivo_destino>

Move um arquivo para outro lugar. Ele também é usado para renomear um arquivo.

Exemplo, renomear o arquivo industria.txt para fabrica.txt:

$ mv industria.txt fabrica.txt

Mover o arquivo industria.txt para /home/usuario com o mesmo nome:

$ mv industria.txt /home/usuario

rm – Remove arquivos e diretórios

Sintaxe: $ rm [opções] <arquivo>

Este comando apaga definitivamente o arquivo ou diretório. Exemplo:

$ rm arquivo.bin

Para apagar um diretório com todo seu conteúdo, usa-se a opção -r:

$ rm -r /tmp/lixo

Cuidado! O comando “rm -rf” é muito perigoso, use-o com cuidado. Ele remove um diretório e todo seu conteúdo sem perguntar. Por exemplo, fazer isso na raiz não seria uma boa idéia. find – Procura arquivos

Sintaxe: $ find <diretorio> [-name nomedoarquivo]

Procura por arquivos no diretório especificado. Em seu uso mais simples, ele procura pelos nomes dos arquivos, mas pode também procurar por tipos, permissões, última modificação, entre outros.

Exemplo, procurar o arquivo nota.txt dentro do diretório /home/eitch:

$ find /home/eitch -name nota.txt -print

Procurar por todos os diretórios dentro do /etc:

$ find /etc -type d -print

Procurar por todos os arquivos que foram modificados nos últimos 2 dias:

$ find / -mtime 2 -print

Procurar por arquivos que podem ser escritos por todo mundo:

$ find / -perm -222

Os wildcards também podem ser usados, por exemplo, procurar por todos os arquivos que começam com o nome de documento e terminam com .odp:

$ find /home/eitch -name documento*.odp

ln – Cria links entre arquivos

Sintaxe: $ ln -s <arquivo_origem> [link simbólico]

Usado para gerar links simbólicos, ou seja, links que se comportam como um arquivo ou diretório, mas são apenas redirecionadores que mandam seu comando para outro arquivo ou diretório.

Exemplo: Criar um link em /tmp/apostila-linux, apontando para o diretório /apostila:

$ ln -s /apostila /tmp/apostila-linux

Também é utilizado para criar links físicos (hard-links). Um link físico funciona não como um atalho, mas como um arquivo apontando para um mesmo lugar no disco e funciona apenas em arquivos. Por depender de uma posição física no disco, só pode ser utilizado em uma mesma partição. Exemplo:

$ ln arquivo linkdoarquivo

cat – Exibe o conteúdo de um arquivo

Sintaxe: $ cat <arquivo>

Mostra o conteúdo de um arquivo, ou faz uma cópia deste arquivo, ou uma junção.

Exemplo: Mostrar o conteúdo de /home/eitch/contato:

$ cat /home/eitch/contato
Hugo Cisneiros
hugo@devin.com.br
http://www.devin.com.br

O cat também pode servir como redirecionador para outro arquivo. Os caracteres especiais de redirecionadores são utilizados para este fim.

O “>” redireciona a saída de um comando para um arquivo. Como o comando cat mostra exatamente o conteúdo de um arquivo, isso seria equivalente a fazer uma cópia do arquivo:

$ cat contato1 > contato2

O “>>” acrescenta a saída de um comando à um arquivo, mantendo seu conteúdo anterior:

$ cat contato1 >> contato3

Um outro exemplo divertido é tocar sons com o cat. Redirecionando o conteúdo de um arquivo para o dispositivo de som reproduz o som pelos alto-falantes e vice-versa. Para testar este caso, primeiro gravamos com um microfone o som:

$ cat gravacao.au < /dev/audio

O comando acima direcionou o dispositivo de som “no caso, a captura por microfone” para o arquivo gravacao.au. Agora escute o som gravado com o comando:

$ cat gravacao.au > /dev/audio

Os redirecionadores podem ser utilizados em todos os outros comandos na shell.

head, tail – Mostra o começo e fim do arquivo

Sintaxe: $ head [opções] <arquivo>
Sintaxe: $ tail [opções] <arquivo>

Talvez pelo arquivo poder ser muito grande, as vezes é necessário apenas visualizar parte dele. Em arquivos de log por exemplo, visualizar o final para ver os últimos acontecimentos é uma prática comum.

O comando head, como o nome diz (cabeçalho), mostra o começo de um arquivo. O comando tail (calda) mostra o final de um arquivo. Por padrão, ambos comandos mostram as 10 linhas correspondentes.

Por exemplo, exibindo as 10 últimas linhas do arquivo /var/log/messages:

# tail /var/log/messages

Ou as 10 primeiras linhas do /etc/profile:

$ head /etc/profile

Quando utilizado o parâmetro -n, podemos especificar a quantidade de linhas, ao invés de 10. O comando a seguir mostrará as 50 últimas linhas do arquivo /var/log/messages:

# tail -n 50 /var/log/messages

Quanto utilizado com o parâmetro -f, o comando tail mostra as linhas mas não para, continua mostrando as linhas na medida que o arquivo é atualizado. Útil para visualizar logs em constante atualização. Exemplo:

# tail -f /var/log/httpd/access_log

more, less – Visualiza arquivos por páginas

Sintaxe: $ more <arquivo>
Sintaxe: $ less <arquivo>

Parecidos com o cat, mas ao invés de jogarem todo o conteúdo na tela de uma vez só, criam uma espécie de paginação.

No comando more, a tecla ESPAÇO vai passando as páginas, até quando o fim do arquivo chega e o o comando finaliza.

No less, a paginação funciona como em uma página de manual (na verdade, a visualização das páginas de manual é feita com o less): é possível utilizar as setas para navegar no documento para cima e para baixo, utilizar as teclas PgUp e PgDown para paginar, o comando /pesquisa para pesquisar por uma palavra no documento e a tecla q para sair.

file – Indica o tipo de arquivo

Sintaxe: $ file <arquivo>

Identifica o tipo de arquivo ou diretório indicado pelo usuário conforme os padrões do sistema operacional.

Há varios tipos de retorno, exemplos: ASCII text, C Program source, directory, ELF-Executable, data, Bourn-again shell-script, JPEG Image File, entre outros.

Exemplo:

$ file linux.txt
ASCII Text

touch – Muda timestamps

Sintaxe: $ touch [opções] <arquivo>

Quando um arquivo é criado, o sistema de arquivos reserva para ele algumas informações que chamamos de timestamps: hora do último acesso e hora da última modificação. O comando touch muda estes valores.

Sem argumentos, o touch muda os dois atributos para a hora atual. Quando não existe o arquivo, o comando cria um novo arquivo vazio. Este parece ser o método preferido de criação de arquivos vazios.

Tags: , , , , , , , , , , , , , , , , , , ,

Deixe uma Resposta