Neste capítulo estudaremos o Modo Texto do Linux, que é composto basicamente do shell e dos aplicativos que executam sobre ele.
Um shell é um interpretador de comandos que analisa o texto digitado na linha de comandos e executa esses comandos produzindo algum resultado.
O shell pode ser considerado como um ponto a partir do qual podemos iniciar todos os comandos do Linux, inclusive o modo gráfico no qual temos trabalhado até agora. Podemos efetuar as mesmas classes de aplicações que executamos até agora no modo gráfico, como, por exemplo, os editores de texto[1], e também modificar as configurações do sistema[2]. Da mesma maneira que temos várias aplicações para editores de texto, cada uma com suas funcionalidades, existem também vários shells, cada um com suas configurações e funcionalidades específicas.[3] A maior parte das diferenças existentes entre os shells mais conhecidos[4] envolve facilidade de operação e tipos de configuração.
Um exemplo é a maneira de voltar o cursor para a esquerda, que se faz no ksh utilizando-se as teclas Ctrl-H, enquanto que no bash essa movimentação é feita utilizando-se a tecla ⇐. A diferença nas teclas é um pequeno exemplo das diferenças entre esses dois shells. Isso não quer dizer que o ksh não possa ser configurado para utilizar outros tipos de teclas para a movimentação.
É bem provável que o shell que você está utilizando na sua máquina seja o bash, que é o shell mais difundido dentre os usuários de Linux. A partir de agora estudaremos mais detalhadamente esse shell.
Primeiramente precisamos entrar no modo texto do Linux. Caso você esteja utilizando o Linux em modo gráfico deverá pressionar Ctrl-Alt-F1. Onde está escrito nome_da_máquina[5] login: digite seu nome de usuário e a seguir o sistema irá solicitar a sua senha com o pedido de Password:. Digite a senha e pressione Enter. Agora você deverá estar num ponto semelhante a:
[usuário@nome_da_máquina diretório_atual] $.
Este é o seu prompt de comandos. Agora que estamos apresentados, começaremos a utilizá-lo. Mas antes disso, precisamos de um pouco de teoria.
Vamos iniciar com alguns conceitos necessários para a utilização do shell (no nosso caso o bash) e também com algumas noções sobre a organização do sistema de arquivos no Linux.
O sistema de arquivos no Linux é semelhante a uma árvore de cabeça para baixo. Temos inicialmente o diretório raiz[6], e abaixo deste a estrutura que segue na Tabela 5-1:
Tabela 5-1. Estrutura de Diretórios do Linux
Diretório |
Descrição dos arquivos que estão nesse diretório |
---|---|
/ |
Diretório raiz do sistema de arquivos. É abaixo dele que se situam todos os outros. |
/bin |
Arquivos executáveis de comandos essenciais. |
/boot |
Arquivos estáticos necessários à inicialização do sistema. |
/dev |
Arquivos de dispositivos do sistema. |
/etc |
Arquivos de configuração do sistema. |
/home |
Lugar onde ficam os diretórios locais dos usuários. |
/lib |
Arquivos de bibliotecas essenciais ao sistema, utilizadas pelos programas em /bin. |
/mnt |
Usualmente é o ponto de montagem de dispositivos na máquina. |
/proc |
Informações do kernel e dos processos. |
/root |
Diretório local do superusuário. |
/sbin |
Arquivos essenciais ao sistema. Normalmente só o superusuário tem acesso a estes arquivos. |
/tmp |
Diretório de arquivos temporários. |
/usr |
Arquivos pertencentes aos usuários. (é a segunda maior hierarquia de diretórios presente no Linux, só perdendo para o diretório raiz). |
/var |
Diretório onde são guardadas informações variáveis sobre o sistema. |
Não será necessário, por enquanto, compreender as funções de todos os diretórios enumerados acima. A idéia é fornecer uma visão global de onde estão os arquivos que serão mencionados mais adiante e aqueles que já foram vistos.
Aproveitando que estamos falando de sistema de arquivos, vamos falar de um detalhe muito importante: os nomes de arquivos no Linux são case-sensitive, ou seja, distinguem maiúsculas de minúsculas e vice-versa. Sendo assim, um nome de arquivo como: Teste é diferente de teste e também de tesTe, assim como as possíveis variações de maiúsculas e minúsculas da palavra teste.
Note bem que aqui não utilizamos extensão de arquivos, como é necessário em outros sistemas operacionais. Na realidade, no Linux esta característica "não existe" de uma maneira que limite a implementação. Observe que existem arquivos do tipo start.pl no Linux. Esse tipo de nome de arquivo é perfeitamente possível pelo fato de os nomes de arquivos poderem ter até 255 caracteres, independendo de quais sejam os caracteres. Ou seja, as extensões não existem como forma limitante do nome do arquivo, elas são parte do nome do arquivo. Alguns aplicativos utilizam as extensões para poder manipular os arquivos, ou seja, as extensões estão presentes, mas como parte do nome do arquivo e não como um ítem obrigatório.
Dica: No Linux existe um recurso chamado de Tab Completion muito interessante. Quando você está digitando um comando ou nome de arquivo muito longo basta que você digite os primeiros caracteres desse comando e aperte a tecla Tab que o shell se encarrega de completar o resto do nome. Nem todos os nomes podem ser completados até o final pelo fato de existirem outras opções no processo de complementação. Então o shell pára de completar e emite um bip avisando que não conseguiu completar totalmente a sentença. Caso você aperte Tab novamente, o shell irá lhe mostrar as opções que você tem para completar a sentença.
O modo texto no qual entramos é composto por terminais. O que são terminais? Um terminal, ou console, é o conjunto formado pelo teclado e o monitor, que constitui o dispositivo padrão de entrada e saída de dados. Imagine o seguinte: você tem vários conjuntos de monitor e teclado que estão ligados na mesma CPU. Enquanto você está digitando um texto num desses terminais o outro está executando um processo demorado, como uma procura no disco. No Linux temos terminais virtuais que podem ser ativados e alternados pela seqüência de teclas Ctrl-Alt-Fn, onde n é um número entre um e sete. Ou seja, você tem sete terminais virtuais nos quais pode estar trabalhando ao mesmo tempo. [7] Esses terminais são muito úteis, pois você pode estar digitando um texto num terminal e lendo uma página de manual em outro. Já vimos esse mesmo sistema nos gerenciadores de janela quando alternamos entre os desktops.
Também será visto de que modo é feito o redirecionamento de entrada/saída no Linux.
O que significa redirecionar entrada e saída? No Linux não temos somente o teclado como meio de entrada de dados, pois esta pode ser dada através de um arquivo, um mouse e/ou qualquer outro dispositivo. Essa entrada pode ser direcionada para outros lugares também, como outro arquivo, o monitor, uma impressora. Esse redirecionamento é feito de diversas maneiras, utilizando-se os caracteres > e >> para redirecionar o local de saída[8] e os caracteres < e << para redirecionar a entrada. [9]
Agora que já temos uma parte da teoria necessária, vamos começar com os comandos do Linux.
Quando você entra no modo texto o shell já lhe deixa dentro de um diretório, que é o seu diretório local na máquina, também chamado de diretório home. É lá que você deverá colocar os seus arquivos, onde você tem permissão de criar, modificar e apagar seus arquivos e diretórios.
Você já conhece a estrutura de diretórios do Linux, mas ainda não sabe como sair do diretório atual; o comando cd diretório é o comando que se encarrega disto. A explicação de cd é change directory (mudar diretório). Com esse comando você pode mudar o seu diretório atual. Exemplo: cd / este comando fará com que seu diretório atual seja modificado para o diretório raiz.
Tudo bem, mas como vou saber se estou no diretório raiz? Existe um comando que lhe mostra em qual diretório você está atualmente, é o comando pwd. Esse comando indica onde você está. Um exemplo de saída do comando pwd é:
[usuario@spaceghost usuario]$ pwd |
Vamos explicar a tela anterior. A primeira parte da linha ([usuario@spaceghost usuario]$ ) também é conhecida como prompt. O nome de usuário é usuario; a máquina se chama spaceghost e o diretório corrente se chama usuario porque estou no diretório home, tudo isso está entre colchetes e com um $ no final porque foi especificado assim na variável de ambiente PS1. Esse é o padrão que vem logo após a instalação do Conectiva Linux. Certamente você verá algo semelhante a isso, mas com as suas configurações pessoais. A segunda linha indica em qual diretório você está.
Veja agora a saída do comando cd / e o que retorna o comando pwd após termos mudado de diretório:
[usuario@spaceghost usuario]$ cd / |
Agora que já estamos no diretório raiz, o que faremos? Antes de aprendermos a listar os arquivos presentes no diretório, vamos aprender a voltar rapidamente ao nosso diretório home. Para isso, basta digitarmos o comando cd sem argumentos. Com isso retornamos ao nosso diretório home; outra alternativa é digitarmos cd ~. O símbolo ~ é substituído pelo seu diretório home, não só com o comando cd, mas com todos os outros comandos do shell. Veja a saída dos comandos citados:
[usuario@spaceghost /]$ cd |
Já sabemos nos movimentar entre os diretórios, mas ainda não sabemos como listar o conteúdo desse diretório. O comando que lista os arquivos chama-se ls [opções] [arquivo]. Esse comando exibe os arquivos do diretório utilizando as opções fornecidas. Examinaremos algumas das opções mais comuns do comando ls na Tabela 5-2.
Tabela 5-2. Opções do Comando ls
Opção |
Finalidade |
---|---|
-a |
Exibe todos os arquivos, mesmo os arquivos ocultos. |
- -color |
Lista os arquivos com padrões de extensão/tipo reconhecidos com cores diferentes. |
-d |
Lista o nome do diretório em vez de seu conteúdo. |
-h |
Combinada com a opção -l, mostra os tamanhos de arquivo em formato mais fácil de ser lido. Ex: 1K, 20M, 5G. |
-l |
Lista a listagem de arquivos detalhada. |
-r |
Mostra os arquivos ordenados em ordem reversa. |
-1 |
Lista os nomes de arquivos um por linha. |
Nota: Arquivos começados com . (ponto) são considerados arquivos ocultos no Linux. Para vê-los, basta que você digite ls -a. Você verá alguns arquivos, como por exemplo:
[usuario@spaceghost usuario]$ ls -a
. .Xauthority .alias .bash_logout .bashrc .screenrc .xinitrc
.. .Xdefaults .bash_history .bash_profile .cshrc .viminfo
Existem ainda outras opções para o comando ls, mas não serão vistas aqui.
Vejamos como criar um arquivo qualquer com apenas algumas linhas de texto. O comando utilizado para isso é o cat. Inicialmente o comando cat serve para mostrar o conteúdo de um arquivo no terminal, mas iremos utilizá-lo aqui em conjunto com o redirecionador de saída >, direcionando a entrada do teclado para um arquivo.
Para criar um arquivo com o comando cat digite o seguinte:
cat> teste.txt |
[usuario@spaceghost usuario]$ cat> teste.txt |
Experimente digitar cat teste.txt; o comando cat irá lhe mostrar o conteúdo do arquivo.[10]
[usuario@spaceghost usuario]$ cat> teste.txt |
Mas esse arquivo é pequeno e cabe nas vinte e cinco linhas da tela, e se o arquivo for maior? Caso o tamanho do arquivo seja maior que o número de linhas da tela, cat irá mostrá-lo continuamente, sem parar, até que chegue ao final do arquivo. Uma alternativa que resolve o problema de parada na tela é o comando more. Este comando interrompe a exibição do arquivo quando é preenchida uma tela completa, usualmente 25 linhas, pedindo a interferência do usuário para poder continuar. Alteramos o arquivo parcialmente para que ficasse mais interessante a utilização do comando more, replicando a linha "isso é um teste ..." o suficiente para que preenchesse uma tela; na seqüência, mostramos somente a parte da tela na qual é solicitada a interação do usuário.
... |
A utilização do comando more pode ser feita digitando-se simplesmente more nome_do_arquivo . Caso você queira navegar sobre o texto do arquivo, indo acima e abaixo, more não prevê isso, prevê somente a procura de uma string dentro do texto a ser exibido. Isso quer dizer que você pode pesquisar palavras dentro do texto enquanto está utilizando o comando more. Para tanto, basta que você digite /palavra_a_ser_procurada assim que more terminar de mostrar a primeira tela. Logo que você tenha terminado de digitar a palavra que procura, more irá parar na primeira ocorrência da palavra digitada ou então retornará um aviso de que a palavra não pode ser encontrada, como abaixo:
isto é um simples teste de criação de arquivo |
Uma alternativa ao uso do comando more seria o uso do comando less que implementa as mesmas funcionalidades que more e mais algumas outras, como a possibilidade de rolar a tela para cima e para o lado quando o texto ocupa mais de oitenta colunas. A utilização dos comandos less e more se faz de maneira semelhante.
Dica: Existe uma maneira de redirecionar a saída de um comando para a entrada de outro. Esse "truque", na realidade é um comando chamado pipe e tem como sintaxe uma barra vertical |. A utilização do pipe se faz da seguinte maneira: comando1 | comando2. E o que o pipe irá fazer ? Ele irá redirecionar a saída do comando1 para a entrada do comando2. Sendo assim, você pode fazer cat teste.txt | more. Mas por que tenho que fazer isso se o more já faz a mesma coisa por mim? Nesse caso sim, mas em alguns casos você irá querer fazer isso porque não haverá outra maneira. Continue lendo e verá.
Veja a saída de um comando less para o arquivo teste.txt, que temos utilizado até agora (repare na última linha da mensagem):
isto é um simples teste de criação de arquivo |
Já temos como criar e ver um arquivo. Mas à medida que criarmos arquivos eles se tornarão numerosos e a visualização deles ficará um tanto desorganizada. Precisamos aprender a organizar esses arquivos em diretórios, de maneira que possamos separá-los obedecendo um (determinado) critério. Os comandos pertinentes a esse tipo de movimento são: mkdir e rmdir. Como os nomes dos comandos já dizem make directory e remove directory criam e apagam diretórios. Primeiro iremos fazer alguns testes com esses comandos para aprender a manipulação básica, que é muito fácil e simples.
Estando no shell digite o seguinte:
[usuario@spaceghost usuario]$ mkdir organiza |
Executando o comando ls você verá que o diretório organiza foi criado. Veja que o arquivo teste.txt aparecerá em branco e o diretório organiza estará em azul. Você pode criar mais diretórios a seu critério. Basta substituir organiza pelo nome do diretório que quiser criar.
Copiando o arquivo teste.txt para o diretório criado. O comando utilizado para copiar arquivos é chamado cp. Para invocá-lo utilizamos a seguinte sintaxe:
cp origem destino
Veja as possibilidades de origem e destino na Tabela 5-3.
Tabela 5-3. Sintaxe do Comando cp
origem |
destino |
---|---|
arquivo |
arquivo |
arquivo |
diretório |
diretório |
diretório |
Então, digitando cp teste.txt organiza teremos o arquivo teste.txt copiado para o diretório organiza. É importante deixar claro que não são essas as únicas opções do comando cp, existem outras que você poderá conhecer consultando o manual do comando. [11] Como a intenção aqui é simplesmente fornecer uma base rápida de utilização, não mostraremos todas as opções, pois caso fôssemos explicar todas as opções de todos os comandos teríamos um livro à parte.
Digitando ls organiza veremos que o arquivo teste.txt foi copiado para o diretório organiza. Temos agora duas cópias do mesmo arquivo, o que no momento não nos interessa. Como faremos para apagar o arquivo duplicado? O comando rm (remove/remover) é o responsável por apagar arquivos. Sua sintaxe é a seguinte:
rm [-opções] arquivo(s)
Para apagar o arquivo teste.txt digite:
[usuario@spaceghost usuario]$ rm teste.txt |
A seguir digite ls e veja que o arquivo não está mais lá.
[usuario@spaceghost usuario]$ ls |
Desta maneira apagamos o arquivo teste.txt. Note que NÃO há como recuperar o arquivo depois que ele for excluído. Veja que simplesmente o comando rm apaga o arquivo sem fazer perguntas, por isto você deve ter certeza do que está fazendo antes de apertar a tecla enter.
Dica: Para que o comando rm pergunte antes de apagar cada arquivo, você pode incluir a opção -i na linha de comando. Exemplo:
[usuario@spaceghost usuario]$ rm -i teste.txt
rm: remover `teste.txt'?
Vejamos agora na Tabela 5-4 algumas das opções do comando rm.
Tabela 5-4. Opções do Comando rm
Opção |
Finalidade |
---|---|
-f |
Force a remoção dos arquivos, NÃO pergunte !! |
-i |
Pergunte antes de fazer cada remoção. |
-r |
Remova recursivamente o conteúdo dos diretórios. |
-v |
Mostre o que está sendo feito. |
--help |
Mostre a mensagem de ajuda e saia. |
Depois de conhecermos as opções do comando rm veremos como apagar um diretório. Caso o diretório esteja vazio, utilizaremos o comando rmdir diretorio_a_ser_removido [12].
Nesta seção veremos os comandos básicos dos editores de texto mais utilizados no Linux. São eles:
emacs
vi
joe
mcedit
Começaremos com o editor emacs.
Dica: Para abrir arquivos com qualquer destes editores, além da maneira específica de cada editor, você pode simplesmente digitar num terminal:
editor nome_do_arquivo
Por exemplo:
emacsTeste.txt
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:
[usuario@spaceghost usuario]$ emacs |
Então você verá a tela inicial do editor que começa com uma saudação (em inglês) e com as teclas de saída do editor: desfazer, tutorial e pedido de ajuda. Experimente abrir o arquivo teste.txt, que foi criado no início do capítulo, com a seguinte seqüência de teclas: Ctrl-x-Ctrl-f. Note que na última linha da tela, que é chamada de minibuffer, aparece:
--11:---F1 *scratch* (Lisp Interaction)--L5--All----------------------- |
O local onde está a frase Find file: é chamado de minibuffer. Agora você pode começar a digitar o nome do arquivo que irá abrir para editar, no caso teste.txt. Após isso o arquivo aparecerá na parte superior da tela e sua edição poderá ser feita facilmente. Confira na Tabela 5-5 os comandos básicos deste editor.
Tabela 5-5. Teclas de Atalho do Emacs
Teclas |
Finalidade |
---|---|
Ctrl-x-Ctrl-c |
Sair do emacs. |
Ctrl-x-Ctrl-f |
Abrir arquivo. |
Ctrl-x-Ctrl-s |
Salvar o arquivo. |
Ctrl-x-Ctrl-w |
Salvar como (pergunta o nome do novo arquivo). |
Ctrl-k |
Apaga a linha corrente colocando-a no buffer. |
Ctrl-y |
Cola a última entrada colocada no buffer. |
Alt-y |
Cola a penúltima entrada colocada no buffer. Repetindo-se a seqüência, alterna-se para as entradas anteriores. |
Ctrl-x-i |
Insere arquivo no ponto onde está o cursor perguntando o nome do arquivo a ser inserido. |
Ctrl-s |
Procura o padrão de caracteres informado pesquisando do ponto onde está até o final do arquivo. Pressionando-se novamente as teclas, procura a próxima ocorrência do padrão. |
Ctrl-r |
Semelhante a Ctrl-s mas procurando do ponto onde está o cursor até o início do arquivo. |
Ctrl-x-u |
Desfaz a última ação efetuada. |
Agora que a parte básica já foi apresentada, cabe a você utilizá-lo no seu dia-a-dia. Para mais informações você pode usar o próprio tutorial do emacs digitando Ctrl-h-t.
Neste editor de textos temos dois modos principais de interação com o usuário: o modo de edição de textos e o modo comando. No modo comando são digitados os comandos para o editor de textos.
O editor inicia em modo de comandos, que pode ser acessado digitando-se a tecla esc quando estiver no modo edição de textos.
Vamos começar executando o editor e abrindo o arquivo teste.txt, como fizemos anteriormente. Para isto digite na linha de comando:
[usuario@spaceghost usuario]$ vi |
A seguir aparecerá uma tela de boas-vindas do editor, com as teclas de saída e de ajuda. Para abrir o arquivo teste.txt digite a seguinte seqüência: : - e teste.txt, para que o arquivo seja aberto. Note que ainda estamos no modo de comando. Para que possamos inserir algum texto precisamos entrar no modo de edição de textos/inserção. Para isso basta digitarmos :-i no modo de comando. Observe que as teclas digitadas são escritas na última linha da tela, que é a linha de status do editor. Agora é só começar a editar o texto.
Na Tabela 5-6 estão os comandos básicos deste editor.
Tabela 5-6. Teclas de Atalho do Vi (Modo Comando)
Teclas |
Finalidade |
---|---|
:-q |
Sair do Vi (o arquivo deve estar salvo). |
:-q-! |
Sair do Vi forçado sem salvar. |
:-w-q |
Sair do Vi salvando o arquivo que está sendo editado. |
:-e nome_do_arquivo |
Abrir arquivo nome_do_arquivo. |
:-w |
Salvar o Arquivo. |
:-w nome_do_arquivo |
Salvar o arquivo corrente como nome_do_arquivo. |
d-d |
Apaga a linha corrente colocando-a no buffer. |
p |
Cola a última entrada colocada no buffer. |
:-r nome_do_arquivo |
Insere o arquivo nome_do_arquivo no ponto onde está o cursor. |
/ |
Procura o padrão de caracteres digitado em todo o texto corrente. |
:-u |
Desfaz a última ação. |
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 pressionar Ctrl-H, alternando-se o modo de exibição da "janela".
Por ser um editor muito simples de utilizar, passaremos à nossa Tabela 5-7.
Tabela 5-7. Teclas de Atalho do Joe
Teclas |
Finalidade |
---|---|
Ctrl-c |
Sair do Editor. |
Ctrl-k e |
Abrir Arquivo. |
Ctrl-k d |
Salvar Arquivo (pergunta o nome, independente de ser novo arquivo ou não). |
Ctrl-y |
Apaga a linha corrente (não colocando ela no buffer). |
Ctrl-k r |
Insere um arquivo no ponto onde está o cursor. |
Ctrl-k f |
Procura um padrão especificado no arquivo inteiro. |
Ctrl-l |
Repete a última pesquisa efetuada. |
Ctrl-_ |
Desfaz a última ação executada. |
Ctrl-k-b |
Marca o início do bloco de texto a ser movimentado. |
Ctrl-k-k |
Marca o final do bloco de texto a ser movimentado. |
Ctrl-k-c |
Copia o bloco de texto marcado para a posição atual do cursor. |
Ctrl-k-v |
Move o bloco de texto marcado para a posição atual do cursor. |
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. Agora você está na tela inicial do mcedit; para abrir o arquivo de exemplos digite F9 e selecione o menu Arquivo->Abrir/Carregar(ou Open File) e em seguida informe o nome do arquivo que iremos abrir: teste.txt. Pronto, o arquivo teste.txt estará aparecendo na sua tela. Movimente-se por sobre ele, experimente as teclas que estão na tabela abaixo e avalie-o para seu uso.
Tabela 5-8. Teclas de Atalho do Mcedit
Teclas |
Finalidade |
---|---|
F10 |
Sair do Mcedit. |
F9 Arquivo->Abrir/Carregar |
Abrir arquivo nome_do_arquivo. |
F2 |
Salvar o Arquivo Corrente. |
F12 |
Salvar como ... (pergunta o nome do arquivo novo). |
F8 |
Apaga a linha corrente. |
F3 |
Marca o ponto inicial do bloco a ser movimentado e, repetindo-se a tecla, marca o final do bloco. |
F5 |
Copia o bloco marcado com F3 para a posição do cursor. |
F6 |
Move o bloco marcado com F3 para a posição do cursor. |
Ctrl-u |
Desfaz a última ação efetuada. |
Ao copiar um arquivo texto criado sob o sistema MS-DOS para o Linux é necessário que haja uma conversão simples de formato de fim de linha, pois o MS-DOS utiliza os caracteres CR/LF para o fim de linha (quando pressionamos enter ao final da linha) e o Linux utiliza apenas o LF. Para isso existe um programa chamado dos2unix, que faz essa conversão de maneira rápida e fácil. Abaixo veremos algumas das possíveis variações de utilização do comando.
Para converter um arquivo substituindo os caracteres de fim de linha digite:
$ dos2unix arquivo_original.txt arquivo_convertido.txt |
$ dos2unix -n arquivo_original.txt arquivo_convertido.txt |
Mais detalhes podem ser obtidos consultando-se a documentação do comando.
Até agora, vimos como movimentar e editar um arquivo de diferentes maneiras. Agora veremos como imprimir esse arquivo. Os comandos utilizados no processo de impressão de um arquivo são os seguintes:
Basicamente, o comando lpr é utilizado para enviar um arquivo para a impressora. Ele aceita várias impressoras instaladas, podendo-se utilizar outra impressora que não a padrão. A forma básica de utilização do comando é:
lpr nome_do_arquivo_a_ser_impresso |
lpr [-P nome_da_impressora] arquivo |
O comando lpq lista o status da impressora, retornando quantos arquivos estão para ser impressos e qual o estado do arquivo no início da fila. A sua utilização se faz simplesmente invocando o nome do comando no prompt.
Mas como remover da fila de impressão um arquivo que ainda não foi impresso? Para isso existe o comando lprm, que remove arquivos que estão na fila de impressão. Para utilizá-lo, é necessário primeiro descobrir o número do arquivo na fila de impressão, utilizando o comando lpq. A seguir utiliza-se o comando lprm para remover o arquivo da fila de impressão. Assim como o comando lpr possui a opção para imprimir em várias impressoras, este comando também permite que se especifique a impressora da qual desejamos retirar o arquivo. Isso é feito através da opção -PImpressora. Resumindo a sintaxe do comando lprm ficamos com:
lprm [ -P impressora ] num_do_arquivo_na_fila |
Assim como outros sistemas operacionais, no Linux também temos vários compressores de arquivos. Explicaremos agora a utilização básica de três padrões de compactação diferentes existentes no Linux.[16] São eles:
tar
gzip/bzip2
compress
Normalmente um único comando seria necessário para realizar essa tarefa, que é o comando tar[17]. Porém começaremos com o comando file, que nos permitirá identificar com qual tipo de compactação o arquivo foi criado. O comando file nos diz o tipo de arquivo: se é um arquivo texto, um arquivo binário ou um arquivo compactado e com qual compactação. Veja abaixo a saída do comando file para o arquivo teste.txt, que criamos no início do capítulo:
[usuario@spaceghost usuario]$ file teste.txt |
[usuario@spaceghost usuario]$ file t.tar |
[usuario@spaceghost usuario]$ file t2.tar.gz |
Para compactar um arquivo com o gzip utilizamos a seguinte sintaxe[19]:
gzip nome_do_arquivo |
O compactador bzip2 funciona de maneira semelhante ao gzip, diferindo no algoritmo de compactação do arquivo[20]. Veja o exemplo abaixo:
[usuario@spaceghost usuario]$ bzip2 teste.txt |
Aqui está um exemplo básico de compactação[21] de arquivo com o tar:
[usuario@spaceghost usuario]$ tar -cvfz teste.tar.gz teste.txt |
tar -- nome do comando
cvfz -- parâmetros de criação do arquivo (veja mais à frente)
teste.tar.gz -- nome do arquivo depois de compactado
teste.txt -- nome do arquivo a ser compactado
Essa é a sintaxe básica do comando tar. Existem outras maneiras de obtermos o mesmo resultado, pois o comando tar é muito versátil. Vejamos agora algumas das opções mais utilizadas na criação e extração de arquivos com o comando tar.
As opções da Tabela 5-9 são substituídas em:
tar opções arquivo.tar lista_de_arquivos
Tabela 5-9. Opções do Comando tar
Opção |
Finalidade |
---|---|
-c |
Cria um novo arquivo. |
-f |
Indica o nome do arquivo final (que será o arquivo compactado). |
-t |
Lista o conteúdo do arquivo. |
-u |
Adiciona somente arquivos com data mais recente que a do arquivo que estiver no arquivo compactado. |
-x |
Descompacta o arquivo. |
-v |
Mostra os arquivos que estão sendo processados. |
-I |
Filtra o arquivo a ser processado com bzip2/bunzip2. Necessário quando o arquivo é compactado com tar + bzip2. |
-z |
Filtra o arquivo a ser processado com gzip/gunzip. Necessário quando o arquivo é compactado com tar + gzip. |
Dica: Lembre-se de que um diretório também pode ser compactado com o comando tar. Basta especificar o nome do diretório no comando de compactação.
Normalmente precisamos continuar utilizando o terminal quando executamos um comando demorado, pois não desejamos ficar esperando que o comando termine para continuar com o trabalho. Para isso existe no Linux a opção de você colocar o processo rodando em segundo plano.
No Linux existe o seguinte conceito: podemos colocar um processo demorado executando em segundo plano e continuar o trabalho sem ter que ficar esperando que o processo termine.
Quando executamos um comando, programa ou qualquer ação, são criados números que identificam o programa que está sendo executado; cada comando e programa têm um identificador específico que é único para ele. Para que serve isso? Simples, o kernel precisa identificar o processo para executá-lo no processador.
Colocar o processo em segundo plano significa que o kernel irá executar esse processo sem que haja a intervenção direta do usuário; por exemplo, uma compactação demorada pode ser colocada em segundo plano para finalizar sem ficar ocupando um terminal. O processo da compactação é desvinculado do terminal, deixando-o livre para executar outros comandos. Ao final da compactação, a mensagem de término de processo é exibida no terminal indicando que o processo terminou.
Para colocar um processo em segundo plano basta acrescentar o símbolo & ao final da linha do comando que deseja executar em segundo plano. Existe ainda uma segunda maneira de se fazer isso. Para tanto, você deve conhecer os seguintes comandos:
O que fazem esses comandos? O comando ps é o comando que lista os processos ativos. Experimente digitar ps no seu terminal. Você verá uma tela com as seguinte características:
[usuario@spaceghost usuario]$ ps |
A sintaxe básica desses comandos é: bg numero_do_processo e fg numero_do_processo . Como vou poder executar esses comandos quando já estou executando um programa? Existe uma combinação de teclas que interrompe a execução de um processo que está rodando em foreground ou primeiro plano: digite Ctrl-z para suspender o processo e poder utilizar o comando ps seguido de bg.
Nesta seção examinaremos uma das questões que mais interessam aos usuários iniciantes de Linux: a utilização de periféricos. É recomendável que você leia antes a seção de conceitos gerais no início do livro, pois ela contém uma introdução aos conceitos que utilizaremos agora.
Agora que você já sabe o que são e como funcionam os dispositivos no Linux, estudaremos os comandos mount e umount, que são os responsáveis pela montagem dos dispositivos. Mas, antes de montar qualquer dispositivo, precisamos saber quais dispositivos estão ligados a que. Primeiramente, os arquivos que mapeiam dispositivos estão no diretório /dev da estrutura de diretórios de seu Linux. Mostraremos a seguir os dispositivos que são mais freqüentemente utilizados para montagem[24]. Temos na Tabela 5-10 os dispositivos mais usados no cotidiano, com seus respectivos periféricos.
Tabela 5-10. Periféricos
Arquivo |
Mapeia qual periférico |
---|---|
hda |
Primeiro disco rígido instalado na máquina (master). |
hdaX |
A partição X do primeiro disco rígido instalado. hda1 mapeia a primeira partição do disco. |
hdb |
O segundo disco rígido/CD-ROM instalado na máquina (slave). |
hdbX |
A partição X do primeiro disco rígido instalado. hdb1 mapeia a primeira partição do disco. |
fd0 |
O primeiro drive de disquete. |
fd1 |
O segundo drive de disquete. |
cdrom |
O drive de CD-ROM instalado na máquina (caso exista). |
Vale aqui uma lembrança: em hd?X X pode variar de acordo com o número de partições existentes no disco rígido e ? pode variar de acordo com o número de discos rígidos instalados na máquina.
Vejamos agora a sintaxe do comando mount que permite a utilização do periférico:
# mount [ -t tipo ] dispositivo diretório |
No exemplo a seguir, iremos demonstrar o processo para a montagem de um disquete formatado para Windows®:
# mount -t vfat /dev/fd0 /mnt/floppy |
Existem vários tipos de dispositivos que podem ser montados. Na Tabela 5-11 constam os tipos mais utilizados.
Tabela 5-11. Tipos de Periféricos
Tipo |
Descrição |
---|---|
vfat |
Disquete formatado para Windows®. |
ext2 |
Disquete formatado para Linux. |
ext3 |
Disquete formatado para Linux. |
iso9660 |
CD-ROM. |
Nota: É importante não remover um dispositivo (físico), como um disquete de seu drive, enquanto ele permanecer montado. Existem operações que são efetuadas quando um dispositivo é desmontado. Uma delas é a gravação de dados que possam estar no buffer de armazenamento esperando ser gravados.
Depois de montarmos um sistema de arquivos podemos utilizá-lo normalmente. Ao final da utilização do sistema de arquivos, devemos desmontá-lo para que possamos, por exemplo, remover o CD do drive. Para isso utilizamos o comando umount, que desmonta o sistema de arquivos. A sintaxe do comando umount é:
# umount dispositivo |
# umount diretório |
[usuario@spaceghost usuario]$ mdir |
As interfaces do KDE e do GNOME possuem um recurso de montagem automática. Basta que você insira a mídia para que um programa toque o CD ou mostre seus dados.
Nota: Ao inserir um CD no drive, estando na interface GNOME, é criado um ícone na área de trabalho referente ao CD que está montado no momento. Para ejetar o CD, é necessário que você clique com o botão direito do mouse esse ícone e selecione a opção Ejetar.
Você pode configurar o programa que abrirá o CD/DVD no Centro de Controle KDE. Na opção Periféricos clique em Autoinsert notification. Habilite a opção Enable autoinsert notification e marque as opções de que necessitar. Na parte inferior da tela, escreva o nome do programa que deseja configurar para abrir o respectivo tipo de mídia. Observe a Figura 5-1.
Da mesma maneira que temos um procedimento para entrar no sistema, fornecendo um nome e senha, temos que sair do sistema quando terminamos de utilizá-lo. Isso não quer dizer que precisamos desligar o computador, mas sim, que devemos sair do ambiente. No Linux modo texto temos os seguintes comandos que encerram uma seção:
logout
exit
É importante que ao final do trabalho efetuemos o logoff [26] de nosso usuário. Assim garantiremos que somente quem tem uma conta de usuário utilize o computador. Caso você queira desligar seu computador após utilizá-lo, existe uma maneira diferenciada que evita danos ao sistema de arquivos. É necessário que, como superusuário (root), você digite o seguinte comando: halt, que manda o sistema desligar. Espere um pouco enquanto o sistema estiver sendo desligado e quando aparecer a mensagem O sistema está parado você pode desligar seu computador. Existe ainda uma outra alternativa que dispensa a senha de acesso do superusuário: basta que você pressione a seguinte combinação de teclas: Ctrl-Alt-Del para que o computador execute as mesmas funções do comando halt e reinicie.
[1] |
Como emacs, vi, pico e joe, entre outros. |
[2] |
Com o linuxconf em modo texto. |
[3] |
A grande maioria dos shells implementa o mesmo conjunto básico de comandos. |
[4] |
bash, csh, ksh e zsh. |
[5] |
Aqui, nome da máquina é o nome que aparece antes da palavra login. |
[6] |
Também chamado de root. |
[7] |
Isso só é possível pelo fato de o Linux ser multitarefa. |
[8] |
A saída padrão, também chamada stdout é o terminal onde está sendo executado o comando. |
[9] |
Existem outros caracteres que complementam essa lista, entretanto, só os examinaremos no decorrer deste capítulo. |
[10] |
Lembre-se de que você pode utilizar a tecla Tab para completar o nome do arquivo. |
[11] |
Veja mais à frente como consultar o manual dos comandos. |
[12] |
O conjunto de opções -rf do comando rm apaga um diretório recursivamente sem perguntar se deseja apagar. |
[13] |
Abreviação de Line Print. |
[14] |
Abreviação de Line Print Queue. |
[15] |
Abreviação de Line Print ReMove. |
[16] |
Existem mais tipos de compactação, mas esses três são os mais comuns. |
[17] |
tar é um acrônimo para "tape archiver" |
[18] |
Foi utilizado o seguinte comando para compactar o arquivo teste.txt : bzip2 teste.txt. |
[19] |
Essa é a sintaxe básica. |
[20] |
Geralmente o compactador bzip2 compacta mais que o gzip por ter um algoritmo mais sofisticado. |
[21] |
Observe que o comando tar por si só não compacta o arquivo. Quem faz a compactação neste exemplo é o comando gzip que é invocado pela opção "z" do tar. |
[22] |
Abreviação de BackGround (Segundo Plano). |
[23] |
Abreviação de ForeGround (Primeiro Plano). |
[24] |
Caso você queira uma documentação mais detalhada de qual arquivo mapeia qual dispositivo, esta pode ser encontrada em /usr/src/linux/Documentation/devices.txt (Atenção, o pacote kernel-sources deve estar instalado para que este arquivo esteja presente). |
[25] |
assumindo que o padrão /etc/mtools.conf está configurado. |
[26] |
logoff é o ato de encerrar uma seção do sistema. |