Você está na página 1de 7

Um tutorial sobre vrios dos comandos necessrios para lidar com arquivos e diretrios no Linux.

Uma das coisas essenciais ao usar um sistema operacional saber como lidar os arquivos e diretrios dentro dele. Em sistemas operacionais como o Linux, mexer com arquivos essencialmente tudo o que voc vai fazer ao configurar o sistema e seus servios.

pwd Exibe o diretrio atual


Sintaxe: $ pwd

Mostra de forma simples em qual diretrio o usurio est localizado no momento.

cd Navegando entre diretrios


Sintaxe: $ cd [nome_do_diretrio]

Muda o diretrio atual. Exemplos:


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

No exemplo acima, estvamos no diretrio /usr/games e com um simples cd para o diretrio ~, fomos para o diretrio HOME (/home/eitch). Neste caso utilizamos o ~ que uma espcie de atalho para o diretrio HOME do usurio. Alguns destes atalhos:

. (ponto) .. (dois pontos) ~ (til) / (barra) - (hfen)

Diretrio atual Diretrio anterior (um nvel acima) Diretrio HOME do usurio Raiz do sistema ltimo diretrio (Voltar)

Se voc deseja ir para um diretrio 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 diretrio, especificamos o caminho absoluto do diretrio, ou seja, todo o seu caminho desde a raiz. Se no colocamos a barra para especificar a raz, quer dizer que estamos

especificando um caminho relativo, ou seja, de acordo com o diretrio atual. Em outras palavras, se eu estou no diretrio /home/eitch, os dois comandos a seguir faro a mesma coisa, s que um usando o caminho relativo e o outro o caminho absoluto:
$ cd .. $ cd /home

ls Listar arquivos
Sintaxe: $ ls [opes] [arquivo/diretrio]

Lista os arquivos e diretrios. Se executarmos apenas o comando ls sozinho, ele mostrar todos os arquivos existentes no diretrio atual. H tambm alguns parmetros extras:

-l -a -h -R

Lista os arquivos em formato detalhado. Lista os arquivos ocultos (que comeam com um .) Exibe o tamanho num formato legvel (combine com -l) Lista tambm os subdiretrios 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 diretrios so listados com outras informaes antes de seus nomes. Estas informaes so separadas por um ou mais espaos (para uma melhor formatao) e apresentam os seguintes dados: tipo de arquivo e permisses, nmero de hard links, usurio dono, grupo dono, tamanho, data de modificao 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 diretrio, ao contrrio dos outros arquivos que no contm nenhuma letra (-) e por isso so arquivos comuns. possvel 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 diretrio, l para link simblico, p para um FIFO, s para socket. Podemos tambm usar no ls o que chamamos de wildcards (caracteres coringa), ou seja, caracteres que substituem outros. Exemplo, listar todos os arquivos que tm a extenso .txt:
$ ls *.txt debian-install.txt manualito.txt named.txt ipfw.txt mouse.txt plip.txt seguranca.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 interrogao ?, 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 diretrio


Sintaxe: $ mkdir <nome_do_diretrio>

Cria um diretrio. Exemplo, criar um diretrio dentro do HOME do usurio:


$ mkdir ~/paginas

rmdir Remove um diretrio vazio


Sintaxe: $ rmdir <nome_do_diretorio>

Apaga um diretrio que esteja vazio. Exemplo, apagando o diretrio /tmp/lixo apenas se ele estiver vazio:
$ rmdir /tmp/lixo

Para apagar um diretrio com seu contedo, usa-se o comando rm.

cp Cpia de arquivos e diretrios


Sintaxe: $ cp [opes] <arquivo_origem> <arquivo_destino>

Copia arquivos e diretrios. Como parmetros, temos:

-i Modo interativo. Pergunta se voc quer sobrescrever ou no (confirmaes) -v Mostra o que est sendo copiado. -R Copia recursivamente (diretrios e subdiretrios)
Exemplo, copiando o arquivo brasil.txt para livro.txt, com a opo 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 (no). Copiar o diretrio /home/ftp e todo seu contedo (incluindo seus subdiretrios) para /home/ftp2:
$ cp -R /home/ftp /home/ftp2

mv Move arquivos e diretrios


Sintaxe: $mv <arquivo_origem> <arquivo_destino>

Move um arquivo para outro lugar. Ele tambm 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 diretrios


Sintaxe: $ rm [opes] <arquivo>

Este comando apaga definitivamente o arquivo ou diretrio. Exemplo:


$ rm arquivo.bin

Para apagar um diretrio com todo seu contedo, usa-se a opo -r:
$ rm -r /tmp/lixo

Cuidado! O comando rm -rf muito perigoso, use-o com cuidado. Ele remove um diretrio e todo seu contedo sem perguntar. Por exemplo, fazer isso na raiz no seria uma boa idia.

find Procura arquivos


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

