====== 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).