Linux Comandos e Utilitários Linux 1 Introdução Quem não gosta de uma interface gráfica, fácil e intuitiva, bonita, colorida e bem mais agradável do que o bruto modo texto?. Mas para quem usa sistemas operacionais, é bem interessante se ambientar no modo texto do sistema, pois nem sempre em todas as situações, poderemos contar com a interface “barbada” do mouse e das janelas do sistema. Alguns sistemas operacionais ambientam-se graficamente desde a sua instalação, mas não são todos os sistemas, e um profissional bem preparado, deve ter familiaridade com todas as plataformas independentemente se forem em modo texto ou em modo gráfico. Nos sistemas Linux, a interface gráfica nasceu a bem pouco tempo, antes disso, quando do seu nascimento e desenvolvimento, era modo texto puro e linhas de comando com códigos pouco amistosos, onde uma simples tarefa a ser executada pelo sistema operacional, era executada apenas por seu desenvolvedor, que usava linhas de códigos nativos, muitas vezes longos e complicados, e nada atrativos ao usuário final, como faz a Microsoft em seu sistema operacional. A própria estória do Linux, em seu berço, e seus idealizadores e principais colaboradores, mestres na arte da programação, conheciam em minúcias as linhas de código, nas mais variadas linguagens de programação, e isso se refletiu em um sistema operacional mais robusto, mais confiável, com recursos jamais igualados pelos outros sistemas, mas com a desvantagem de ser fora do alcance de um usuário leigo em linhas de código e linguagens de programação. Com o passar do tempo, e com o aumento da popularidade e do número de colaboradores implementando seu código-fonte, o sistema Linux se ramificou, em muitos braços, em muitas correntes, e algumas dessas correntes adotaram a interface gráfica como forma de auxilio e atrativo ao usuário, tornando mais fácil e ao alcance de um usuário menos acostumado às linhas de comando, a operar com o sistema operacional Linux. Shell É o programa que permite ao usuário interagir com o sistema operacional, através de comandos digitados via teclado. Como parâmetro, no DOS (Disk Operating System) o Shell era o utilitário “command.com”, que permitia executar alguns comandos de gerenciamento do sistema, como por exemplo o dir, o cd, o md, etc... No Linux, o Shell mais usado é chamado de “Bash”. Ele oferece vários recursos que tem por finalidade facilitar ao usuário o gerenciamento do sistema e mesmo de uma rede. O Bash, nada mais é do que um interpretador de comandos, um tradutor, entre o sistema operacional e o usuário. O shell script é uma linguagem de programação interpretada, usada em vários sistemas operacionais. Na linha de comando do Shell, podemos utilizar diversos comandos, um após outro, ou mesmo combiná-los em uma mesma linha. Se colocarmos diversas linhas de comandos em um arquivo texto simples, teremos em mãos um Shell Script, ou um script em shell, já que Script é uma descrição geral de qualquer programa escrito em linguagem interpretada, ou seja, não compilada. Outros exemplos de linguagens para scripts são o php, perl, python, javascript e muitos outros. Podemos então ter um script em php, um script perl e assim em diante. Ilustração 1: Bash em execução. 2 Comandos para a localização de arquivos São comandos, em shell, ou seja, linha de comando, que utilizamos para localizar e gerenciar os arquivos no diretório. Abaixo seguem alguns comandos mais usados e seus respectivos exemplos, bem como a correta sintaxe de referido comando. Vale lembrar que todos os comandos são executados na linha de comando do linux (console): 1. cat Mostra o conteúdo de um arquivo ou binário. Exemplo: cat /usr/doc/copyright/GPL 2. tac Mostra o conteudo de um arquivo ou binário, como o Cat, mas na ordem inversa. Exemplo: tac /usr/doc/copyright/GPL 3. rm Apaga arquivos. Também pode ser utilizado para apagar diretórios e sub-diretórios vazios ou que contenham arquivos. rm teste.txt - Apaga o arquivo teste.txt no diretório atual 4. find Procura por arquivos ou diretórios no disco. Exemplo: find / -name grep -maxdepth 3 - Procura no diretório raíz e sub-diretórios até o 3o. nível, um arquivo/diretório chamado grep. 5. grep Procura por um texto dentro de um arquivo ou no dispositivo de entrada padrão. Exemplo: grep "capitulo" texto.txt, ps ax|grep inetd, grep "capitulo" texto.txt -A 2 -B 2 6. sort Organiza as linhas de um arquivo de texto ou do dispositivo padrão. sort texto.txt - Organiza o arquivo texto.txt em ordem crescente. 7. tail Mostra as linhas finais de um arquivo. Exermplo: tail teste.txt, tail -n 20 teste.txt 8. cp Usado para copiar os arquivos. Exemplo: cp teste.txt teste1.txt 9. mv Move ou renomeia arquivos e diretórios. O processo é semelhante ao do comando cp mas o arquivo de origem é apagado após o término da cópia . Exemplo: mv teste.txt teste1.txt 10. clear Limpa a tela e posiciona o cursor no canto superior esquerdo da tela. Exemplo: clear 11. df Mostra o espaço livre e ocupado de cada partição. Exemplo: df [partição] 12. free Mostra a quantidade livre de memória RAM. Exemplo: free [opções] 13. ls Lista os arquivos de um diretório. Exemplo: ls [opções] 3 14. who Mostra quem está atualmente conectado no computador. Este comando lista os nomes de usuários que estão conectados em seu computador, o terminal e data da conexão. Exemplo: who [opções] 15. telnet Permite acesso a um computador remoto. É mostrada uma tela de acesso correspondente ao computador local onde deve ser feita a autenticação do usuário para entrar no sistema. Muito útil, mas deve ser tomado cuidados ao disponibilizar este serviço para evitar riscos de segurança. Exemplo: telnet [opções] [ip/dns] [porta] 16. ftp Permite a transferência de arquivos do computador remoto/local e vice versa. O “file transfer protocol” é o sistema de transmissão de arquivos mais usado na Internet. É requerida a autenticação do usuário para que seja permitida a conexão. Muitos servidores ftp disponibilizam acesso anônimo aos usuários, com acesso restrito. Exemplo: ftp ftp.prontomicro.com.br 17. talk Inicia conversa com outro usuário em uma rede local ou Internet. Talk é um programa de conversação em tempo real onde uma pessoa vê o que a outra escreve. Exemplo: talk [usuario@host] 18. passwd Muda a senha de usuario ou grupo. Muito util quando não sabemos a senha de root. Exemplo: passwd root Comandos para manipulação de texto 1. Vi Programa criado por Bill Joy, em 1976. O nome é uma forma abreviada de Visual. Em 1991 foi criado o editor VIM. Uma derivação melhorada do Vi. Para chamar o editor usa a seguinte sintaxe : Vi [arquivo]. 4 Comandos mais usados no Vi Comandos mais usados Inserção de caracteres * i - insere texto antes do caractere atual. * I - insere texto no início da linha atual. * a - insere texto após o caractere atual. * A - insere texto no final da linha atual. * o - abre uma linha abaixo da atual e insere texto nela. * O - abre uma linha acima da atual e insere texto nela. Observação: Para sair do modo de inserção de caracteres, pressione <ESC>. Exclusão de caracteres * <DEL> - exclui a letra anterior ao cursor (depende da configuração). * x - exclui a letra sob o cursor. * nx - exclui as próximas n letras. * dw - exclui o restante da palavra atual (a partir do cursor). * ndw - exclui as n próximas palavras. * dd - exclui a linha atual. * ndd - exclui n linhas a partir da atual. * u - desfazer. Restaura o que foi apagado por último ou apaga o que foi inserido por último. Substituição de caracteres * s - apaga a letra atual e entra no modo de inserção. * S - apaga o conteúdo da linha atual e entra no modo de inserção. * r - substitui a letra atual (não entra no modo de inserção). * R - entra no modo de substituição (sai com <ESC>). * ~ - inverte a caixa da letra atual (troca maiúscula por minúscula e vice-versa). * . - repete a última alteração. Movimentação de cursor Em algumas dessas situações as setas também funcionam. * j - uma linha para baixo * k - uma linha para cima * h - um caracter para a esquerda * l - um caracter para a direita 5 * b - volta para o início da palavra. * w - avança para a próxima palavra. * 0 - início da linha * $ - fim da linha * nG - vai para a linha n (0G ou G vai para a última linha). * % - usado com parênteses, colchetes e chaves para achar o par correspondente. * +n - vai n linhas para baixo. * -n - vai n linhas para cima. Busca de palavras * /palavra - procura palavra a partir da posição atual. * ?palavra - procura palavra no sentido contrário (na direção do começo do arquivo). * n - procura próxima ocorrência da última palavra procurada (na mesma direção em que foi buscada). • # - destaca todas as ocorrências iguais à palavra onde o cursor está posicionado. Operações com buffers * yy ou Y - copia a linha inteira. * nyy ou nY - copia n linhas. * ndd - apaga n linhas (a partir da atual). Elas poderão ser recolocadas com os comandos p e P. * p - coloca após a linha atual a última linha copiada ou apagada. * P - coloca antes da linha atual a última linha copiada ou apagada. Operações de bloco * :'a,'b[operação] - realiza a operação no bloco contido entre as marcas a e b. * :d - exclui a linha atual (útil como operação de blocos). * :s/string1/string2/ - substitui string1 por string2. * mx - marca a posição atual como x (pode ser usada qualquer letra do alfabeto). • `x - vai para a posição previamente marcada como x. Para ler ou escrever o arquivo (ou parte dele) usam-se os comandos: * :r arquivo - inserir o conteúdo do arquivo na posição atual do arquivo que está sendo editado. * :w - salva alterações. * :w abc - grava arquivo com o nome abc. * :q - sai se o arquivo não foi modificado. * :q! - sai descartando quaisquer alterações não gravadas. 6 * :wq - sai, salvando o arquivo editado. • ZZ - sai, salvando o arquivo editado. Imagem exemplo do editor VIM: Ilustração 3: Exemplo do editor VIM para o console do Linux-Unix. 2. Less O comando less do sistema operacional Unix serve para mostrar arquivos texto. Possui a capacidade de exibir o arquivo de maneira paginada, com opção de rolagem para trás e para frente. Como não necessita ler todo o arquivo de entrada antes de exibi-lo, consegue maior desempenho comparado a outros visualizadores e editores quando manipulam arquivos grandes. O uso mais simples é executar a ferramenta com o nome do arquivo ou o caminho e nome dele como argumento. Enquanto less visualiza o arquivo é possível fazer buscas dentro do mesmo através de alguns comandos. Se a saída de less é redirecionada para um arquivo ou encadeamento, ele passa a executar de maneira análoga ao cat. 3. Emacs Este editor de textos tem algumas características um pouco diferentes daquelas dos editores que conhecemos, mas adota uma filosofia muito utilizada no Linux. Ele trabalha com uma janela onde é digitado o texto e outra onde são digitados comandos específicos para o editor de textos. Para iniciar o editor digite na linha de comando: Exemplo: emacs [arquivo] 4. Joe Para os saudosistas do Wordperfect, esse editor implementa uma aparência semelhante ao seu predecessor. Tendo uma linha de status que fica no topo da janela, com as informações de status do arquivo, nome do arquivo, linha, coluna, hora e as teclas para se obter a ajuda, é um editor muito leve e prático. Seu sistema consiste basicamente em iniciar o editor e começar a digitar. Tem uma "janela" de ajuda que pode ficar visível durante todo o tempo ou oculta, bastando para isso 7 pressionar Ctrl-H, alternando-se o modo de exibição da "janela". 5. Mcedit De modo semelhante ao joe, este editor de textos também possui uma linha de status no topo da tela, mas, além disso, tem uma linha com as teclas de atalho de seus comandos principais no rodapé da tela. Grande parte de suas funções são acessadas via menu, que aparece ao se pressionar a tecla F9. Observe no topo da tela a linha de status: ela muda para um menu que abre as opções do editor, pelas quais você pode navegar facilmente com as setas de direção. A grande atração deste editor é que as teclas de atalho principais estão associadas às teclas “Fn”, onde n varia de 1 até 12. Para iniciar o editor digite na linha de comando: mcedit. 6. Diákonos Existem vários editores de texto para Linux, mas alguns são mais apropriados para edição de arquivos de configuração porque podem funcionar fora do ambiente gráfico, em linha de comando. Geralmente são usados o Pico, o Nano, Vi, Vim ou o Emacs. Ocorre que o Pico e o Nano são muito simplistas e o Vi, Vim e o Emacs, são complicados para o iniciante. O editor Diakonos é um caso especial, é um editor elaborado na Grécia, em linha de comando e semi-gráfico, como o Nano. Ocorre que ele é mais bonito, muito mais customizável que o Nano, inclusive as telas, e é tão intuitivo que se comporta como se fosse um editor gráfico! Suas teclas de atalho são gerais, tipo CTRL+C, CTRL+V etc, o que torna seu uso muito prático. Existem versões .DEB para Ubuntu e Debian, versões .RPM para Mandriva e Fedora, versões para Slackware, e tem inclusive Ebuilds para Gentoo e distros baseadas no Gentoo. 7. Nano Muitas vezes você precisará editar um texto qualquer no Linux via terminal e o Nano poderá ser a solução adequada caso não queira abrir o OpenOffice Writer para isso! Ele é o "irmão gêmeo" do Pico, editor embutido no cliente de email Pine. A vantagem é que você não precisa instalar um software que não vai usar só para ter a funcionalidade de um editor de textos amigável. Com muitos Kb a menos, o Nano tem as mesmas funções. Se a sua distro for baseada em RPM, pegue-o em rpm.pbone.net. Se for Slackware, em linuxpackages.net. Caso seja Debian-like, a instalação será via APT. Ilustração 4: Editor Nano para Linux No rodapé do editor há os comandos necessários e para aprender a usá-lo. Uns 15 minutos de dedicação serão suficientes! Onde: * ^C: Ctrl + C * ^X: Ctrl + X Portanto, se você é um usuário que não quer perder muito tempo com este assunto, o Nano cairá como uma luva!!! 8 Comando APT-GET No princípio era o .tar.gz. Usuários tinham que compilar cada programa que quisessem usar em seus sistemas GNU/Linux. Quando o Debian nasceu, uma nova forma de gerenciamento de pacotes tornouse necessário. Para este sistema, foi dado o nome dpkg. Este famoso 'pacote' foi o primeiro a chegar nos sistemas GNU/Linux, enquanto antes a Red Hat decidiu criar seu próprio sistema 'RPM'. Um novo dilema rapidamente tomou conta das mentes dos criadores do GNU/Linux. Eles precisavam de um método rápido, prático e eficiente para instalar pacotes, que deveriam gerenciar automaticamente as dependências e cuidar dos arquivos de configuração ao atualizá-los. Aqui novamente, o Debian mostrou o caminho e deu vida ao APT, o 'Advanced Packaging Tool', que posteriormente foi portado pela Conectiva para uso com o RPM e foi adotado por outras distribuições." A maioria destes comandos requer sudo! Substitua "nome_pacote" ou "termo" pelo programa que você quer instalar ou procurar. 1. apt-get update - Execute este comando se você mudou o /etc/apt/sources.list ou /etc/apt/preferences. Também execute-o periodicamente para ter a certeza que sua lista de fontes fique sempre atualizada. 2. apt-get install nome_pacote - instala um novo pacote (veja também aptitude, abaixo) 3. apt-get remove nome_pacote - remove um pacote (os arquivos de configuração não são excluídos) 4. apt-get --purge remove nome_pacote - remove um pacote (os arquivo de configuração também sçao excluídos) 5. apt-get upgrade - atualiza todos os pacotes instalados 6. apt-get dist-upgrade - atualiza o sistema todo para uma nova versão 7. apt-cache search termo - procura por "termo" na lista de pacotes disponíveis 8. dpkg -l nome_pacote - lista os pacotes instalados que casam com "nome_pacote". Na prática use '*nome_pacote*', a não ser que você saiba o nome completo do pacote. 9. aptitude - O Aptitude é uma interface em modo texto para o sistema de pacotes Debian GNU/Linux e derivados. Assim como o apt-get, permite ver a lista de pacotes e realizar operações como instalação, atualização e remoção de pacotes, porém parece tratar um tanto quanto melhor a questão das dependências. 10. apt-cache showpkg pacotes - mostra informações sobre os pacotes 11. apt-cache dumpavail - mostra uma lista de pacotes disponíveis. 12. apt-cache show pacotes - mostra registros dos pacotes, igual a dpkg –print-avail. 13. apt-cache pkgnames - rápida listagem de todos os pacotes instalados no sistema. 14. dpkg -S nome_arquivo - qual foi o pacote que instalou este arquivo? 15. dpkg -L pacote - Mostra os arquivos instalados pelo pacote. 16. apt-file search NomeArquivo - Este comando procura por um pacote, não necessariamente precisa estar instalado, que inclua o arquivo passado junto a linha de comando (NomeArquivo. Ou seja, muito útil para localizar facilmente arquivos individuais dentro de pacotes que ainda nem se encontram instalados no seu sistema. 17. apt-get autoclean - Execute este comando periodicamente para excluir os arquivos .deb que não estão mais instalados no seu sistema. Pode-se ganhar uma grande quantidade de espaço em disco fazendo isso. Se você está desesperado por espaço em disco, apt-get clean é mais radical, e removerá todos os arquivos .deb, mesmo de pacotes instalados. Como na maioria dos casos você não precisa destes arquivos .deb, não hesite em usar este comando quando precisar de uns megas extras. 18. apt-cdrom add - Comando utilizado para adicionar um CD ao arquivo /etc/apt/sources.list do APT, fazendo assim com que o apt-get procure também neste CD por pacotes. 9 19. apt-get moo – Ainda não sei o porque desse comando, mas tudo bem, você ainda não mugiu hoje? Seja abençoado com os poderes da super vaca. 10