Cassic

Manipulação de arquivos e diretórios

Autor: Bruno Lopes


  A primeira coisa que sempre vem em mente no uso de um sistema operacional é como lidar com os arquivos dentro dele. Nesta seção eu irei mostrar alguns comandos básicos para trabalhar com os arquivos. Segue abaixo uma tabela com os comandos que serão explicados a seguir.


Comandos para manipulação de arquivos e diretórios
pwd
Informa o nome do diretório corrente
cd
Navegando entre diretórios
ls
Listar arquivos
cp
Cópia de arquivos
mv
Move arquivos e diretórios
ln
Estabelece ligações entre arquivos
mkdir
Cria um diretório
rmdir
Remove um diretório vazio
rm
Remove arquivos e diretórios
file
Indica o tipo de arquivo

  pwd – Informa nome do diretório corrente

  Sintaxe: pwd
  Exemplo:
  debian:/# pwd
  /usr/local/bin

  cd – Navegando entre diretórios

  Sintaxe: cd [nome-do-diretório]

  Este comando mudará o diretório atual onde o usuário está. Podemos também fazer algumas simplificações no nome-do-diretório no Linux para facilitar.

  As simplificações citadas são:


Abreviação
Significado
. (ponto)
Diretório atual
.. (dois pontos)
Diretório anterior
~ (til)
Diretório home do usuário
/ (barra)
Diretório Raiz
- (hifem)
Ultimo diretório

  Exemplo:
  debian:/# cd /usr/src #vai para o diretório /usr/bin
  debian:/# cd ~ #vai para o diretório do usuario
  debian:/# cd - #volta para o diretorio /usr/Bin

  ls – Lista arquivos

  Sintaxe: ls [opções] [arquivo/diretório]

  Este comando serve para listar os arquivos do diretório especificado. O diretório corrente é o default, isto é, se o comando for executado sem argumentos, mostrará todos os arquivos existentes no diretório atual. Veja algumas opções:


Opções
Significados
-l
Lista os arquivos em formato detalhado
-a
Lista todos os arquivos, inclusive os começados por ponto (arquivos ocultos)
-r
Na ordem alfabética reversa
-h
Combinado com –l imprime o tamanho de forma mais legível (por exemplo 1K, 234M, 2G, etc.)
-R
Lista também os subdiretórios encontrados

  Exemplos:
  debian:/usr# ls
  bin games include lib local sbin share src

  debian:/usr# ls -l
  total 23
  drwxr-xr-x  2 root root  12432 2009-11-21 22:24 bin
  drwxr-xr-x  2 root root  72 2009-11-21 10:58 games
  drwxr-xr-x  4 root root    160 2009-11-21 19:58 include
  drwxr-xr-x 36 root root   5888 2009-11-21 22:24 lib
  drwxrwsr-x 10 root staff   264 2009-11-21 10:57 local
  drwxr-xr-x  2 root root   4320 2009-11-21 22:24 sbin
  drwxr-xr-x 73 root root   1936 2009-11-21 19:58 share
  drwxrwsr-x  2 root src   48 2009-06-15 05:28 src

  debian:/usr# ls -lh
  total 23K
  drwxr-xr-x  2 root root   13K 2009-11-21 22:24 bin
  drwxr-xr-x  2 root root    72 2009-11-21 10:58 games
  drwxr-xr-x  4 root root   160 2009-11-21 19:58 include
  drwxr-xr-x 36 root root  5.8K 2009-11-21 22:24 lib
  drwxrwsr-x 10 root staff  264 2009-11-21 10:57 local
  drwxr-xr-x  2 root root  4.3K 2009-11-21 22:24 sbin
  drwxr-xr-x 73 root root  1.9K 2009-11-21 19:58 share
  drwxrwsr-x  2 root src  48 2009-06-15 05:28 src

  cp – Cópia de arquivos

  Sintaxe: cp [opções] <arq-origem> <arq-destino>

  O comando cp copia arquivos e diretórios. como opções dele, podemos ver:


