Neste tópico veremos comandos básicos para gerenciar arquivos e diretórios. Veremos como copiar, mover, renomear arquivos e diretórios individualmente e recursivamente, deletar arquivos e diretórios, compactar e descompactar arquivos e localizar arquivos.
Peso 4
Antes de começarmos a gerenciar arquivos e diretórios, temos que saber que podemos acessar esses arquivos através do seu caminho absoluto ou pelo seus caminho relativo.
Caminho absoluto - é o caminho que é usado por completo. Quando usamos o barra (/- raiz) para indicarmos um caminho, estamos usando seu caminho absoluto. Por exemplo, se você quer editar o arquivo hosts.conf que fica dentro do diretório /etc/, digitamos vim /etc/host.conf. Ou para acessarmos o diretório do banco de dados da biblioteca compartilhada, cd /usr/lib/.
Caminho relativo - é aquele que é usado quando já estamos dentro do diretório corrente. Vamos supor que você já está dentro do diretório /etc/ e deseja editar/visualizar o arquivo hostname, basta digitar vim hostname (cat hostname para visualizar o conteúdo).
Podemos usar também o ponto (.), que indica o diretório atual. Exemplo: você está dentro do seu diretório pessoal, /home/usuario/, e quer copiar o arquivo .bashrc que está dentro do diretório /etc/skel/, basta usarmos o comando cp /etc/skel/.bashrc . que o arquivo será copiado para o seu diretório atual.
O uso de dois pontos (..) indica o diretório superior ao atual. Exemplo: estamos dentro do diretório /home/usuario/ e queremos ir para o /home/, usamos o comando:
cd ../
COPIAR, MOVER, RENOMEAR, DELETAR
Para copiar arquivos e diretórios usamos o comando cp.
Sintaxe:
cp [opções] arquivo destino
cp /etc/passwd /home/usuario/passwd.bkp - copia o arquivo passwd para o diretório /home/usuario/ com o nome de passwd.bkp.
Opções mais usadas:
-i - pergunta antes de sobrescrever um arquivo
-p - copia os atributos do arquivo original
-r - copia recursivamente o conteúdo do diretório de origem
Mover diretórios e arquivos (MV)
Usamos o comando mv.
Sintaxe:
mv [opções] arquivo destino
Opções mais usadas:
-i - pergunta antes de sobrescrever um arquivo
-n - não substitui arquivos já existentes
Exemplo:
mv -i /etc/host.conf /home/ - copia o arquivo host.conf para o diretório home e, se existir algum arquivo com esse nome, ele vai perguntar se deseja substituir.
Renomear (MV)
O comando mv pode ser usado para renomear arquivos também. Por exemplo:
mv /etc/apt/sources.list /etc/apt/sources.list.bkp - renomeia o arquivo sources.list para sources.list.bkp
Deletar (RM e RMDIR)
Para deletarmos arquivos e diretórios, usamos o comando rm.
Sintaxe:
rm [opções] arquivo
-r - remove recursivamente arquivos e diretórios
-f - remove sem pedir confirmação
Exemplo:
rm arquivo - apaga o arquivo.txt
rm -f /teste/arquivo.txt - apaga o arquivo arquivo.txt sem confirmação
rm -rf /* - NUNCA FAÇA ISSO!
rm -r /home/usuario/Downloads/*.txt - remove todos os arquivos com a extensão .txt.
rm /home/usuario/Imagens/img* - remove todos os arquivos que começam com img.
PS: veremos mais a frente o uso dos caracteres curinga.
Os comandos rm e rmdir só removem diretórios se os mesmos estiverem vazios. Para remover diretórios que contem arquivos utiliza-se a opção -r.
RMDIR - o rmdir remove diretórios SOMENTE se estiverem vazios. Igual ao comando rm -p.
MKDIR e TOUCH
Para criar pastas, usamos o comando mkdir.
Sintaxe:
mkdir [opções] pasta
-p - cria pastas recursivamente
-m - cria pasta determinando a permissão
Exemplo:
mkdir -p /home/usuario/Documentos/Trabalho/ - foram criadas recursivamente as pastas Documentos e dentro dela, a pasta Trabalho.
mkdir -m 644 teste - foi criada a pasta teste, determinando as permissões dos arquivos.
TOUCH
É usado para criar arquivos e/ou alterar a data e hora de acesso e modificação dos arquivos.
Sintaxe:
touch [opções] arquivo
Opções mais utilizadas:
-t - usa o timestamp no seguinte formato: YYYYMMDDHHMM.SS. Altera hora e data de acesso e modificação.
-m - altera somente a hora de modificação. Se usado sem especificar a data, será usado a data e hora atual.
-a - muda somente a hora de acesso. Se usado sem especificar a data, será usado a data e hora atual.
PS: Muito importante entender o timestamp dos arquivos. Em um arquivo nós temos a data e hora em que ele foi acessado; temos a data e hora em que ele foi modificado; e temos também as permissões, se foram alteradas ou não.
Para sabermos o timestamp dos arquivos digitamos o comando stat. A saída será algo assim:
Repare nas informações Access, Modify e Change. Esses são os timestamp.
Exemplos:
touch -a codigo.txt - define a data e hora de acesso para a data e hora atual.
touch -t 200807151230.10 -m codigo.txt - define a data e hora de MODIFICAÇÃO para 15 de Julho de 2008, as 12:30 e 10 segundos.
touch -t 201010101010.10 -a codigo.txt - define a data e hora de ACESSO para 10 de Outubro, as 10:10 e 10 segundos.
FILE
Informa qual o tipo de conteúdo está contido no arquivo.
file arquivo
arquivo: ASCII text
LS
Lista arquivos contidos nos diretórios e exibe detalhes dos arquivos e diretórios.
Sintaxe:
ls [opções] diretório/arquivo
Opções mais comuns:
-l - formato de lista longa com várias informações
-a - exibe arquivos ocultos
-h - exibe o tamanho dos arquivos em formato mais simples para humanos
-i - exibe o índice de cada arquivo - inode
-s - mostra o tamanho alocado para cada arquivo em bloco
Exemplo de um ls -ilhas /etc/
1ª coluna - mostra o inode do arquivo/diretório
2º coluna - tamanho alocado para cada arquivo em bloco. Por causa da opção -h, mostra o tamanho de forma mais compreensível
3º coluna - mostra as permissões
4º coluna - número de harlinks para o arquivo
5º coluna - mostra o dono do diretório/arquivo
6º coluna - mostra o grupo do diretório/arquivo
7º coluna - tamanho dos arquivos
8º e 9º coluna - data e hora da última modificação feita no arquivo
10º coluna - mostra o nome do arquivo. Se for um link simbólico, mostrará uma seta para o qual esse arquivo aponta.
TAR
Juntam (aglutinam) arquivos e diretórios em um só arquivo e depois podem extrair esses mesmos arquivos.
Sintaxe: tar [opções] nome_do_arquivo arquivos_para_serem_compactados
Opções:
-c - cria o arquivo
-f - indica o caminho e nome do arquivo a ser criado
-v - mostra os arquivos a serem incluídos
- t - lista o conteúdo do arquivo aglutinado
-z - compacta utilizando o comando gzip
-j - compacta utilizando o comando bzip2
-x - extrai/descompacta
Exemplo:
Juntar os arquivos filme.mkv, audio.mp3, texto.pdf em um único arquivo
tar -cvf /home/usuario/compactar.tar filme.mkv audio.mp3 texto.pdf
Arquivo compactar.tar criado dentro do diretório /home/usuario/.
PS: Apesar de juntar vários arquivos em um só, eles não estão compactados.
GUNZIP e GZIP
Para compactar os arquivos, utilizamos o gzip. Para descompactarmos, o gunzip. Com esse comando, o arquivo a ser salvo terá a extensão .gz.
Exemplo:
gzip compactar.tar - compacta o arquivo compactar.tar
gunzip compactar.tar.gz - descompacta o arquivo .gz
BZIP2 e BUNZIP2
Realiza a mesma coisa do gzip. A diferença fica por conta do tipo de compressão: o gzip é mais rápido para compactar, enquanto o bzip2 oferece uma compressão melhor. A extensão a ser salva com esse programa será .bz2.
Exemplo:
bzip2 compactar.tar - compacta o arquivo compactar.tar
bunzip2 compactar.tar.bz2 - descompacta o arquivo compactar.tar.bz2
Para simplificar ainda mais, podemos passar os argumentos para o comando tar, para que este, realize a compressão com os compactadores listados acima. Basta que informemos a letra z se quisermos compactar utilizando a compressão do gzip e a letra j para o método de compressão do bzip2.
Exemplo:
Usando o gzip com o tar
tar zcvf compactar.tar.gz compactar.tar - cria o arquivo arquivo compactar.tar.gz
tar xvf compactar.tar.gz - descompacta o arquivo
Usando o bzip2 com o tar
tar cvjf compactar.tar.bz2 compactar.tar - cria o arquivo compactar.tar.bz2
tar xvjf compactar.tar.bz2 - descompacta o arquivo
CPIO (Copy in, Copy out)
Cria, extrai e copia arquivos. Parecido com o tar, ele não compacta arquivos. Apenas junta os mesmos em um único arquivo.
Sintaxe:
cpio -o [opções] > arquivo - criar
cpio -i < arquivo - extrair
cpio -p destino < arquivo - copiar
Exemplos:
ls *.txt | cpio -ov > bkp.cpio - cria o arquivo bkp.cpio com todos os arquivos .txt dentro do diretório
cpio -t < bkp.cpio - lista os arquivos contidos em bkp.cpio
cpio -i < bkp.cpio - extrai todos os arquivos contidos dentro do arquivo bkp.cpio
find . -depth | cpio -pmdv /home/usuario/CPIO - copia toda a estrutura de diretórios e arquivos do diretório atual para a pasta /home/usuario/CPIO (Se a pasta não existir, ele será criada)
Outras opções:
-d - cria diretórios quando necessário
-v - modo verbose. Mostra os arquivos sendo adicionados/extraídos/copiados
-m - preserva a hora de modificação dos arquivos
DD
O comando dd serve para realizar cópias byte a byte. Podemos realizar backups, clonar partições e até copiar arquivos.
Sintaxe:
dd [entrada] [saída] [bloco] opções
PS: Bloco é uma unidade que mede o número de bytes lidos, convertidos ou escritos de uma vez. O tamanho padrão de um bloco em sistemas Unix é 512 bytes.
Exemplo:
dd if=dev/sr0 of=/home/usuario/bkp bs=512 conv=noerror
if - input file - lê a partir do arquivo de entrada padrão
of - output file - saída para o arquivo (destino da cópia)
bs - quando se quer ler e gravar a mesma quantidade de bytes
Outras opções:
ibs=n - lê n bytes por vez
obs=n - grava n bytes por vez
conv=lista - realiza as conversões em uma lista
count=n - número de contagens que irá ser copiado. Por exemplo, se tiver count=3, quer dizer que ele vai gravar os 3 primeiros blocos especificados em bs, ou seja, se colocarmos bs=512 count=3, os 3 primeiros 512 bytes serão copiados.
Opções de lista:
Quando usamos a opção conv, podemos definir algumas sub-opções:
noerror - não para de copiar mesmo que ocorram erros
notrunc - não trunca o arquivo de saída
sync - padding em blocos parciais de entrada com nulos (insere nulos no meio fluxos se qualquer leitura não receber blocos completos de dados - especificados pela flag ibs)
FILE GLOBBING (Caracteres Curinga)
Quando realizamos operações com arquivos e diretórios, podemos usar alguns caracteres que tem funções especificas que nos ajudam na hora de fazermos uma filtragem mais precisa. São eles:
* - substituem qualquer sequência de caracteres
? - substitui apenas um caractere
{} - indicam um lista de termos separados por vírgula
[] - indica uma lista de caracteres
! - é usado quando se quer excluir o item pesquisado da busca
\ - não realizam substituição
Alguns exemplos:
ls /dev/sd/dev[2-6] - mostra os dispositivos sda em /dev/ de 2 até o 6
ls /dev/sda* - mostra todos os dispositivos sda's
ls /dev/{sda*,tty*} - mostra todos os dispositivos sda's e tty's.
FIND
Principal comando de localização de arquivos e diretórios.
Sintaxe:
find diretório critério opções
Critérios mais comuns:
-type - tipo do arquivo (d para diretório, f para arquivo, l para link)
-name - nome do arquivo
-iname - não faz diferenciação de minusculas e maiúsculas
-user - dono do arquivo
-atime -n ou +n - arquivo acessado antes ou depois de n (n = 24 horas)
-ctime -n ou +n - arquivo criado antes ou depois de n
-amin -n ou +n - arquivo acessado antes ou depois de n (neste caso, n = quantidade de minutos)
-cmin -n ou +n - arquivo criado antes ou depois de n
-perm modo - arquivo procurado tem permissão especificada igual a modo (r, w, x)
-perm -modo - arquivo procurado tem todas as permissões listadas em modo
-perm +modo - arquivo tem quaisquer permissões listadas em modo.
Exemplos:
find /home/usuario -name "*.jpg" - lista todas os arquivos com a extensão .jpg
find /home/usuario -atime -3 - lista os arquivos acessados nos últimos 3 minutos
find /home -user pablo - lista todos os arquivos que o pablo é dono
find . -perm g=r -type f -exec ls -l {} \; - procura arquivos com apenas permissão de leitura para o grupo
XZ
Ferramenta para compressão de dados, parecido com o gzip e bzip2.
Podemos usar tar para compactar arquivos diretamente usando o xz. Para isso, basta colocarmos a opção
-J no comando.
Exemplo:
tar -Jcvf arquivo.tar.xz *.mkv - compacta todos os arquivos .mkv
tar -xvJf arquivo.tar.xz - descompacta todos os arquivos.


Comentários
Postar um comentário