1. Utilitários para Tratamento de Arquivos

Nesse contexto, tratamento de arquivos significa copiar, mover e apagar arquivos. Mais tarde veremos maneiras de mudar os atributos dos arquivos (dono, permissões).

1.1. mkdir, touch: Criando Diretórios e Arquivos Vazios

O programa mkdir (MaKe DIRectory) é utilizado para criar diretórios. Sua sintaxe é simples:

mkdir [options] <diretório> [diretório ...]

Apenas uma das opções do mkdir merece destaque: a opção -p. Ela faz duas coisas:

  1. cria os diretórios pai caso eles não existam previamente, ou seja, cria toda a estrutura de diretórios anterior ao diretório especificado, mesmo que essa não exista. Sem essa opção, o mkdir simplesmente irá falhar, dizendo que esse diretório não existe;

  2. retorna silenciosamente caso o diretório a ser criado já exista. De maneira análoga, se você não especificar a opção -p, o mkdir irá retornar uma mensagem de erro dizendo que o diretório já existe.

Alguns exemplos:

  • mkdir foo: cria o diretório foo no diretório corrente;

  • mkdir -p images/misc docs: cria o diretório misc no diretório images. Primeiro cria o diretório images se ele não existir, observe a opção -p e a seguir cria diretório misc; também cria o diretório docs no diretório corrente.

Inicialmente o comando touch não foi concebido para criar arquivos, mas para alterar as datas de acesso e modificação do arquivo[12]. Entretanto o comando touch irá criar os arquivos listados como arquivos vazios caso eles não existam. A sintaxe do comando touch é:

touch [opções] arquivo [arquivo...]

Executando o comando:

touch arquivo1 images/arquivo2

serão criados dois arquivos vazios, o arquivo1 no diretório corrente e o arquivo arquivo2 no diretório images, caso esses arquivos não existam previamente.

1.2. rm: Apagando Arquivos ou Diretórios

O comando rm (ReMove) é equivalente aos comandos del e deltree do sistema DOS, só que com mais opções. Sua sintaxe é a seguinte:

rm [opções] <arquivo|diretório> [arquivo|diretório...]

Opções:

  • -r, ou -R: apaga recursivamente. Esta opção é obrigatória para apagar um diretório, esteja ele vazio ou não. Entretanto, você pode utilizar o comando rmdir para apagar um diretório vazio.

  • -i: pede confirmação antes de apagar cada arquivo. Note que, por razões de segurança, por padrão no Mandriva Linux, o comando rm é um alias para rm -i, (da mesma maneira existem aliases para os comandos cp e mv). A utilidade desses aliases pode variar de acordo com a sua utilização. Se desejar removê-los, você pode criar um arquivo ~/.alias vazio, que irá evitar que as configurações globais do sistema sejam aplicadas à sua conta. Alternativamente você pode editar seu arquivo ~/.bashrc e desabilitar alguns dos aliases globais adicionando a seguinte linha: unalias rm cp mv

  • -f, exatamente o oposto da opção -i, a opção -f força a remoção dos arquivos ou diretórios, mesmo que o usuário não tenha acesso de escrita nos arquivos[13].

Alguns exemplos:

  • rm -i images/*.jpg arquivo1: apaga todos os arquivos cujos nomes terminem em .jpg no diretórios images e apaga o arquivo arquivo1 no diretório corrente, pedindo confirmação para apagar cada arquivo. Responda com a tecla y para confirmar a remoção, ou com a tecla n para cancelar.

  • rm -Rf images/misc/ arquivo*: apaga, sem pedir confirmação, todo o conteúdo do diretório misc/ no diretório images/, junto com todos os arquivos do diretório corrente cujos nomes começem com arquivo.

[Atenção]Atenção

Usando o comando rm a remoção dos arquivos é irreversível. Não existe nenhuma maneira de restaurá-los! (Bem, atualmente existem várias maneiras para fazer isso, mas não é uma tarefa trivial e normalmente necessita de uma preparação prévia do sistema antes da remoção do arquivo.) Não hesite em usar a opção -i para garantir que você não irá apagar nenhum arquivo por engano.

1.3. mv: Movendo ou Renomeando Arquivos

A sintaxe do comando mv (MoVe) é a seguinte:

mv [opções] <arquivo|diretório> [arquivo|diretório ...] <destino>

Observe que quando você move vários arquivos o destino deve ser um diretório. Para renomear um arquivo, você simplesmente move-o para o novo nome.

Algumas opções:

  • -f: força a operação –– nenhum aviso é dado no caso de algum arquivo existente esteja para ser sobrescrito.

  • -i: exatamente o oposto. Pergunta ao usuário, requisitando confirmação antes de sobrescrever algum arquivo.

  • -v: modo verborrágico ou extenso (verbose) indica todas as mudanças e atividades.

Alguns Exemplos:

  • mv -i /tmp/pics/*.png .: move todos os arquivos que estejam no diretório /tmp/pics/ cujos nomes terminem com .png para o diretório corrente (.), pedindo confirmação antes de sobrescrever qualquer arquivo existente.

  • mv foo bar: renomeia o arquivo arquivo foo para bar. Se bar for um diretório existente, o resultado desse comando será mover o arquivo foo ou todo o diretório (o diretório e todos os arquivos pertencentes a ele, recursivamente) para dentro do diretório bar.

  • mv -vf arquivo* images/ trash/: move, sem pedir confirmação, todos os arquivos do diretório corrente cujos nomes começem com arquivo, juntamente com o diretório images/ para o diretório trash/ e diretório, e mostre cada operação executada.

1.4. cp: Copiando Arquivos e Diretórios

O comando cp (CoPy) é equivalente aos comandos copy e xcopy do DOS, porém com mais opções. Sua sintaxe é a seguinte:

cp [opções] <arquivo|diretório> [arquivo|diretório ...] <destino>

Aqui temos as opções mais utilizadas do comando cp:

  • -R: cópia recursiva; obrigatória para a cópia de um diretório, mesmo que seja um diretório vazio.

  • -i: pede confirmação antes de sobrescrever qualquer arquivo que esteja para ser sobrescrito.

  • -f: ao contrário da opção -i, sobrescreve qualquer arquivo existente sem pedir confirmação alguma.

  • -v: modo verborrágico ou extenso, mostra todas as ações executadas pelo comando cp.

Alguns Exemplos:

  • cp -i /timages/* images/: copia todos os arquivos no diretório /timages/ para o diretório images/ localizado no diretório corrente. Pede confirmação se um arquivo estiver para ser sobrescrito.

  • cp -vR docs/ /shared/mp3s/* mystuff/: copia o diretório docs e todos os arquivos no diretório /shared/mp3s para o diretório mystuff.

  • cp foo bar: cria uma cópia do arquivo foo com o nome bar no diretório corrente.



[12] No sistema UNIX®, existem três estampas de tempo distintas para cada arquivo: a data do último acesso ao arquivo (atime), isto é, a data da última vez que o arquivo foi aberto para leitura ou escrita; a data da última modificação dos atributos do inode (ctime); e finalmente a data da última modificação do conteúdo do arquivo (mtime).

[13] É suficiente ter acesso de escrita no diretório para que o usuário possa apagar arquivos dentro dele, mesmo que não seja o proprietário dos arquivos.