Opções
Significado
-i
Modo interativo
-v
Mostra o que está copiando
-r
Copia recursivamente (diretórios e subdiretórios)

  Exemplos:
  debian:/# cp arq01 /root #copia o arquivo arq01 para o diretório root

  debian:/# cp arq01 /root –i #copia o arquivo arq01 no modo interativo
  cp: overwrite `/root/arq01'? y

  mv – Move arquivos e diretórios

  Sintaxe: mv [opções] <arq-origem> <arq-destino>

  Este comando normalmente é usado para renomear arquivos, mas nos exemplos a seguir, veremos que ele também, por vezes, copia o arquivo <arq-origem> para <arq-destino> e em seguida apaga <arq-origem>. Suas opções e exemplos são semelhantes ao do comando cp.

  Para renomear um arquivo usando o mv basta fazer como abaixo:
  debian:~# ls #Lista os arquivos do diretório corrente arq01
  debian:~# mv arq01 arq55 #Usando o mv para renomear o arquivo
  debian:~# ls #Listando novamente os arquivos do diretório corrente arq55

  ln – Estabelece ligações entre arquivos

  Sintaxe: ln [-s] <arq-origem> <ligação>

  Este comando é usado para criar ligações (links). Existem dois tipos de ligações:
    - Hard Link: Neste caso, o arquivo ligação, tem o mesmo inode do arq-origem, ou seja, os dois compartilham dados.
    - Symbolic Link: Neste caso, o arquivo ligação tem inode diferente do arq-origem, e seu conteúdo é somente o caminho do arq-origem.

  Exemplos:

  Suponha que temos um arquivo com a folha de paramento de uma empresa chamado folha, e este arquivo pertence ao grupo folha que tem todos os direitos sobre ele. Se quiséssemos que o pessoal da contabilidade tivesse acesso somente leitura a este arquivo, criaria um hard link e alteraria a permissão do grupo veja como estabeleço o link:
  debian:~# ls -li
  total 0
  954 -rw-r--r-- 1 root root 0 2009-11-21 23:18 folha
  debian:~# ln folha folha_contabilidade
  debian:~# ls -li
  total 0
  954 -rw-r--r-- 2 root root 0 2009-11-21 23:18 folha
  954 -rw-r--r-- 2 root root 0 2009-11-21 23:18 folha_contabilidade

  O arquivo folha já existia e liguei ao arquivo folha_contabilidade por meio do comando ln. Note que na saída do comando ls –li o inode dos arquivos são iguais (954 no meu caso), o que significa que o mesmo arquivo tem agora dois.

  Para diferenciar vamos repetir a mesma operação, porem criando um link simbólico usando a opção –s:
  debian:~# ls -li
  total 0
  954 -rw-r--r-- 1 root root 0 2009-11-21 23:18 folha
  debian:~# ln -s folha folha_contabilidade
  debian:~# ls -li
  total 0
  954 -rw-r--r-- 1 root root 0 2009-11-21 23:18 folha
  197 lrwxrwxrwx 1 root root 5 2009-11-21 23:35 folha_contabilidade -> folha

  Note que agora os inodes são diferentes, o arquivo folha continua com seu inode original (954) ao passo que folha_contabilidade passou para 197 e que no final da linha do arquivo folha_contabilidade tem uma seta apontando para folha. Um fato interessante é que o arquivo folha_contabilidade tem apenas 5 bytes de tamanho, isso porque ele armazena o caminho do arquivo de ligação que no caso é folha. Como os dois estão no mesmo diretório ele armazena o caminho relativo.

  mkdir – Cria um Diretório

  Sintaxe: mkdir <nome-do-diretório>

  Deve-se observar que este comando usa todas as simplificações do comando cd.

  Exemplo:
  debian:~# mkdir folha

  rmdir – Remove Diretórios Vazios

  Sintaxe: rmdir <nome-do-diretorio>

  Remove um diretório somente se ele estiver vazio. Este comando assim como o mkdir usa convenções de endereçamento assim como o comando cd.

  Exemplo:
  debian:~# rmdir folha

  rm – Remove Arquivos e Diretórios

  Sintaxe: rm [opções] <arquivo/diretório>


Opções
Significados
-f
Ignora arquivos inexistentes e não pede confirmação antes de remover
-r
Remove o(s) diretório(s) especificado(s) e seu(s) conteúdo(s), recursivamente.
-I
Sempre pede confirmação antes de remover

  Este comando apaga arquivos ou diretórios.

  Exemplo:
  debian:~# rm folha #apaga o arquivo folha
  debian:~# rmdir –rf dir_folha #apaga o diretório folha sem confirmação de exclusão

  file – Indicando o Tipo de um Arquivo

  Sintaxe: file <arquivo>

  Este comando retorna o tipo do arquivo arquivo conforme determinados padrões do sistema operacional.

  Exemplos:
  debian:~# file folha
  folha: ASCII text