Nesse contexto, tratamento de arquivos significa copiar, mover e apagar arquivos. Mais tarde veremos maneiras de mudar os atributos dos arquivos (dono, permissões).
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:
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;
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.
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...]
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.
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...]
-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].
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
.
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.
-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.
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.
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.
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.