Procura por arquivos no diretrio especificado. Em seu uso mais simples, ele procura pelos nomes dos arquivos, mas pode tambm procurar por tipos, permisses, ltima modificao, entre outros. Exemplo, procurar o arquivo nota.txt dentro do diretrio /home/eitch:
$ find /home/eitch -name nota.txt -print

Procurar por todos os diretrios 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 tambm podem ser usados, por exemplo, procurar por todos os arquivos que comeam com o nome de documento e terminam com .odp:
$ find /home/eitch -name documento*.odp

O find tambm conta com uma opo muito til, a opo -exec. Atravs desta opo voc pode executar comandos para cada um dos arquivos encontrados. Combinando com as outras opes, se torna um poderoso utilitrio! Por exemplo, para definir permisses 755 para todos os diretrios:
$ find /home/eitch -type d -exec chmod 755 {} \;

Neste exemplo, para cada diretrio encontrado (-type d) dentro do /home/eitch, foi executado o comando chmod 755 <arquivo encontrado>. O {} no comando substitudo por cada arquivo ou diretrio encontrado. O \; apenas o terminador para o comando do -exec. O mesmo exemplo, agora para definir permisses 644 para arquivos:
$ find /home/eitch -type f -exec chmod 644 {} \;

Ou ento, eu quero remover todos os arquivos que terminam com a extenso .exe:
$ find /home/eitch -type f -name *.exe -exec rm -f {} \;

Ou at remover os diretrios que tem .svn como nome:


$ find /home/eitch/projeto -type d -name .svn -exec rm -rf {} \;

ln Cria links entre arquivos


Sintaxe: $ ln -s <arquivo_origem> [link simblico]

Usado para gerar links simblicos, ou seja, links que se comportam como um arquivo ou diretrio, mas so apenas redirecionadores que mandam seu comando para outro arquivo ou diretrio. Exemplo: Criar um link em /tmp/apostila-linux, apontando para o diretrio /apostila:
$ ln -s /apostila /tmp/apostila-linux

Tambm utilizado para criar links fsicos (hard-links). Um link fsico funciona no como um atalho, mas como um arquivo apontando para um mesmo lugar no disco e funciona apenas em arquivos. Por depender de uma posio fsica no disco, s pode ser utilizado em uma mesma partio. Exemplo:
$ ln arquivo linkdoarquivo

cat Exibe o contedo de um arquivo


Sintaxe: $ cat <arquivo>

Mostra o contedo de um arquivo, ou faz uma cpia deste arquivo, ou uma juno. Exemplo: Mostrar o contedo de /home/eitch/contato:
$ cat /home/eitch/contato

Hugo Cisneiros hugo@devin.com.br

http://www.devin.com.br

O cat tambm pode servir como redirecionador para outro arquivo. Os caracteres especiais de redirecionadores so utilizados para este fim. O > redireciona a sada de um comando para um arquivo. Como o comando cat mostra exatamente o contedo de um arquivo, isso seria equivalente a fazer uma cpia do arquivo:
$ cat contato1 > contato2

O >> acrescenta a sada de um comando um arquivo, mantendo seu contedo anterior:


$ cat contato1 >> contato3

Um outro exemplo divertido tocar sons com o cat. Redirecionando o contedo 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 comeo e fim do arquivo


Sintaxe: $ head [opes] <arquivo> Sintaxe: $ tail [opes] <arquivo>

Talvez pelo arquivo poder ser muito grande, as vezes necessrio apenas visualizar parte dele. Em arquivos de log por exemplo, visualizar o final para ver os ltimos acontecimentos uma prtica comum. O comando head, como o nome diz (cabealho), mostra o comeo de um arquivo. O comando tail (calda) mostra o final de um arquivo. Por padro, 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 parmetro -n, podemos especificar a quantidade de linhas, ao invs 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 parmetro -f, o comando tail mostra as linhas mas no para, continua mostrando as linhas na medida que o arquivo atualizado. til para visualizar logs em constante atualizao. Exemplo:
# tail -f /var/log/httpd/access_log

more, less Visualiza arquivos por pginas


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

Parecidos com o cat, mas ao invs de jogarem todo o contedo na tela de uma vez s, criam uma espcie de paginao. No comando more, a tecla ESPAO vai passando as pginas, at quando o fim do arquivo chega e o o comando finaliza. No less, a paginao funciona como em uma pgina de manual (na verdade, a visualizao das pginas de manual feita com o less): possvel 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 diretrio indicado pelo usurio conforme os padres 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 [opes] <arquivo>

Quando um arquivo criado, o sistema de arquivos reserva para ele algumas informaes que chamamos de timestamps: hora do ltimo acesso e hora da ltima modificao. O comando touch muda estes valores. Sem argumentos, o touch muda os dois atributos para a hora atual. Quando no existe o arquivo, o comando cria um novo arquivo vazio. Este parece ser o mtodo preferido de criao de arquivos vazios.