Baixe o app para aproveitar ainda mais
Prévia do material em texto
LLiinn uu xx Módulo II Parabéns por participar de um curso dos Cursos 24 Horas. Você está investindo no seu futuro! Esperamos que este seja o começo de um grande sucesso em sua carreira. Desejamos boa sorte e bom estudo! Em caso de dúvidas, contate- nos pelo site www.Cursos24Horas.com.br Atenciosamente Equipe Cursos 24 Horas SUMÁRIO Unidade 4 – A Linguagem Linux.................................................................................... 1 4.1 - Logando no sistema ........................................................................................ 1 4.2 - O interpretador de comandos .......................................................................... 2 4.3 - O shell e o Kernel ........................................................................................... 3 4.4 - Comandos Internos ......................................................................................... 4 4. 5 - Comandos externos (programas).................................................................... 4 4.6 - PATH.............................................................................................................. 5 4.7 - Variáveis de ambiente..................................................................................... 5 Unidade 5 – Métodos de Armazenamento de Dados....................................................... 7 5.1 - Estrutura de diretórios e particionamento de discos ........................................ 7 5.2 – O Comando MOUNT................................................................................... 11 5.3 – O comando UMOUNT................................................................................. 12 5.4 - O arquivo FSTAB......................................................................................... 12 Unidade 6 – Manipulação de Objetos ........................................................................... 15 6.1 – Comandos para manipulação de diretório .................................................... 15 6.2 – Comandos para manipulação de arquivos .................................................... 18 6.3 – Comandos Diversos ..................................................................................... 23 6.4 – Editando arquivos ........................................................................................ 37 6.5 – Gerenciando arquivos compactados ............................................................. 42 Encerramento................................................................................................................ 57 1 Unidade 4 – A Linguagem Linux 4.1 - Logando no sistema Antes de começar a usar o sistema, é necessário que o usuário se logue no Linux. Para tanto, ele deve fornecer o nome de usuário e a senha que foram cadastrados, para fins de identificação. Ao logar será exibida a seguinte tela. 2 Fornecendo o login e a senha, o usuário estará apto a usar o sistema e os recursos para os quais tiver permissão de acesso. Para sair do sistema, ou seja, executar “logout” é necessário digitar “exit”, “logout” ou segurar “CRTL+D”. No ambiente gráfico temos uma maneira que não é a mais recomendada para encerrar uma sessão: pressionando CRT+ALT+BACKSPACE. Ao fazer isso, o Linux encerra a sessão sem salvar arquivos ou modificações. 4 .2 - O interpretador de comandos Após se logar no Linux o usuário entrará para o que chamamos de “prompt” do sistema. No prompt você pode digitar os comandos que deseja que o computador execute. O prompt é a entrada de um programa que é automaticamente executado após o login no sistema. Esse é chamado de interpretador de comandos, ou Shell, é o que faz a ponte entre o usuário, os programas do sistema e o kernel. 3 4 .3 - O shell e o Kernel O computador não passa de um conjunto de circuitos eletrônicos digitais. Isso significa que tudo no computador se resume a um mundo binário. A melhor forma de interagir com essas máquinas é através de sistemas operacionais, compiladores e muitos outros programas que facilitarão esta interação. O sistema operacional é composto de várias partes. Uma delas, o núcleo, é chamado de kernel. Fornece componentes lógicos para o hardware, estendendo a sua funcionalidade. Outra parte é a interface com o usuário. As interfaces são chamadas genericamente de Shell (casca) e atuam de diversas formas no sistema operacional, possuindo vários comandos internos que permitem ao usuário solicitar uma série de serviços. O Shell também pode ser usado para implementar linguagens simples de programação que permitem o desenvolvimento de pequenos programas, conhecidos como Shell Script. Nos sistemas UNIX existem muitos interpretadores de comandos diferentes, cada um com suas peculiaridades, ficando a critério do usuário decidir qual shell será mais adequado às aplicações que deseja fazer. Alguns exemplos: - Broune Shell(sh). - C shell (csh). - Korn Shell (ksh). 4 4 .4 - Comandos Internos A principal função do interpretador de comandos é executar programas disponíveis no sistema. Porém, cada interpretador tem seus comandos internos (builtins), ou seja, existem alguns comandos especiais que não são programas- comandos ativados pelo Shell, mas trata-se de pequenas rotinas internas do próprio interpretador de comandos. Ao executar um comando, o interpretador primeiro verifica se o que foi requerido refere-se a um Comendo Interno ou a um Comando Externo, nessa ordem. No caso do bash, um Shell desenvolvido para o Projeto GNU, podemos citar como exemplo o comando echo. Quando digitamos no prompt echo “Teste”, o bash executa o programa “echo” que executa sua rotina interna correspondetne ao “echo”, não precisando assim executar um programa externo. Os comandos internos têm uma importância muito grande, pois, são o que faz com que o shell seja programável, isto é, os comandos internos possuem rotinas internas que representam controles de fluxo e laços (if, while, for, etc..). Assim, podemos escrever scripts e executá-los a partir do Shell (shell scripts). Exemplo de comandos internos: cd, exit, bg, echo. Para acessar a lista completa dos comandos internos, pode-se recorrer ao manual do shell, com o comando “man bash”. 4 . 5 - Comandos externos (programas) Quando não digitamos um comando interno do shell, esse executa o programa que estamos chamando com todos os parâmetros passados, caso existam. Os comandos externos do interpretador de comandos são procurados no disco, usando o comando “path”, e são executados assim que encontrados. Uma das vantagens do interpretador de comandos consiste em o usuário não precisar saber onde estão localizados os programas que deseja executar. No caso do bash, o nome do arquivo e o comando são completados quando pressionada a tecla TAB, o que é útil quando não se sabe ao certo o nome do comando ou do arquivo. 5 Exemplos de comandos externos: ls, mkdir, rmdir. Para obter uma lista com diversos comandos externos podemos verificar o conteúdo dos diretórios digitando /bin e /sbin. 4 .6 - PATH Path é o caminho de procura dos arquivos/comandos executáveis. O path (caminho) é armazenado na variável com o comando echo $PATH. Por exemplo, o caminho /usr/local/bin:/usr/bin:/Bin:usr/bin/X11 significa que se você digitar o comando ls, o interpretador de comandos iniciará a procura de programa ls no diretório /usr/local/Bin. Caso não encontre o arquivo no diretório /usr/local/Bin, ele inicia a procura em /usr/bin até que encontre o arquivo procurado. Caso o interpretador de comandos chegue até o último diretório do path sem encontrar o arquivo/comando digitado, é mostrada a seguinte mensagem: Bash: ls: comando no found (comando não encontrado) O caminho de diretórios vemconfigurado na instalação do Linux, mas, pode ser alterado no arquivo /etc/profile. Caso deseje alterar o caminho para todos os usuários, este é o melhor lugar, pois ele é lido por todos os usuários no momento do login. Caso um arquivo/comando não esteja localizado em nenhum dos diretórios, você deve executá-lo usando um “./” (ponto barra) na frente do comando. Isso diferencia o Linux do funcionamento do MS-DOS (Windows), no qual o comando é sempre procurado no diretório corrente, antes de ser procurado no path. Se desejar alterar o path para um único usuário, modifique o arquivo ./bash_profile em seu diretório de usuário (home). 4.7 - Variáveis de ambiente Como o SHELL “sabe” onde estão os programas a serem executados? 6 Os processos no Unix e na maioria dos sistemas operacionais mantêm um conjunto de variáveis globais chamadas de variáveis de ambiente. Algumas dessas variáveis são copiadas pelo sistema operacional através do processo pai-filho, ou seja, saem do processo “pai” para o processo “filho”. Outras são iniciadas ou modificadas pelo sistema operacional. Como vimos no capítulo anterior, uma dessas variáveis é o PATH, que é usada pelo interpretador de comandos para saber onde estão os programas que deve executar. Existem muitas outras variáveis de ambiente além de variável PATH. Algumas das mais importantes são: - TERM: tem valor do tipo de terminal virtual que está sendo usado. - HOME: tem o caminho para o diretório home do usuário. - MANPATH: tem o caminho para o editor de texto padrão. Para verificar o valor de todas as variáveis de ambiente, basta digitar o comando “env”. Esse comando listará todas as variáveis existentes com seus respectivos valores. Caso você queira saber o valor de uma variável específica, basta digitar o comando, que imprimirá o conteúdo da variável PATH. Existem três maneiras de mudar o valor de uma variável de ambiente: 1) Com o comando export podemos tanto alterar o valor de uma variável de ambiente, quanto criar novas variáveis. a. Exemplo: “export PATH=$PATH:/home/user/bin” 2) Com o comando set “setamos” ou configuramos o valor de uma variável de ambiente existente. a. Exemplo: “set PATH=$PATH:/home/user/bin” 3) Também podemos escrever apenas “PATH=$PATH:/home/user/bin” na linha de comando. 7 Unidade 5 – Métodos de Armazenamento de Dados 5.1 - Estrutura de diretórios e particionamento de discos Nos sistemas operacionais com base na linguagem GNU/Linux, o esquema de particionamento de disco ocorre de maneira diferenciada, no qual se destaca três pontos principais: 1) Quantidade de partições para o funcionamento. 2) Rótulo de partições. 3) Software de particionamento. Podemos estabelecer um comparativo entre plataforma Windows (geralmente conhecida e de fácil compreensão) e a plataforma GNU/Linux. 8 Na plataforma da Microsoft, em versões mais antigas, ainda é usada a ferramenta de particionamento do DOS, que tem, no máximo, uma partição primária e uma estendida, na qual podemos ter inúmeras partições lógicas. Esse limite já foi praticamente extinto, uma vez que padrões internacionais definem o uso de 64k alocados em disco para armazenar a tabela de particionamento. Visto que para cada partição criada precisamos utilizar 16k para guardar informações sobre ela, assim, temos um limite máximo de quatro partições. Note que, neste caso, temos que utilizar uma dessas reservas para criar uma partição estendida. Isso nos dará oportunidade de criar outras partições chamadas “lógicas” dentro desta partição estendida. O esquema de particionamento do GNU/Linux é extremamente flexível. Mas precisamos seguir algumas regras para que nosso sistema possa ser iniciado após a instalação. As bases de todas essas regras são definidas em padrões mundialmente utilizados como o FHS (Filesystem Hierarchy Standard) que define onde os arquivos e diretórios do sistema serão localizados. Quando estamos particionando o disco para o Linux devemos levar em consideração que, nessa plataforma, as partições e diretórios estão muito mais ligados entre si do que em outros sistemas operacionais. Quando usamos esses diretórios para acessar ou montar partições, o chamamos de Ponto de Montagem e precisamos saber “quem” são, para podermos particionar o disco. 9 Ressaltamos que os sistemas Linux podem funcionar apenas com duas partições, sendo uma para o sistema operacional que será montado na raiz “/” (barra) e outra para troca de arquivos, chamada de “swap”. Logo entenderemos esses termos. Todos esses pontos de montagem irão se localizar hierarquicamente abaixo de um único diretório-raiz, que no Linux é representado pela “/” (barra). Cada ponto de montagem precisa, obrigatoriamente, utilizar uma partição, mas essa não precisa ser exclusiva. Por exemplo, tendo quatro partições primárias é possível ter quatro pontos de montagem independentes. Note que qualquer outro ponto de montagem que não for especificado será montado dentro da raiz (“/”). Outro ponto de montagem necessário para que o Linux seja instalado e funcione corretamente é o da partição swap. A swap é conhecida como zona de troca e auxilia no armazenamento dos dados que estão em transição entre memória e disco. A zona de troca é essencial para instalação e funcionamento de qualquer distribuição Linux, além de aumentar o desempenho do sistema de maneira extraordinária. Outra vantagem do Linux sobre os demais sistemas operacionais é o que ele pode fornecer com essas características. Ainda é possível utilizar pontos de montagens 10 separados por discos, aumentando assim o desempenho do sistema. Na verdade, alterando simplesmente a maneira e o local onde os dados serão armazenados. Se você tiver mais de um HD será possível espalhar esses pontos de montagem pelos HDs. Esse tipo de planejamento deve ser bem pensado e executado durante a instalação do sistema, mas também faz parte de um procedimento de tunning, ou seja, ajuste fino. O Linux, como os sistemas UNIX/POSIX, não trabalha com a ideia de volumes lógicos como em alguns outros sistemas (como MS-DOS, que representa a unidade de disco rígido e a unidade de disquetes como dois volumes lógicos diferentes). O Linux tem uma única unidade, a sua árvore de diretórios, cuja raiz é o diretório “/”. Todos os componentes, tais como: unidade de disquete, CDROM, impressora, HD, entre outros, são representados por arquivos. Esses arquivos estão localizados no /dev da árvore de diretórios do Linux. Isso quer dizer que, quando um programa precisa ler ou escrever em um desses componentes, ele lê informações e escreve no arquivo que representa aquele componente (device). Um exemplo prático de como isso funciona consiste em fazer o seguinte teste: quando logamos localmente no Linux estamos usando o primeiro terminal virtual (console), que também é representado por um arquivo, o /dev/tty1. Se, no tty1 executamos o comando ls /dev/tty2 estaremos redirecionando a saída do comando ls para o console tty2. Para vermos se isso realmente ocorre, basta mudarmos para a tty2 digitando Alt+F2. Pois bem, vimos que o Linux tem somente uma árvore de diretórios, mas seus arquivos ou partes dessa árvore podem estar em componentes diferentes do computador, como por exemplo, uma partição do HD, disquete, etc. Para unir todos esses devices em uma única estrutura de diretórios, existe o comando mount, que monta todos os dispositivos, a exemplo do acesso ao conteúdo CDROM. “Tenho que montar esse CD e para isso eu devo usar o comando mount.” 11 5.2 – O Comando MOUNT O comando mount é utilizado para montar um dispositivo na hierarquia do sistema de arquivos do Linux. As opções mais usadas são: -a - Montar todos os dispositivos especificados no arquivo /etc/fstab que não têm a opçãonoauto selecionada. -r - Montar o sistema de arquivos do dispositivo como “somente leitura”. -w - Montar o sistema de arquivos do dispositivo como leitura e gravação. -o - Especificar as opções de montagem. -t - Especificar o tipo do sistema de arquivos do dispositivo. Alguns tipos: ext2 - Partições Linux. ext3 - Partições Linux. reiserfs - Para partições reiserfs. vfat - Para partições Windows Fat. ntfs - Para partições Windows NTFS. iso9660 - Para montar unidades de cdrom. Exemplos: flaviocapeletti@Tux:# mount /dev/hdb1 /mnt/windows -t vfat flaviocapeletti@Tux:# mount /dev/fd0 /mnt/floppy -t vfat flaviocapeletti@Tux:# mount /dev/cdrom /mnt/cdrom -t iso9660 12 5 .3 – O comando UMOUNT O comando umount é utilizado para desmontar dispositivos montados pelo comando mount. O umount sincroniza o conteúdo do disco com o conteúdo dos buffers e libera o diretório de montagem. As opções mais usadas são: -a - Desmonta todos os dispositivos listados no arquivo /etc/mtab, que é mantido pelo comando mount como referência de todos os dispositivos montados. -t tipo - Desmonta somente os dispositivos que contenham o sistema de arquivos especificados no tipo. Exemplos: flaviocapeletti@Tux:# umount /dev/cdrom ou flaviocapeletti@Tux:# umount /cdrom 5 .4 - O arquivo FSTAB O arquivo fstab armazena as configurações dos dispositivos que devem ser montados e determina o ponto de montagem de cada um na inicialização do sistema operacional. O Linux suporta diversos sistemas de arquivos locais e remotos. O arquivo fstab está localizado no diretório /etc. O arquivo fstab tem a seguinte aparência: Dispositivo P.Montagem Tipo S. Arquivos Op. Montagem Backup Ch. Disc. 13 /dev/hda1 /boot ext3 defaults 0 2 /dev/hda2 / reiserfs defaults 0 1 /dev/hda3 none swap sw 0 0 /dev/hda4 /home reiserfs defaults 0 2 Onde: - Dispositivo: Especifica o dispositivo a ser montado. - P. Montagem (Ponto de montagem): Especifica o diretório em que o dispositivo será montado. - Tipo S.Arquivos (Tipo sistema de arquivos): Especifica o tipo de sistema de arquivos a ser montado. - Op. Montagem (Opções de montagem): Especifica as opções de montagem dependendo do tipo de sistema de arquivos. - Backup (Frequência de Backup): O programa dump consulta o arquivo para saber a frequência de backup. É um campo numérico, onde 1 é para sistemas ext2 e 0 para outros. - Ch. Disc (Checagem de disco): Determina se o dispositivo deve ou não ser checado na inicialização do sistema pelo fsck. É um campo numérico, onde 0 é para não ser checado, 1 é para ser checado primeiro (raiz) e 2 para checar depois do raiz. Opções de montagem: Opção Descrição auto Habilita que o dispositivo seja montado na inicialização. 14 Noauto Desabilita que o dispositivo seja montado na inicialização. ro Monta o sistema de arquivos somente como leitura. rw Monta o sistema de arquivos para leitura e gravação. Exec Habilita a execução de arquivos no sistema de arquivos especificados. Noexec Desabilita a execução de arquivos. User Possibilita que qualquer usuário monte o dispositivo, mas proíbe outros usuários de desmontá-lo. Users Possibilita que qualquer usuário monte e desmonte o dispositivo. Nouser Somente o superusuário (root) pode montar e desmontar. Sync Habilita a transferência de dados síncrona no dispositivo. Async Habilita a transferência de dados assíncrona no dispositivo. Dev Dispositivo especial de caracteres. Suid Habilita que os executáveis tenham bits do suid e sgid. Nosuid Desabilita que os executáveis tenham bits do suid e sgid. defaults Configura as opções de montagem como rw,suid, exec, auto, nouser e async. Exemplo: flaviocapeletti@Tux:# cat /etc/fstab 15 Unidade 6 – Manipulação de Objetos 6 .1 – Comandos para manipulação de diretório Comando cd O comando cd é usado para navegar por diretórios. É, sem dúvida, um dos comandos mais usados no Linux. Se durante o comando não houver direcionamento para algum diretório, levará o usuário de volta ao diretório raiz. Exemplos: flaviocapeletti@Tux:$ cd /home Nesse exemplo estamos acessando o diretório /home flaviocapeletti@Tux:$ cd /usr/local Nesse exemplo estamos acessando o diretório /usr/local flaviocapeletti@Tux:/usr/local$ cd .. Nesse exemplo estamos deixando o diretório ‘filho’ de nome local e voltando ao diretório ‘pai’ de nome usr. O resultado é: flaviocapeletti@Tux:/usr$ Leia o ‘man’ do comando para se divertir e aprender mais. Comando ls O comando ls lista os arquivos de diretórios e exibe informações sobre as suas características. Para usar o comando ls não é preciso nenhuma opção ou argumento para ser executado. 16 Exemplo: flaviocapeletti@Tux:$ ls -l drwxr-xr-x 77 root root 5776 2006-10-19 08:15 etc drwxr-xr-x 59 root root 1600 2006-10-09 14:05 home Depois tente isso: flaviocapeletti@Tux:$ ls -l -s E, por fim: flaviocapeletti@Tux:$ ls -ls Você verá que, usando parâmetros, o ls retorna listas extensas com os resultados da sua consulta, tornando, assim, a consulta muito mais eficaz. Comando pwd Esse comando mostra o nome e o caminho do diretório atual. Você pode usá-lo para verificar em qual diretório você se encontra (caso seu aviso de comandos não mostre isso). Exemplo: # pwd /usr/local Comando mkdir O comando mkdir é usado para criar diretórios. Quando o usuário cria um diretório novo com o comando mkdir, esse diretório recebe, automaticamente, dois elementos ocultos. Esses são o . (ponto) e o .. (dois pontos). Esses elementos representam ligações entre o novo diretório e o diretório pai. 17 As opções mais usadas são: -p - Cria um diretório mesmo que o diretório pai não exista. Nesse caso cria também o diretório pai. -m - Configura a permissão do diretório criado. Exemplos: flaviocapeletti@Tux:$ mkdir documentos Cria o diretório documentos. flaviocapeletti@Tux:$ mkdir -p meusdocumentos/cartas Cria o diretório cartas como filho do diretório meusdocumentos. flaviocapeletti@Tux:$ mkdir -m 777 meusdocumentos/modelos Cria o diretório modelos abaixo do diretório meusdocumentos com permissão total. Comando rmdir O comando rmdir é usado para remover somente diretórios vazios de forma relativamente segura. Esse comando não se restringe à remoção de um diretório por vez. Se estiverem vazios, mais de um pode ser removido. Exemplo: flaviocapeletti@Tux:$ rmdir meudiretorio Remove o diretório meudiretório, que se encontra vazio. 18 6 .2 – Comandos para manipulação de arquivos Comando cat O comando cat concatena e exibe o conteúdo dos arquivos. Com o comando cat você também pode criar arquivos simples. Alguns parâmetros: - - Obtém dados do arquivo de entrada padrão. -n - Numera as linhas. -v - Exibe caracteres não imprimíveis. Exemplo: flaviocapeletti@Tux:~$ cat > flaviocapeletti.txt Flaviocapeletti Paiva flaviocapeletti@Tux:~$ cat flaviocapeletti.txt Flaviocapeletti Paiva Vejamos o que foi feito. Em primeiro lugar, foi criado o arquivo chamado flaviocapeletti.txt com o comando cat associado com o redirecionador ">", em seguida pedimos para o Linux exibir o conteúdo do arquivo criado novamente com o comando cat. Não se preocupe, neste momento, com redirecionadores. Isso erá explicado no decorrer do curso. Leia o man do comando para se divertir e aprender mais. 19 Comando tac O comando tac é o oposto do comando cat. O comando tac exibe o conteúdo de um arquivo de trás para frente. Exemplo: flaviocapeletti@Tux:$ tac arquivo.txt Leia o ‘man’ do comando, divirta-se e aprenda mais com isso. Comando rm O comando rm é usado para remover arquivose/ou diretórios do sistema. Muito cuidado com esse comando, pois, se usado de maneira errada pode ser totalmente desastroso. As opções mais usadas são: -f - Força a remoção, não pergunta antes de remover. -R - Remove diretório e todo seu conteúdo. Exemplos: flaviocapeletti@Tux:$ rm arquivo1 Remove arquivo1. flaviocapeletti@Tux:$ rm -Rf /home/usercomum Remove todo o diretório usercomum. flaviocapeletti@Tux:/tmp$ rm * Remove todo o conteúdo do diretório /tmp. 20 Comando cp O comando cp é usado para copiar diretórios ou arquivos. As opções mais usadas são: -d - Mantém os links ao copiar. -p - Copia todas as informações dos atributos dos arquivos e diretórios, bem como dono, permissão, grupo, etc. -R - Copia os arquivos recursivamente. Útil para copiar os arquivos e diretórios abaixo do diretório especificado. -a - Faz o mesmo que as opções "-dpR" combinadas. -f - Força a cópia, gravando por cima do destino. -i - Pergunta ao usuário antes de copiar. -v - Mostra o nome de cada arquivo que está sendo copiado. Exemplos: flaviocapeletti@Tux:$ cp arquivo1 arquivo2 Nesse exemplo estamos copiando o arquivo1 para arquivo2 no mesmo diretório. flaviocapeletti@Tux:$ cp arquivo1 /tmp Nesse exemplo estamos copiando o arquivo1 para o diretório /tmp. flaviocapeletti@Tux:$ cp -Rfv /home /tmp Nesse exemplo podemos copiar todo o diretório /home e todos os seus subdiretórios para o diretório /tmp. Comando mv O comando mv é usado para mover ou renomear arquivos e diretórios. Use esse comando com cuidado. As opções mais utilizadas são: 21 -i - Modo interativo, pede confirmação. -f - Usa modo forçado, substitui arquivos protegidos. Exemplo: flaviocapeletti@Tux:$ mv arquivo1 arquivo2.txt Nesse exemplo estamos renomeando o arquivo1 para arquivo2.txt. flaviocapeletti@Tux:$ mv /home/flaviocapeletti/documentos /tmp Nesse exemplo estamos movendo o diretório documentos para o diretório /tmp. Coringas Os coringas são usados quando estamos trabalhando com arquivos de diretórios do Shell. É muito comum precisarmos trabalhar com diversos arquivos de uma vez. Para tornar essa tarefa simples, o Linux oferece o recurso de coringa para os nomes dos arquivos e diretórios: Símbolo Descrição * Usado para "qualquer coisa" ele pode substituir um ou mais caracteres de um nome. ? Usado para substituir um caractere somente de um nome. {texto1, texto2, texto3...} Usado para substituir as partes dentro da chave{}, pelo texto1, depois texto2, depois texto3, etc. Exemplos: flaviocapeletti@Tux:$ ls *.txt Lista todos os arquivos que possuem a extensão .txt. flaviocapeletti@Tux:$ ls fern???o 22 Redirecionadores Um esquema interessante no Linux são os redirecionadores. Como o Linux inicialmente foi criado para programadores e por programadores, era essencial que os comandos e processos tratassem as entradas e saídas com grande facilidade. Antes de começar com os exemplos é preciso definir o que são Entrada Padrão, Saída Padrão e Saída de Erro. - A Entrada Padrão (stdin) é a entrada de fluxo de dados. Pode ser representado por 0. - A Saída Padrão (stdout) é a saída de fluxo de dados em condições normais. Pode ser representado por 1. - A Saída de Erro (stderr) é a saída de um fluxo de dados em condições de erro. Pode ser representado por 2. Podemos redirecionar a Entrada Padrão de uma saída para uma outra saída, utilizando o sinal de maior (>) e, para direcionar, uma entrada para outra entrada usamos o sinal de menor (<). Ainda podemos redirecionar uma saída para uma entrada usando uma barra vertical especial. O sinal é "pipe"(|) ou condutor. Exemplos: flaviocapeletti@Tux:$ ls > saida.txt No exemplo acima usamos o comando ls como já vimos antes, porém, aqui ele pega todo o resultado de retorno e grava no arquivo saida.txt. Logo após realizar o exemplo acima verifique o conteúdo do arquivo "saida.txt" com o comando cat. flaviocapeletti@Tux:$ mail "meuemail@domain.com" < email.txt 23 Já nesse exemplo, o programa mail está recebendo como argumento o endereço de e- mail e, ao invés de utilizar o teclado como entrada padrão, o arquivo texto email.txt é redirecionado como entrada. flaviocapeletti@Tux:$ ./meuprograma > arquivo.txt Nesse exemplo, o arquivo.txt recebe toda a saída do programa meuprograma. flaviocapeletti@Tux:$ ./meuprograma 2 > error.log Nesse exemplo, o arquivo error.log receberá toda a saída de erros do programa meuprograma. flaviocapeletti@Tux:$ ./meuprograma > arquivo1 2>&1 error.log Nesse exemplo, toda a saída padrão e de erros de meuprograma será gravada em error.log. flaviocapeletti@Tux:$ ls -l | more Nesse exemplo, os resultados do ls são repassados ao comando more, paginando assim os resultados. 6 .3 – Comandos Diversos Comando clear O comando clear é usado para limpar a tela. Você ainda pode usar as teclas de atalho Ctrl+l para esse serviço. Exemplo: flaviocapeletti@Tux:$ clear 24 Comando df O comando df é usado para exibir o número de blocos livres no HD e inodes. Para aqueles que não conhecem, o Inodes é uma estrutura responsável por conter informações sobre arquivos e pastas. É a identidade de um arquivo, com informações sobre permissões de acesso, identificação dos donos dos arquivos, data e hora do último acesso e alterações, tamanho e, o mais importante, os famosos ponteiros para o arquivo em si. Como o número de inodes está diretamente ligado ao número de arquivos que um dispositivo pode armazenar, é possível que ele acabe e ainda tenha espaço disponível em disco. Isso é raro, mas pode acontecer quando se tem muitos arquivos. O número de inodes é definido na formatação do disco. As opções mais usadas são: -h - Mostra as informações de forma amigável. -i - Mostra o número de inodes restantes. Exemplo: flaviocapeletti@Tux:# df -h Sist. Arq. Tam Usad Disp Uso% Montado em /dev/hda2 19G 3,9G 15G 21% / tmpfs 126M 0 126M 0% /dev/shm /dev/hda1 89M 11M 74M 13% /boot /dev/hda4 13G 8,8G 3,6G 72% /home O comando df também pode receber como parâmetro um diretório. Neste caso ele irá mostrar a capacidade utilizada e restante deste diretório. 25 Exemplo: flaviocapeletti@Tux:# df /home/flaviocapeletti Sist. Arq. 1K-blocos Usad Dispon. Uso% Montado em /dev/hda4 12891760 9220040 3671720 72% /home Comando ln O comando ln cria ligações (links), ou imagens para determinados programas, arquivos ou diretórios. O comando ln associa um nome a um determinado programa, transferindo todas as funções daquele programa para o nome em que se cria o vínculo. Os links criados podem ser visto com a opção -l do comando ls. As opções mais usadas são: -s - Cria um link simbólico. O padrão do comando ln são links físicos. -f - Força a criação de um link, mesmo que esse já exista. -i - Exibe número de identificação. Exemplos: flaviocapeletti@Tux:# ln -s /usr/src/linux-2.6.20 /usr/src/linux Nesse exemplo criamos um link simbólico Linux, que aponta para o diretório /usr/src/linux-2.6.20. Usando o comando ls -l temos o seguinte retorno: flaviocapeletti@Tux:/usr/src:# ls –ls total 0 0 lrwxrwxrwx 1 root src 22 2000-01-01 08:32 linux -> /usr/src/linux-2.4.20/ Criando um link físico: flaviocapeletti@Tux:/usr/src:# ln /var/log/messages /var/adm/log/kernel.log 26 Cria o link físico kernel.log do arquivo messages. Comando du O comando du é usado para obter informaçõesdo espaço utilizado por um diretório ou arquivo. As opções mais usadas são: -a - Mostra todos os arquivos e não somente os diretórios. -c - Mostra um total no final da listagem. -h - Mostra as informações de maneira mais amigável. -s - Mostra um sumário do diretório especificado e não o total de cada subdiretório. -S - Exclui os subdiretórios da contagem. Exemplo: flaviocapeletti@Tux:# du -h meuarquivo.tgz 8,2M meuarquivo.tgz Leia o man do comando para se divertir e aprender mais. Comando find O comando find é usado para localizar uma expressão a partir de um caminho ou diretório. Busca diretamente no sistema de arquivos. Exemplos: flaviocapeletti@Tux:# find / -name meuprograma.txt Nesse exemplo estamos procurando pelo arquivo meuprograma.txt. flaviocapeletti@Tux:# find / -iname MeuPrograma.txt Nesse exemplo estamos procurando pelo arquivo MeuPrograma.txt. Perceba que, no primeiro exemplo, usamos -name e agora usamos -iname. Isso acontece porque o - 27 iname não diferencia maiúsculas de minúscula. Como não temos certeza do nome do arquivo usamos –iname. flaviocapeletti@Tux:# find /home/flaviocapeletti -iname documento.stx Nesse exemplo, procuramos o documento.stx no /home/flaviocapeletti. Esses são alguns exemplos simples do uso do comando find. Leia o man do comando para se divertir e aprender mais. Comando tee O comando tee é usado como um filtro em conexões de vários comandos. Esse comando recebe dados de uma entrada padrão, grava o que recebeu em um arquivo e ainda envia para sua saída padrão. Exemplo: flaviocapeletti@Tux:$ ./programa | tee programa.txt | imprime | tee boleto.txt | lpr 2> errors.log Comando head O comando head, exibe as 10 primeiras linhas de um arquivo. A opção mais usada é: -n (número) - Configura o número de linhas que o head irá mostrar. Exemplo: flaviocapeletti@Tux:$ head -n 50 arquivo.txt ou flaviocapeletti@Tux:$ head arquivo.txt 28 Comando nl O comando nl, é utilizado para numerar as linhas de um arquivo. Este comando considera condições especiais para o cabeçalho e o rodapé do arquivo. Símbolo Descrição \:\:\: Esse símbolo é utilizado para iniciar o cabeçalho do texto. \:\: Esse símbolo é utilizado para iniciar o corpo do texto. \: Esse símbolo é utilizado para iniciar o rodapé do texto. As opções mais usadas são: -h (subopção) - Utilizada para formatar o cabeçalho do texto. O padrão é não numerar o cabeçalho. -b (subopção) - Utilizada para formatar o corpo do texto. O padrão é numerar somente as linhas não vazias. -f (subopção) - Utilizada para formatar o rodapé do texto. O padrão é não numerar o rodapé. As subopções são: A - Numerar todas as linhas. t - Numerar somente as preenchidas. n - Não numerar as linhas. Exemplo: Suponha que um arquivo.txt tenha o seguinte conteúdo: \:\:\: Meu relatório --------------------------------------- 29 Nome Estado --------------------------------------- \:\: Flavio Capeletti RS \: --------------------------------------- flaviocapeletti@Tux:$ nl arquivo.txt Comando tail O comando tail é oposto ao comando head que já vimos. Este comando exibe as 10 últimas linhas de um arquivo, diferente do comando head, que exibe as 10 primeiras. As opções mais usadas são: -n (número) - Específica o número de linhas finais que o tail deverá exibir. -f - Mostra as últimas linhas finais de um arquivo continuamente, enquanto outro processo grava mais linhas. Exemplo: flaviocapeletti@Tux:$ tail -n 50 arquivo.txt ou flaviocapeletti@Tux:$ tail -f /var/log/messages Comando touch O comando touch é usado para criar arquivos. Além disso, ele pode mudar a data e a hora de acesso e ou modificação de arquivos. As opções mais usadas são: -a - Muda somente a data e a hora de acesso para a atual. 30 -m - Muda somente a data e a hora de modificação para a atual. -t datahora - Muda a hora e a data para o datahora definidos. Exemplos: flaviocapeletti@Tux:$ touch arquivo1 Criamos um arquivo de nome arquivo1. Comando echo O comando echo repete ou ecoa tudo aquilo que for digitado à sua frente, separado por espaço em branco. É muito usado para marcar linhas de scripts, verificar conteúdos de variáveis de ambiente entre outros. Exemplo: flaviocapeletti@Tux:~$echo $PATH Nesse exemplo, pedimos para o comando echo exibir o conteúdo da variável $PATH flaviocapeletti@Tux:~$echo "seu nome" Comando wc O comando wc faz a contagem em unidade do conteúdo de um arquivo, linhas, caracteres e palavras. Digitando o comando wc sem opção, o usuário terá como resultado o número de caracteres, palavras e linhas. As opções mais usadas são: -l - Exibe o número de linhas. -w - Exibe o número de palavras. -c - Conta o número de caracteres de um ou mais arquivos. -t - Exibe estimativa de tempo para o resultado. 31 Exemplo: flaviocapeletti@Tux:$ wc arquivo.txt Comando cut O comando cut (cortar) lê o conteúdo de um ou mais arquivos e tem como saída uma coluna vertical. As opções mais usadas são: -b número - Imprime uma lista vertical com o byte número (da esquerda para a direita). -c número - Imprime uma lista vertical com o caractere número (da esquerda para a direita). -d delimitador - Configura o delimitador que separa uma coluna da outra. O padrão é o Tab. -f número - Imprime a coluna número. Exemplo: flaviocapeletti@Tux:$ cut -d : -f 1 /etc/passwd Leia o man do comando para se divertir e aprender mais. Comando expand O comando expand troca o Tab (tabulação) dentro dos textos pelo número de espaços correspondentes. É útil para tornar um texto que faz uso das tabulações mais atrativo para determinados dispositivos, como impressora, arquivos e outros. As opções mais usadas são: -t (número) - Específica o número de espaços que o tab contém. O padrão é 8. -i - Converte somente o início das linhas. 32 Exemplo: flaviocapeletti@Tux:$ expand arquivo.txt Comando alias Este comando atribui um apelido para o comando. Seu papel é abreviar linhas de comando, além de certas operações. Exemplo: flaviocapeletti@Tux:$ alias flaviocapeletti= "ls -ls" No exemplo foi criado um alias com o nome de flaviocapeletti que recebe o comando ls -ls. Com isso, basta apenas digitar flaviocapeletti para listar o conteúdo de um diretório. Resultado do exemplo: flaviocapeletti@Tux:$ flaviocapeletti 0 drwxr-xr-x 5 root root 120 2000-01-01 00:54 mnt 0 drwxr-xr-x 5 root root 136 2000-01-01 01:25 opt Comando split O comando split é usado para dividir grandes arquivos em n-arquivos menores. Os arquivos de saída são gerados de acordo com tamanho do arquivo de entrada. As opção mais usadas são: -n - Onde n é o número de linhas que irão dividir o arquivo de entrada. Exemplo: flaviocapeletti@Tux:$ split -20 arquivo_entrada.txt arquivo_saida.txt Leia o man do comando e se divirta e aprenda mais com isso. 33 Comando which O comando which recebe como argumento o nome de um comando e traz como resultado a localização no disco deste comando. Exemplo: flaviocapeletti@Tux:# which mcedit /usr/bin/mcedit Leia o man do comando para se divertir e aprender mais. Comando whereis O comando whereis localiza e exibe o PATH (caminho) de arquivos. Ele é muito menos complexo e muito menos eficaz que o comando find, porém, para casos simples e imediatos, cumpre muito bem seu papel. Exemplo: flaviocapeletti@Tux:# whereis mcedit mcedit: /usr/bin/mcedit /usr/share/man/man1/mcedit.1.gz Leia o man do comando para se divertir e aprender mais. Comando locate O comando locate busca a localização de arquivos e diretórios em um banco dedados criado com o comando updatedb. Sua busca é mais rápida que a do find, mas ele necessita de que o banco de dados esteja atualizado. Exemplo: flaviocapeletti@Tux:# locate passwd /etc/passwd 34 Comando whatis O comando whatis faz uma consulta no banco de dados por uma palavra exata. Exemplo: flaviocapeletti@Tux:# whatis free free (1) - Display amount of free and used memory in the system Obs: O comando free exibe informações de memória do sistema. Comando chmod O comando chmod é utilizado para modificar as permissões de arquivos. Este comando aceita a representação das permissões através de letras ou octetos. Para a representação das permissões através de letras, você poderá utilizar as letras u, g, o e a para representar as classes, símbolos de adição, subtração e igualdade para as operações e as letras r, w, x, X, s e t que você já conhece como permissões. Classes de Permissões: Letra Descrição u Dono g Grupo o Outros a Todos 35 Operações: Simbolo Descrição + Adiciona uma permissão, sem alterar as demais - Subtrai uma permissão, sem alterar as demais = Configura as permissões com exatidão Permissões: Permissão Descrição r Leitura (Read) w Gravação (Write) x Execução (eXecute) X Configura o bit de execução para outras classes para arquivos que já possuem o bit (X) s SUID ou SGID t Sticky Ainda podemos usar combinações de números. Vejamos: r = 4 w = 2 x = 1 O valor dessa combinação, equivale a 7, que seria permissão total. Exemplos de uso do comando chmod: flaviocapeletti@Tux:# chmod 777 arquivo.txt Neste exemplo estou dando permissão total ao dono, grupo e outros sobre o arquivo.txt. Isto acontece pois os valores r w x também podem ser representados por números. flaviocapeletti@Tux:# chmod 0400 arquivo.txt 36 Neste exemplo estou definindo o SUID do arquivo como 0. flaviocapeletti@Tux:# chmod -R 0400 /home/diretorio Neste exemplo estou dando permissão 0400 para todo o diretório /home/diretorio. Vejamos as opções mais usadas. -v - Reporta as permissões dos arquivos, inclusive as mudanças de permissões. -c - Reporta somente a mudança de permissão. -R - Muda as permissões de todos os arquivos e diretórios recursivamente dentro da mesmo hierarquia. Leia o man do comando para se divertir e aprender mais. Comando chown O comando chown altera o dono do arquivo ou diretório e pode também alterar o grupo a que este pertence. As opções mais usadas são: -v - Reporta o dono dos arquivos, inclusive as mudanças de dono. -c - Reporta somente a mudança de dono. -R - Muda o dono de todos os arquivos e diretórios recursivamente dentro da mesma hierarquia. Exemplos: flaviocapeletti@Tux:# chown flaviocapeletti arquivo.txt Altera o dono do arquivo "arquivo.txt" para usuário flaviocapeletti e o grupo do arquivo para o grupo do mesmo usuário. flaviocapeletti@Tux:# chown flaviocapeletti.users arquivo.txt 37 Altera o dono do arquivo "arquivo.txt" para o usuário flaviocapeletti e o grupo para users. flaviocapeletti@Tux:# chown .users arquivo.txt Altera o grupo do arquivo para o grupo users e deixa inalterado o dono do arquivo. flaviocapeletti@Tux:# chown -R flaviocapeletti /home/diretorio Altera o dono de todos os arquivos do diretório /home/diretório para o usuário flaviocapeletti. Leia o man do comando para se divertir e aprender mais. 6.4 – Editando arquivos Apesar do GNU/Linux contar com uma gama enorme de editores de texto, daremos destaque para o editor Vi (Visual Interface), pelas razões que veremos a seguir: O Vi é um editor de texto criado por Bill Joy, um estudante da Universidade de Stanford que veio a se tornar presidente da Sun Microsystems. Seu desenvolvimento foi realizado a partir do editor de textos “ed”, um editor escrito por Ken Thompson e que contém uma das primeiras execuções de expressões regulares. A importância do Vi para o Linux, não se resume apenas ao fato de ser um editor de texto, mas ser o editor mais usado por programadores de todo o mundo e também, ser comum a todas as distribuições do sistema GNU/Linux. O Vi também proporciona grande vantagem em relação a outros sistemas operacionais que armazenam suas configurações em arquivos binários. Por ser desenvolvido em formato, pode ser modificado facilmente para corrigir eventuais erros e claro, são mais difíceis de serem corrompidos. Outra vantagem que vale ser ressaltada é a sua disponibilidade em casos de emergências. Apesar de não possuir a complexidade de outros editores como o Jed ou o XEmacs, nada se compara ao Vi em termos de denominadores comuns. Diante de todas essas características, torna-se indispensável conhecer o Vi de forma mais contundente. Assim, apresentaremos, os comandos básicos e ao longo do capítulo, alguns comandos avançados. 38 A história da tecnologia nos ensina que a melhor maneira de aprender a usar aplicativos é praticando. Desta forma, passamos a listar os principais comandos desse editor de texto. Existem dois modos no Vi: - Modo de Edição - Modo de Comando Modo de Edição No modo de edição, é possível digitar livremente como se estivesse em um editor de textos comum. Esse modo é iniciado no editor - a partir do shell digitando-se “vi” - através de um dos seguintes comandos: i - insere texto a partir do cursor atual. a - insere texto depois do cursor atual. I - insere texto no início da linha. A - insere texto no final da linha. s - substitui texto no cursor atual. S - substitui texto depois do cursor atual. o - abre uma linha abaixo do cursor atual. Modo de Comando O modo de comando se inicia com a tecla ESC. Alguns desses comandos são: substituição, inserção e procura de texto, gravação e abertura de arquivos entre outros, além de recorte, cópia e colagem de texto. Os comandos mais usados são: /(Expressão) - Procura Expressão (que pode ser qualquer palavra) no texto. 39 n - Procura próxima ocorrência de Expressão no texto. N - Procura ocorrência anterior de Expressão no texto. yy - Copia linha atual do texto para memória. p - Cola conteúdo da memória no texto. dd - Apaga linha atual (e coloca na memória). n comando - Um número “n” (1, 2, ...) seguido de qualquer comando executa o comando “n” vezes. u - Desfaz última ação executada. . - Refaz última ação executada. :n - Pula para linha de número n. :w - Salva o arquivo atual. :wq - Salva o arquivo atual e sai do Vi. :x - Salva o arquivo atual e sai do Vi (equivalente) a :wq. :q - Sai do Vi. :q! - Sai do Vi, independente de salvar o conteúdo atual. :w arquivo - Salva o arquivo atual com o nome arquivo. Guia rápido do Vi Funções de procura /<expressão> - começa a procura pelo início do arquivo do termo "expressão". ?<expressão> - começa a procura pelo final do arquivo do termo "expressão". n - procura a próxima palavra. N - inverte o sentido da procura. Movimentação e inserção de texto :3,9d - apaga as linhas de 3 a 9. :4,7m 11 - move as linhas de 4 a 7 para a linha 11. :2,6t 11 - copia as linhas de 2 a 6 para a linha 11. :2,7w <file> - escreve as linhas de 2 a 7 para o arquivo "file". :r <file> - lê o arquivo 'file' e insere seu conteúdo no documento atual. 40 Adicionar/apendar texto a - apendar texto depois do cursor. A - apendar texto no final da linha. i - inserir texto antes do cursor. I - inserir texto no começo da linha. Mudar texto cw - muda uma palavra. 3cw - muda 3 palavras. C - muda uma linha.r - sobrescreve um caractere. R - sobrescreve a linha inteira. :%s/<old>/<new>/g - muda todas as ocorrências da expressão "old" para a expressão "new". Cancelar uma função u - desfazer a última operação. . - repete a última operação. Salvar arquivos e sair :w - salvar da memória (buffer) para o disco (arquivo). :q - sair do editor. :wq - salvar e sair do editor. :x - salvar e sair do editor. :e! - reeditar, desprezando as mudanças. ZZ - salvar e sair do editor. Movimentação de tela/linha 0 - vai direto para o começo da linha. ) ou $ - vai direto para o final da linha. g (Linux) - vai para a primeira linha do arquivo. 41 G - vai para a última linha do arquivo. 5G - vai para a linha 5. Copiar e inserir textos yy - copia um linha. 5yy - copia 5 linhas. p - cola abaixo do cursor. P - cola acima do cursor. Adicionar novas linhas o - abre uma nova linha para edição abaixo do cursor. O - abre uma nova linha para edição acima do cursor. Apagar texto x - apaga um caractere. dw - apaga uma palavra. dd - apaga uma linha. 5dd - apaga 5 linhas. dG - apaga do cursor até o final do arquivo. Configurações da sessão :set nu - mostra o número de linhas. :set nonu - desliga o comando acima. :set all - mostra todas as configurações. :set list - mostra os caracteres ocultos. Rolagem do texto CTRL+f - rola uma tela para baixo. CTRL+b - rola uma tela atrás. CTRL+d - rola meia-tela (1/2) para baixo. CTRL+u - rola meia-tela (1/2) atrás. 42 Como vimos, o Vi foi desenvolvido a partir do “Ed”, editor muito básico de linhas. O Vi original é muito simples e não possui alguns recursos que suas variantes mais modernas já possuem. Desta forma, vale a pena destacarmos a variante mais importante do Vi, que já se consagra como sua sucessora. Trata-se do Vim que veremos a seguir: Em 1992, surgiu um concorrente a altura para o Vi, que o imitava fielmente. Tanto que ficou conhecido como Vim (Vi IMitator ou Imitação do Vi). No entanto, com suas funcionalidades e estrutura mais apuradas, tornou-se muito popular passando de imitador para “Vi IMproved”, ou seja, Vi Melhorado. Hoje o Vim vem se tornando o editor de textos padrão em sistemas GNU/Linux, com interface gráfica podendo rodar em um terminal dentro do X Window ou no console. Possui também múltiplos undos e redo, diferente do Vi original. Além disso, possui modo visual (apertando-se a tecla v no modo de comando), onde é possível marcar o texto desejado para copiar ou deletar. O Vim também é altamente configurável. 6 .5 – Gerenciando arquivos compactados Neste capítulo, você vai aprender a gerenciar arquivos compactados. Conhecerá as características de cada um, de identificar um arquivo compactado e como descompactar um arquivo compactado usando um programa correspondente. Utilizar arquivos compactados é uma maneira excelente de reduzir o consumo de espaço em disco, propiciando uma melhor velocidade na transferência de arquivos via rede ou mesmo em dispositivos móveis. Qual o papel de programas compactadores/descompactadores? Os programas compactadores e descompactadores tem a função de diminuir e restaurar, respectivamente, o tamanho de um arquivo, ou vários arquivos, através da substituição de caracteres repetidos. Para que possa ficar mais claro, sugerimos um exemplo que está ligado diretamente a esse assunto e presente em todos os livros sobre Compactação no Linux. Observe a frase: 43 “Compactadores compactam e deixam arquivos compactados.” Quando realizamos a compactação deste arquivo, a frase passa a ter a seguinte configuração: “%dores %m e deixam arquivos %dos.” Por este exemplo, é possível perceber que o verbo “compactar”, que se encontrava em três palavras derivadas na frase acima “compactadores”, “compactam” e “compactados”, foi substituído por um sinal de “%”. O processo para descompactar este arquivo, segue o procedimento contrário à compactação. Ele substituiria o símbolo “%” pela palavra “compacta” e aí, você teria o arquivo restaurado. Se observar novamente a frase na íntegra e depois compactada, verá que seu tamanho caiu quase pela metade. Este volume de compactação de um arquivo é chamado de taxa de compactação. Assim, em termos técnicos, se o tamanho do arquivo for reduzido pela metade após a sua compactação, pode-se afirmar que atingiu uma taxa de compactação de 2:1 (lê-se dois para um). Da mesma forma, se o arquivo for reduzido em quatro vezes, afirma-se que atingiu uma taxa de compactação de 4:1 (quatro para um) e assim por diante. Para que não se perca informações e nem se corrompa o arquivo, os programas de compactação mantém um cabeçalho com todas as substituições usadas durante o processo de compactação. Isso ocorre para garantir o controle dos caracteres que são usados nas substituições. O tamanho desse cabeçalho pode ser fixo ou definido pelo usuário, dependendo do programa usado na compactação. Observações: É preciso estar muito atento quando estiver trabalhando com arquivos compactados, uma vez que não é possível, trabalhar diretamente com eles, na condição de compactados. Para poder usar o arquivo corretamente, é preciso descompactá-lo. 44 Há programas que aceitam os arquivos compactados mas, se prestar atenção, vai notar que eles apenas simplificam a tarefa descompactando o arquivo, abrindo e o recompactando assim que o trabalho estiver concluído, tudo de forma automática. Os arquivos de texto, por terem muito mais caracteres repetidos que os arquivos binários, atingem uma taxa de compactação muito maior que estes outros. Geralmente, esta taxa pode chegar a 10:1. Já os arquivos binários, costumam trabalhar com uma taxa de compactação de 2:1. Tipos de compactação Esses programas de compactação podem ser divididos basicamente em dois tipos: 1) Compactação sem perdas de dados. 2) Compactação com perdas de dados. No caso da compactação sem perdas, o arquivo é compactado sem nenhum risco de perder dados importantes. Da mesma forma, é descompactado mantendo seu conteúdo original. Já a compactação com perdas, no qual pode ocorrer a perda parcial de dados, é realizado para atingir altas taxas de compactação. É um tipo específico de compactação direcionado para tipos de arquivos especiais, como músicas e imagens ou arquivos que envolvam a percepção humana. Esta ideia está baseada no fato de o ouvido humano não ser tão sensível a determinados sons e frequências, possibilitando a perda de alguns sons pouco perceptíveis ao compactar uma música, por exemplo. Uma compactação do tipo “ogg” ou “mp3” utiliza-se destes recursos. Esta diferença no som só seria notada se a música fosse reproduzida em um equipamento de alta qualidade. Portanto, para o dia a dia, você estará ouvindo a mesma música e economizando muito espaço em disco. Da mesma forma, podemos exemplificar a compactação com perdas, quando falamos de imagens do tipo “jpg”. Imagine que você tem uma imagem com 60.000 tons 45 de cor diferentes, mas alguns tons são muito próximos de outros, então o compactador resume para 20.000 tons de cor e a imagem terá 1/3 do tamanho original e o nosso olho conseguirá entender a imagem sem problemas e quase não perceberá a diferença. Apesar das vantagens na taxa de compactação com perdas, este processo deve ser evitado em casos de compactação de textos ou programas que em caso de alteração, pode se tornar ilegível ou, no caso de programas, pode não rodar no sistema. Da mesma forma não podemos ter perdas quando compactamos imagens ou músicas que serão utilizadas em processos posteriores de masterização, mixagem ou impressão em alta definição. Extensões de arquivos compactados Os arquivos compactados possuem extensões que identificam o tipo de arquivo e, consequentemente, qual oprograma necessário para trabalhar com aquele tipo de arquivo. São dezenas de extensões que podem ser adicionadas ao nome do arquivo no momento da compactação. Por exemplo, se um arquivo é compactado pelo programa GZIP, seu nome receberá a extensão “.gz”. O mesmo processo acontece, só que de forma contraria, quando ocorre a descompactação. Neste caso, a extensão é retirada do arquivo. Abaixo segue uma listagem de extensões mais usadas e os programas correspondentes: .gz - Arquivo compactado pelo programa gzip. Use o mesmo programa gzip para descompactar o arquivo. .bz2 - Arquivo compactado pelo programa bzip2. Da mesma forma, use o programa bzip2 para descompactá-lo. .Z – Extensão do arquivo compactado pelo programa compress. Use o programa uncompress para descompactar o arquivo. 46 .zip – Extensão do arquivo compactado pelo programa zip. Use o programa unzip para descompactá-lo. .rar - Arquivo compactado pelo programa rar. Use o mesmo programa rar para descompactá-lo. .tar.gz - Arquivo compactado pelo programa gzip no utilitário de arquivamento tar. Pode ser abreviada pelo termo “.tgz”. Para realizar a descompactação, poderá usar o gzip e depois o tar ou somente o programa tar usando a opção -z. .tar.bz2 - Arquivo compactado pelo programa bzip2 no utilitário de arquivamento tar. Para descompactá-lo, você pode usar o bzip2 e depois o tar ou somente o programa tar usando a opção -j. .tar.Z - Arquivo compactado pelo programa compress no utilitário de arquivamento tar. Para descompactá-lo, poderá usar o uncompress e depois o tar ou somente o programa tar usando a opção -Z. Extensão GZIP Por ser utilizada pela maioria dos programadores, acabou por se tornar um compactador padrão do GNU/Linux. Essa extensão possui ótima taxa de compactação e velocidade. Deve ser digitado da seguinte forma: gzip (arquivo) (opções) (arquivo) - Define quais arquivos serão compactados pelo gzip. Caso seja usado o sinal “-“, será assumido a entrada padrão. Você poderá compactar vários arquivos de uma vez, utilizando a ferramenta Curingas, como vimos anteriormente. (opções) -d, --decompress [arquivo] - Descompacta um arquivo. 47 -f - Força a compactação, compactando até mesmo links. -l [arquivo] - Lista o conteúdo de um arquivo compactado pelo gzip. -r - Compacta diretórios e sub-diretórios. -c [arquivo] - Descompacta o arquivo para a saída padrão. -t [arquivo] - Testa o arquivo compactado pelo gzip. -[num], --fast, --best - Ajustam a taxa de compactação/velocidade da compactação. Quanto melhor for a taxa de compactação, menor será a velocidade e vice versa. A opção --fast permite uma compactação rápida e tamanho do arquivo maior. A opção --best permite uma melhor compactação e uma velocidade menor. Já o uso da opção -[número] permite especificar a forma de compactação, através dos números 1 (menor compactação) a 9 (melhor compactação). Muito bom para equilibrar taxa de compactação e velocidade, principalmente em computadores menos potentes. Exemplos: gzip -9 texto.txt - Compacta o arquivo texto.txt usando a compactação máxima (compare o tamanho do arquivo compactado usando o comando ls -la). gzip -d texto.txt.gz - Descompacta o arquivo texto.txt. gzip -c texto.txt.gz - Descompacta o arquivo texto.txt para a tela. gzip -9 *.txt - Compacta todos os arquivos que terminam com .txt. gzip -t texto.txt.gz - Verifica o arquivo texto.txt.gz. A extensão gzip é o preferido dos programadores porque também reconhece arquivos compactados por outros programas, como zip, compress, compress -H e pack. Extensão ZIP Essa extensão é compatível com o pkzip (do DOS) e trabalha com arquivos de extensão .zip. Ao comparar com o gzip, verá que essa extensão apresenta uma ótima taxa de compactação e velocidade no processamento dos arquivos compactados. Deve ser digitado da seguinte forma: zip [opções] [arquivo-destino] [arquivos-origem] 48 (arquivo-destino) - Nome do arquivo compactado que será gerado. (arquivos-origem) – Arquivos ou Diretórios que serão compactados. (opções) -r - Compacta arquivos e sub-diretórios. -e - Permite encriptar o conteúdo de um arquivo .zip através de senha. A senha será pedida no momento da compactação. -f - Substitui um arquivo compactado existente dentro do arquivo .zip somente se a versão for mais nova que a atual. Não acrescenta arquivos ao arquivo compactado. Deve ser executado no mesmo diretório onde o programa .zip foi executado anteriormente. -F - Repara um arquivo .zip que foi danificado. -[NUM] - Ajusta a qualidade/velocidade da compactação. Da mesma forma que o gzip, pode ser especificado um número de 1 a 9, onde o número 1 representa mínima compactação e máxima velocidade e o número 9 representa uma melhor compactação e menor velocidade. -i [arquivos] - Compacta somente os [arquivos] especificados. -j - Se especificado, não armazena caminhos de diretórios. -m - Apaga os arquivos originais após a compactação. -T [arquivo] - Procura por erros em um arquivo .zip. Caso sejam detectados problemas, utilize a opção -F para corrigi-los. -y - Armazena links simbólicos no arquivo .zip. Por padrão, os links simbólicos são ignorados durante a compactação. -k [arquivo] - Modifica o [arquivo] para ter compatibilidade total com o pkzip do DOS. -l - Converte saltos de linha UNIX (LF) para o formato CR+LF (usados pelo DOS). Use esta opção com arquivos Texto. -ll - Converte saltos de linha DOS (CR+LF) para o formato UNIX (LF). Use esta opção com arquivos texto. -n [extensão] - Não compacta arquivos identificados por [extensão]. É armazenado sem compactação no arquivo .zip. Muito útil para uso com arquivos já compactados. Caso sejam especificadas diversas extensões de arquivos, elas devem ser separadas por : “-“. Por exemplo, zip -n .zip:.tgz arquivo.zip *.txt. 49 -q - Não mostra mensagens durante a compactação do arquivo. -u – Atualiza ou adiciona arquivos ao arquivo .zip. -X - Não armazena detalhes de permissões, UID, GID e datas dos arquivos. -z - Permite incluir um comentário no arquivo .zip. Caso o nome de arquivo de destino não termine com .zip, esta extensão será automaticamente adicionada. Para a descompactação de arquivos .zip no GNU/Linux, é necessário o uso do utilitário unzip. Exemplos: zip textos.zip *.txt - Compacta todos os arquivos com a extensão .txt para o arquivo textos.zip (compare o tamanho do arquivo compactado digitando ls -la). zip -r textos.zip /usr/*.txt - Compacta todos os arquivos com a extensão .txt do diretório /usr e sub-diretórios para o arquivo textos.zip. zip -9 textos.zip * - Compacta todos os arquivos do diretório atual usando a compactação máxima para o arquivo textos.zip. zip -T textos.zip - Verifica se o arquivo textos.zip contém erros. Extensão UNZIP Essa extensão é utilizada para descompactar arquivos compactados pela extensão .zip. Da mesma forma que a extensão .zip, este programa também é compatível com arquivos compactados pelo pkzip do DOS. Deve ser digitado da seguinte forma: unzip [opções] [arquivo.zip] [arquivos-extrair] [- d diretório] (arquivo.zip) – É o arquivo que deseja descompactar. Podem ser usados curingas para especificar mais de um arquivo para ser descompactado de uma vez. (arquivos-extrair) - Nome dos arquivos, sempre separados por espaço, que serão descompactados do arquivo .zip. Caso não haja especificação desses arquivos, o programa vai assumir o símbolo *, no qual vai realizar a descompactação de todos os arquivos. (-d diretório) - Diretório escolhido para que os arquivos sejam descompactados. Caso não for especificado, os arquivos serão descompactados no diretório atual. 50 (opções) -c - Descompacta os arquivos para stdout (saída padrão) ao invés de criar arquivos. Os nomes dos arquivostambém são mostrados. -p – Neste caso, descompacta os arquivos para stdout (saída padrão) ao invés de criar arquivos. Porém, os nomes dos arquivos não são mostrados. -f - Descompacta somente arquivos que existam no disco e, mais novos que os atuais. -l - Lista os arquivos existentes dentro do arquivo .zip. -M - Efetua uma pausa a cada tela de dados durante o processamento (a mesma função do comando more). -n - Nunca substitui arquivos já existentes. Se um arquivo existe ele é pulado. -o - Substitui arquivos existentes sem perguntar. Tem a função contrária a opção -n. -P [SENHA] - Permite descompactar arquivos .zip usando a [SENHA]. Atenção: Quando se usa a opção de senha, você permite que qualquer usuário conectado em seu sistema possa ver a senha digitada na linha de comando. -q - Não mostra mensagens. -t - Verifica o arquivo .zip em busca de erros. -u - Idêntico a opção -f só que também cria arquivos que não existem no diretório. -v - Mostra mais detalhes sobre o processamento do unzip. -z - Mostra somente o comentário existente no arquivo. Por padrão o unzip também descompacta sub-diretórios caso o arquivo .zip tenha sido gerado com zip -r. Exemplos: unzip texto.zip - Descompacta o conteúdo do arquivo texto.zip no diretório atual. unzip texto.zip carta.txt - Descompacta somente o arquivo carta.txt do arquivo texto.zip. unzip texto.zip -d /tmp/texto - Descompacta o conteúdo do arquivo texto.zip para o diretório /tmp/texto. unzip -l texto.zip - Lista o conteúdo do arquivo texto.zip. unzip -t texto.zip - Verifica o arquivo texto.zip. 51 Extensão TAR A extensão tar, foge dos padrões de compactação por se tratar de um programa de arquivamento, ou seja, ele não é um compactador, e sim um arquivador. Na verdade, esse programa junta vários arquivos em um só. No entanto, nada impede que ele seja usado em conjunto com um compactar (como o gzip ou zip) para arquivar os arquivos já compactados. O tar também pode ser usado para cópias de arquivos especiais ou dispositivos do sistema. É comum encontrar arquivos com a extensão .tar, .tar.gz, .tgz, .tar.bz2, .tar.Z, .tgZ, o primeiro é um arquivo normal gerado pelo tar e todos os outros são arquivos gerados através do tar junto com um programa de compactação gzip (.gz), bzip2 (.bz2) e compress (.Z). Deve ser digitado da seguinte forma: tar [opções] [arquivo-destino] [arquivos-origem] (arquivo-destino) - É o nome do arquivo de destino. Normalmente especificado com a extensão .tar em casos em que ocorra apenas o arquivamento. Se houver compactação também, a extenção muda para .tar.gz/.tgz ou outras. (arquivos-origem) - Especifica quais arquivos/diretórios serão arquivados/compactados. (opções) -c, --create - Cria um novo arquivo .tar. -t, --list - Lista o conteúdo de um arquivo .tar. -u, --update - Atualiza arquivos compactados no arquivo .tar. -f, --file [HOST:]F - Usa o arquivo especificado para gravação ou o dispositivo /dev/rmt0. -j, --bzip2 - Usa o programa bzip2 para processar os arquivos do tar. -l, --one-file-system - Não processa arquivos em um sistema de arquivos diferentes de onde o tar foi executado. -M, --multi-volume - Cria/lista/descompacta arquivos em múltiplos volumes. O uso de arquivos em múltiplos volumes permite que uma grande cópia de arquivos que não cabe em um disquete, por exemplo, seja feita em mais de um disquete. -o - Grava o arquivo no formato VT7 ao invés do ANSI. 52 -O, --to-stdout - Descompacta arquivos para a saída padrão ao invés de gravar em um arquivo. --remove-files - Apaga os arquivos de origem após serem processados pelo tar. -R, --record-number - Mostra o número de registros dentro de um arquivo tar em cada mensagem. --totals - Mostra o total de bytes gravados com a opção --create. -v - Mostra os nomes dos arquivos enquanto são processados. -V [NOME] - Inclui um [NOME] no arquivo tar. -W, --verify - Tenta verificar o arquivo gerado pelo tar após gravá-lo. X - Extrai arquivos gerados pelo tar. -X [ARQUIVO] - Tenta apagar o [ARQUIVO] dentro de um arquivo compactado .tar. -Z - Usa o programa compress durante o processamento dos arquivos. -z - Usa o programa gzip durante o processamento dos arquivos. --use-compress-program [PROGRAMA] - Usa o [PROGRAMA] durante o processamento dos arquivos. Ele deve aceitar a opção -d. -[0-7][lmh] - Especifica a unidade e sua densidade. Observação importante: A extensão precisa ser especificada no arquivo de destino para a identificação correta: Caso seja usada a opção -j para compactação, a extensão deverá ser .tar.bz2. Caso seja usada a opção -z para compactação, a extensão deverá ser .tar.gz ou .tgz. Caso seja usada a opção -Z para a compactação, a extensão deverá ser .tar.Z ou .tgZ. Esta observação é relevante, uma vez que saber qual compactador auxiliou o tar na compactação, será necessário no momento de descompactar este arquivo. 53 Exemplos: tar -cf index.txt.tar index.txt - Cria um arquivo chamado index.txt.tar que armazenará o arquivo index.txt. Você pode notar digitando ls -la que o arquivo index.txt foi somente arquivado (sem compactação), isto é útil para juntar diversos arquivos em um só. tar -xf index.txt.tar - Desarquiva o arquivo index.txt criado pelo comando acima. tar -czf index.txt.tar.gz index.txt - O mesmo que o exemplo de arquivamento anterior, só que agora é usado a opção -z (compactação através do programa gzip). Você agora pode notar digitando ls -la que o arquivo index.txt foi compactado e depois arquivado no arquivo index.txt.tar.gz (você também pode chamá-lo de index.txt.tgz que também identifica um arquivo .tar compactado pelo gzip). tar -xzf index.txt.tar.gz - Descompacta e desarquiva o arquivo index.txt.tar.gz criado com o comando acima. gzip -dc index.tar.gz | tar -xf - - Faz o mesmo que o comando acima só que de uma forma diferente: Primeiro descompacta o arquivo index.txt.tar.gz e envia a saída do arquivo descompactado para o tar que desarquivará o arquivo index.txt. tar -cjf index.txt.tar.bz2 index.txt - Arquiva o arquivo index.txt em index.txt.tar.bz2 compactando através do bzip2 (opção -j). tar -xjf index.txt.tar.bz2 - Descompacta e desarquiva o arquivo index.txt.tar.bz2 criado com o comando acima. bzip2 -dc index.txt.tar.bz2 | tar -xf - - Faz o mesmo que o comando acima só que de uma forma diferente: Primeiro descompacta o arquivo index.txt.tar.bz2 e envia a saída do arquivo descompactado para o tar que desarquivará o arquivo index.txt. tar -t index.txt.tar - Lista o conteúdo de um arquivo .tar. tar -tz index.txt.tar.gz - Lista o conteúdo de um arquivo .tar.gz. Extensão BZIP2 A extensão bzip2, surgiu a pouco tempo e vem sendo usada cada vez mais por conseguir atingir uma taxa de compactação em arquivos texto muito melhor que os demais compactadores disponíveis no mercado. Por outro lado, sua velocidade de compactação também é menor; quase duas vezes mais lento que o gzip. A extensão dos arquivos compactados pelo bzip2 é a .bz2. 54 Deve ser digitado da seguinte forma: bzip2 [opções] [arquivos] (arquivos) - Especifica quais arquivos serão compactados pelo bzip2. Caso seja usado um sinal de “-“, será assumido a entrada padrão. Curingas podem ser usados para especificar vários arquivos de uma só vez. (Opções) -d, --decompress [arquivo] - Descompacta um arquivo. -f - Força a compactação, compactando até mesmo links. -l [arquivo] - Lista o conteúdo de um arquivo compactado pelo bzip2. -r - Compacta diretórios e sub-diretórios. -c [arquivo] - Descompacta o arquivo para a saída padrão. -t [arquivo] - Testa o arquivo compactado pelo bzip2. -[num], --fast, --best – Da mesma forma que o gzip, ajustam a taxa de compactação/velocidade da compactação. Quanto melhor for a taxa de compactação, menor será avelocidade e vice versa. A opção --fast permite uma compactação rápida e tamanho do arquivo maior. A opção --best permite uma melhor compactação e uma velocidade menor. Já o uso da opção -[número] permite especificar a forma de compactação, através dos números 1 (menor compactação) a 9 (melhor compactação). Muito bom para equilibrar taxa de compactação e velocidade, principalmente em computadores menos potentes. Exemplos: bzip2 -9 texto.txt - Compacta o arquivo texto.txt usando a compactação máxima (compare o tamanho do arquivo compactado usando o comando ls -la). bzip2 -d texto.txt.bz2 - Descompacta o arquivo texto.txt. bzip2 -c texto.txt.bz2 - Descompacta o arquivo texto.txt para a saída padrão (tela). bzip2 -9 *.txt - Compacta todos os arquivos que terminam com .txt. bzip2 -t texto.txt.bz2 - Verifica o arquivo texto.txt.bz2. 55 Extensão RAR O rar é um compactador que possui versões tanto para GNU/Linux, quanto para DOS, Windows, OS/2 e Macintosh. Apesar de ser vendido comercialmente, é possível encontrar versões Shareware (uso limitado), podendo ser muito útil em algumas situações. Deve ser digitado da seguinte forma: rar [ações] [opções] [arquivo-destino.rar] [arquivos-origem] (arquivo-destino.rar) - É o nome do arquivo de destino. (arquivos-origem) - Arquivos que serão compactados. Podem ser usados curingas para especificar mais de um arquivo. (ações) a - Compacta arquivos. x - Descompacta arquivos. d - Apaga arquivos especificados. t - Verifica o arquivo compactado em busca de erros. c - Inclui comentário no arquivo compactado. r - Repara um arquivo .rar danificado. l - Lista arquivos armazenados no arquivo compactado. u - Atualiza arquivos existentes no arquivo compactado. m - Compacta e apaga os arquivos de origem (move). e - Descompacta arquivos para o diretório atual. p - Mostra o conteúdo do arquivo na saída padrão. rr - Adiciona um registro de verificação no arquivo. s - Converte um arquivo .rar normal em arquivo auto-extráctil. Arquivos auto-extrácteis são úteis para enviar arquivos a pessoas que não tem o programa rar. Basta executar o arquivo e ele será automaticamente descompactado (usando o sistema operacional que foi criado). Note que esta opção requer que o arquivo default.sfx esteja presente no diretório home do usuário. Use o comando find para localizá-lo em seu sistema. 56 (opções) o+ - Substitui arquivos já existentes sem perguntar. o- - Não substitui arquivos existentes. sfx - Cria arquivos auto-extrácteis. y - Assume sim para todas as perguntas. r - Inclui sub-diretórios no arquivo compactado. x [ARQUIVO] - Processa tudo menos o [ARQUIVO]. Pode ser usado curingas. v [TAMANHO] - Cria arquivos com um limite de tamanho. Por padrão, o tamanho é especificado em bytes, mas o número pode ser seguido de k (kilobytes) ou m (megabytes). Exemplo: rar a -v1440k ... ou rar a -v10m. p [SENHA] - Inclui senha no arquivo. m [0-5] - Ajusta a taxa de compactação/velocidade de compactação. O valor “0” não faz compactação alguma, tornando o processo mais rápido. Neste caso, somente armazena os arquivos. Já o valor “5” é o nível que usa mais compactação e torna o processo mais lento. ed - Não inclui diretórios vazios no arquivo. isnd - Ativa emissão de sons de alerta pelo programa. ierr - Envia mensagens de erro para stderr. inul - Desativa todas as mensagens. ow - Salva o dono e grupo dos arquivos. ol - Salva links simbólicos no arquivo ao invés do arquivo físico que o link faz referência. mm[f] - Usa um método especial de compactação para arquivos multimídia (sons, vídeos, etc). Caso for usado mmf, força o uso do método multimídia mesmo que o arquivo compactado não seja deste tipo. Exemplos: rar a texto.rar texto.txt - Compacta o arquivo texto.txt em um arquivo com o nome texto.rar. rar x texto.rar - Descompacta o arquivo texto.rar. 57 rar a -m5 -v1400k textos.rar * - Compacta todos os arquivos do diretório atual, usando a compactação máxima no arquivo textos.rar. Note que o tamanho máximo de cada arquivo é 1440 para ser possível gravá-lo em partes, para disquetes. rar x -v -y textos.rar - Restaura os arquivos em múltiplos volumes criados com o processo anterior. Todos os arquivos devem ter sido copiados dos disquetes para o diretório atual antes de prosseguir. A opção -y é útil para não precisarmos responder yes a toda pergunta que o rar fizer. rar t textos.rar - Verifica se o arquivo textos.rar possui erros. rar r textos.rar - Repara um arquivo .rar danificado. Encerramento Caro amigo, Chegamos ao fim de nosso curso com a certeza de que conseguimos transmitir uma boa noção sobre os conceitos e técnicas para se trabalhar com Linux. Nossa torcida é para que este curso lhe ajude a desenvolver trabalhos usando esta ferramenta que vem crescendo e se desenvolvendo a cada dia e, quem sabe, seja o início de uma grande carreira de programador. Boa Sorte e Sucesso!
Compartilhar