====== UNIX: Comandos em arquivos ======
===== Comandos básicos =====
Os comandos a seguir implementam operações básicas em arquivos:
* ''ls'' : listar o conteúdo do diretório corrente (ou de um diretório dado).
* ''rm'' : remover arquivos.
* ''mv'' : movimentar arquivos.
* ''cp'' : copiar arquivos.
* ''cat'' : apresentar o conteúdo de arquivos.
* ''more'' : visualizar o conteúdo de arquivos (paginado).
* ''ln'' : criar links (atalhos).
Os comandos usados para navegação na árvore de diretórios são similares aos usados em outros sistemas operacionais:
* ''pwd'' : indica qual o diretório corrente do shell.
* ''cd'' : troca de diretório:
* ''cd dir'' : muda para o diretório ''dir''
* ''cd ..'' : muda para o diretório pai imediatamente superior.
* ''cd -'' : volta para o último diretório visitado.
* ''cd ~user'' : vai para o diretório HOME do usuário indicado.
* ''cd'' : volta ao diretório HOME.
* ''mkdir dir'' : criação do diretório ''dir''.
* ''rmdir dir'' : remoção do diretório ''dir''.
===== Informações em arquivos =====
Vários comandos permitem obter maiores informações sobre arquivos e sistemas de arquivos. Eis os principais:
* ''stat'' : detalhes sobre um arquivo ou diretório (//i-nodes//).
* ''file'' : identificar o conteúdo de um arquivo, analisando-o.
* ''whereis'' : indica onde estão os binários, fontes e páginas de manual de um comando dado.
* ''touch'' : atualiza a data de um arquivo (o cria, se não existir).
* ''which'' : indica o caminho completo para o comando dado.
* ''du'' : indica o espaço usado em disco pelos arquivos ou diretórios dados.
* ''df'' : informações sobre os sistemas de arquivos disponíveis na máquina e sua ocupação.
* ''tree'' : apresenta na tela uma estrutura de diretórios, com ou sem os arquivos.
===== Compressão de arquivos =====
Tradicionalmente, a compressão de arquivos em UNIX é feita em dois passos:
- Aglutinação dos arquivos e diretórios em um único grande arquivo, usando o comando ''tar''.
- Compressão do arquivo único, usando comandos como ''compress'', ''gzip'' ou ''bzip2''.
O comando ''tar'' é bastante antigo, e significa //Tape ARchiving// (//tar// também é "piche" em inglês, o que sugere o processo de aglutinação). Ele era muito usado para copiar diretórios em fitas magnéticas. Com as opções adequadas, permite guardar diversos arquivos e diretórios em um único arquivo. Sua sintaxe básica é:
* Para criar um arquivo ''.tar'': ''tar cvf arq.tar dir1 dir2 dir3 ...''
* Para abrir um arquivo ''.tar'': ''tar xvf arq.tar''
* Para listar o conteúdo de um arquivo ''.tar'': ''tar tvf arq.tar''
As principais opções do comando tar são:
* ''c'' : criar um novo arquivo ''.tar'' com o nome indicado
* ''x'' : extrair dados do arquivo ''.tar'' indicado
* ''t'' : listar o conteúdo do arquivo ".tar"indicado
* ''v'' : //verbose//, mostra detalhes na tela sobre o que está sendo feito
* ''f'' : indica que o próximo parâmetro é o nome do arquivo ''.tar'' a ser usado. Caso não seja indicado, é usado o conteúdo da variável ''$TAPE'', ou o arquivo ''/dev/rst0'' (fita magnética).
* ''z'' : para comprimir/expandir os arquivos tratados usando o comando ''gzip'' (ver abaixo).
* ''Z'' : para comprimir/expandir os arquivos tratados usando o comando ''compress'' (ver abaixo).
Após feita a aglutinação, pode-se **compactar** o arquivo usando-se um dos comando abaixo:
* **"compress"** : compactador standard do UNIX, hoje em dia pouco usado, mas presente em todas as plataformas. Gera arquivos com extensão ".Z".
* **"gzip"** : GNU-Zip, um compactador extremamente popular, é muito eficiente. Gera arquivos com extensão ".gz".
* **"bz2"** : De uso recente e ainda pouco difundido, certamente será muito usado nos próximos anos, por ser ainda mais eficiente que o gzip. Gera arquivos com extensão ".bz2".
Um procedimento muito usado é o uso combinado dos comandos **tar** e **gzip**, através das opções "z" e "Z" do comando **tar**. Assim, para obter um arquivo comprimido ''corrente.tar.gz'' com todo o conteúdo do diretório corrente, basta executar o seguinte comando:
> ''tar czvf corrente.tar.gz .'' // (atenção ao ".", que indica o diretório corrente) //
Os arquivos ".tar.gz" também costumam ser nomeado como ".tgz", e definem o formato da maior parte dos arquivos UNIX encontrados na Internet. Arquivos nesse formato também podem ser abertos pelas versões recentes do compactador //WinZip//, do Windows.
===== Exercícios =====
- Como procurar por uma palavra no manual (''man'')?
- Liste todos os arquivos do seu diretório ''HOME''.
- Como você pode saber em qual diretório você está no sistema?
- Qual o comando para saber qual a conta que está sendo usada em um SHELL?
- Liste o nome do grupo de usuários ao qual sua conta pertence.
- Visite alguns diretórios, alternando os comandos ''pwd'' e ''cd''. Os diretórios são os seguintes:
/home/espinf
o predecessor do diretório /home/espinf
/
/usr
/tmp
/usr/bin
seu diretório HOME
- Liste o conteúdo dos diretórios acima, ordenados por data, de duas formas:
- sem sair do seu diretório HOME
- acessando primeiramente o diretório a ser listado
- O que faz a opção ''-a'' no comando ''ls''? E a opção ''-l''?
- Liste usuários do sistema com o mesmo nome que o seu
- O que são arquivos/diretórios cujo nome inicia com um caractere ''.'' ?
- Crie um link simbólico para o diretório infraComp do seu colega ao lado. Use este link para listar o conteúdo do diretório
- O que fazem os comandos ''du'' e ''df''?
- O comando ''ls'' permite obter listagens de diretórios sob várias formas. Consulte a página de manual do comando e execute-o de forma a obter listagens da seguinte forma:
* listagem longa do diretório //home//, com detalhes. O que significa cada coluna da listagem ?
* listagem curta do diretório //home//, incluindo os arquivos escondidos.
* listagem longa de ''/var/spool/mail'', ordenada por tamanho dos arquivos
* listagem longa de ''/etc'', ordenada alfabeticamente
* listagem longa de ''/home'', ordenada por datas crescentes
* listagem curta de ''/usr'', recursiva e ordenada por tamanho
- O comando ''mkdir'' permite criar diretórios com subdiretórios. Leia sua página de manual e execute-o para criar a seguinte estrutura de diretórios (dentro de seu diretório **home**), usando apenas uma operação. Use o comando ''tree'' para conferir a estrutura criada:
a
`-- b
|-- c
| |-- d
| | `-- h
| |
| `-- e
|
|-- f
| `-- d
|
`-- j
- Crie um arquivo ''.tar'', com o conteúdo do seu diretório HOME. A seguir, compacte-o usando os comando ''compress'', ''gzip'' e ''bzip2'', e compare os resultados (tamanho).