Escolar Documentos
Profissional Documentos
Cultura Documentos
Se o sistema es-
tiver ligado, ele deve ser desligado, seguindo o procedimento adequado para
desligar o sistema operacional que está ativo. Por exemplo, se você está execu-
EMITINDO tando o Microsoft Windows, clique em Start ~ Shut Down e selecione a opção
Shut Down na caixa de diálogo Shut Down. Pressione OK para iniciar o proces-
COMANDOS so de desligamento do sistema. Depois de alguns segundos, o Windows exibe
-·uma tela que diz que é seguro desligar o sistema. Desligue ou, se o sistema se des-
NO LINUX liga automaticamente, espere alguns segundos até o sistema se desligar sozinho.
Em seguida, você deve configurar o sistema para inicializar a partir do dis-
positivo desejado. Para inicializar o sistema a partir do disco rígido, remova
qualquer disquete da unidade de disquete do sistema. Para inicializar o sistema a
partir de um disquete, insira o disquete de inicialização do Linux na unidade de
disquete do sistema.
Agora, você está pronto para inicializar o sistema. Ligue o sistema (ou pres-
sione o botão Reset do sistema, se o sistema estiver ligado), e observe como ele
Este capítulo mostra como iniciar utilizando o sistema Linux. Ele mostra como realiza seu autoteste. Pouco depois, um prompt boot: deve ser visto no monitor
inicializar o sistema, efetuar login (conectar-se), dar comandos, efetuar logout do sistema. Se quiser, você pode listar as configurações de inicialização disponí-
(desconectar-se) e desligar o sistema. Além disso, ele explica como utilizar o co- veis armazenadas no dispositivo de inicialização pressionando Tab. Para inicia-
mando man, que fornece ajuda na utilização de outros comandos. O capítulo lizar o sistema, digite o nome da configuração desejada e pressione Enter ou
descreve a maneira como o Linux organiza os dados como sistemas de arquivos, simplesmente pressione Enter para inicializar utilizando a configuração padrão.
diretórios e arquivos e como você pode trabalhar com mídia removível, como Depois de carregar, o Linux começa a investigar o sistema e seus dispositi-
disquetes. Ele descreve como consultar status do sistema. E, por fim, o capítulo vos, imprimindo informações sobre status no seu monitor do sistema. Essas in-
explica como utilizar o pico, um editor de texto simples. formações de status são úteis se o sistema não consegue inicializar adequada-
mente, uma vez que expõem o ponto no processo de inicialização em que o pro-
blema ocorreu. .
Ciclo de utilização do sistema Quando o Linux tiver concluído o processo de inicialização, o monitor do
sistema exibirá um prompt de login semelhante a este:
Esta seção introduz o ciclo de utilização de sistema do Linux. Se você é um usuá-
rio do Microsoft Windows, você está acostumado com um padrão de utilização Red Hat Linux release 6.0 (Hedwig)
de sistema que forma um ciclo: Kernel 2.2.5 on an i586
login:
• Inicializar o sistema
• Identificar-se para o sistema
Efetuando logon
• Utilizar o sistema
Antes de poder utilizar o sistema, você deve identificar-se efetuando logon. O
• Desligar o sistema programa de instalação criou um usuário especial chamado root; identifican-
O ciclo de utilização de sistema do Linux é semelhante, mesmo se as tarefas do-se como o usuário root, você pode ganhar acesso ao sistema. Normalmente,
são realizadas de maneira um pouco diferente. o userid root é utilizado apenas ao realizar tarefas de administração de sistema,
porque o usuário root tem capacidades especiais que outros usuários não têm.
Entretanto, como root é atualmente o único userid que tem acesso ao sistema,
Inicializando o sistema você deve efetuar logon como root. Mais tarde, você adicionará um ou mais use-
rids.
A maioria de usuários do Linux inicializa o sistema a partir do disco rígido. Na- Para efetuar logon, digite root e pressione Enter. O sistema solicita a senha
turalmente, se criou um disquete de inicialização durante a instalação de siste- associada com root userid. Digite a senha estabelecida durante o processo de ins-
ma, você pode utilizá-lo para inicializar o sistema.
74 I talação e pressione Enter. Para evitar que qualquer pessoa próxima de você nes-175
se momento descubra sua senha, o Linux não a exibe quando você a digita. Se 2, que o sistema esteve ligado por 6 minutos e que apenas um usuário..,... root
você suspeitar que digitou a senha incorretamente, simplesmente pressione atualmente conectado. Note que a saída de comando é muito breve, agru-
Enter e inicie novamente; ou pressione Backspace uma vez (ou mais) para cada muitas informações em algumas poucas linhas. Tal saída é típica de co-
caractere que você entrou e então o reinsira. Se o userid ou a senha for digitado <~u<... ~.~~ do Linux. A princípio, você pode achar a saída do Linux enigmática e
incorretamente, o Linux exibe a mensagem "incorrect login" e pede para você ler, mas ao longo do tempo você começará a apreciar a eficiência com
tentar novamente. comunica informações.
fOínece muitos comandos a:lém docoma:n:do tv;tártt6s qüevocê'
<
Obtendo ajuda
Pelo fato de o Linux fornecer tantos comandos e de os comandos do Linux Ao lado da saída aparece o nome e uma breve descrição do comando.
fornecerem tantas opções possíveis, não se espera que você lembre de tudo. Então segue-se uma sinopse do comando, que mostra as opções e argumentos
Para ajudá-lo, Linux fornece o comando man e o comando apropos, que per- que podem ser especificados. Os colchetes incluem partes de um comando que
mitem acessar um banco de dados de ajuda que descreve cada comando e suas podem ser escolhidas para serem incluídas ou omitidas. Em seguida, há uma
opções. descrição detalhada da operação do comando, acompanhada por uma descrição
de suas opções.
À medida· que começar a explorar o Linux, você pode achar conveniente
Utilizando man
reservar um console virtual para executar o comando mano Assim, você pode in-
Cada comando do Linux é descrito por um arquivo especial chamado página de serir comandos em um console virtual separado, alternando entre consoles para
manual (man page). As páginas de manual são armazenadas em um grupo de refrescar sua memória sobre as opções e argumentos de comandos, enquanto
subdiretórios abrangendo um banco de dados de ajuda. Para acessar esse banco você os digita.
de dados, você utiliza o comando man, que se assemelha ao comando help do
MS-DOS. Por exemplo, para obter ajuda utilizando o comando w, digite:
• q sai do programa e retorna para o prompt de comando O nome de um diretório ou arquivo deve seguir certas regras. Por exem-
. . Se quiser listar um diretório diferente do diretório de trabalho, você pode plo, ele não deve conter um caractere de barra (j). Os nomes de diretório e ar-
dIgItar o nome do diretório como um argumento do comando Is. O Linux exibe quivo normalmente incluem letras (em letras maiúsculas ou em letras minúscu-
o conteúdo do diretório, mas não altera o diretório de trabalho. De maneira se- las), dígitos, pontos e sublinhados U. Você pode utilizar outros caracteres,
melhante, é possível exibir as informações sobre um arquivo digitando seu como espaços, mas esses nomes apresentam problemas, porque o shell dá a eles
nome como um argumento do comando Is. Além disso, o comando Is aceita um um significado especial. Se você deve utilizar um nome contendo caracteres es-
n.úmero indefinido de argumentos, então você pode digitar uma série de diretó- peciais, inclua o nome dentro de aspas simples (,). As aspas não se tornam parte
nos e nomes de arquivo como argumentos, separando-os com um ou mais espa- do nome que é armazenado no disco. Essa técnica é útil ao acessar arquivos em
ços ou tabulações. um sistema de arquivos da Microsoft Windows; caso contrário, você terá pro-
blemas em trabalhar com arquivos em diretórios como Meus Documentos, que
têm nomes contendo espaços.
A maioria dos nomes de arquivo de MS-DOS contém um ponto, mas a Esse comando exibe o conteúdo de um arquivo da mesma maneira que o
maioria dos nomes de arquivo do Linux não. No MS-DOS, o ponto separa a .\I.IP.~«"'''''~ man exibe uma página de manual. Você pode utilizar as teclas Barra
parte principal do nOII1e de élJ:"quivººe uma parl~ .conll('!.cl·lda.ç!)mO.J~xt;en.sã!:},:.=. Jl!f:c.I;;_!\II'<:l.~r.u..~b Pélra Pélgip.ar para trás e para frente pelo arquivo e a tecla qpara
que denota o tipo do arquivo. Por exemplo, o arquivo memo.txt de MS-D o comando.
conteria texto. Amaioria dos programas do Linux: determina automaticamen~
te o tipo de um arquivo, portanto osnomes de arquivo do Linux não ~i'!mov'enao um arquivo
uma extensão. remover um arquivo, digite o comando rm, especificando o nome do ar-
como um argumento. Por exemplo:
Removendo um diretório [root@desktop /root]# rrn badfile
Para remover um diretório, utilize o comando rmdir. Por exemplo, para remo- ~cir.,r":u' o arquivo chamado badfile contido no diretório de trabalho. Se um ar-
ver unwanted, um subdiretório do diretório de trabalho, digite: quivo estiver localizado em outra parte, você pode removê-lo especificando um
de caminho absoluto ou relativo.
[root@desktop jroot]# rrndir unwanted
Se o diretório que você quer remover não for um subdin!tório do diretório Uma vez que um arquivo do Linux é removido, seu conteúdo é per-
de trabalho, remova-o digitando um nome de caminho absoluto ou relativo. dido para sempre. Tenha cuidado para evitar a remoção de um ar-
Não é possível remover um diretório que contém arquivos ou subdiretó- quivo que contenha informações que você ainda precisa.
rios; deve-se primeiro excluir os arquivos no diretório e depois remover o dire-
tório sozinho. A opção -i faz com que o comando rm solicite a confirmação da sua decisão
um arquivo. Se você não confia na sua habilidade de digitar, você
pode achar essa opção útil. Linux automaticamente fornece a opção -i mesmo se
Trabalhando com arquivos você não digitá-la.
Os diretórios contêm arquivos e outros diretórios. Os arquivos são utilizados
para armazenar dados. Esta seção introduz vários comandos úteis para trabalhar Copiando um arquivo
com arquivos.
Para copiar um arquivo, utilize o comando cp, especificando o nome (ou cami-
nho) do arquivo que você quer copiar, e o nome (ou caminho) em que você quer
Exibindo o conteúdo de um arquivo copiá-lo. Por exemplo:
Os arquivos de Linux, como os arquivos da Microsoft Windows, podem conter [root@desktop /root]# cp /etc/passwd sample
informações na forma de texto ou na forma binária. O conteúdo de um arquivo copia o arquivo etc/passwd para um arquivo chamado sample no diretório de
binário é significativo somente para programadores qualificados, mas você pode trabalho.
facilmente visualizar o conteúdo de um arquivo de texto. Simplesmente digite o Se o arquivo de destino já existir, o Linux o sobrescreve. Portanto, você deve
comando cat, especificando o nome do arquivo de texto como um argumento. ter cuidado para evitar sobrescrever um arquivo que contenha dados necessários.
Por exemplo: Antes de copiar um arquivo, utilize o comando Is para assegurar-se que nenhum
arquivo será sobrescrito; alternativamente, utilize opção -i do comando cp, que
[root@desktop jroot]# cat /etc/passwd pede para você confirmar que quer sobrescrever um arquivo existente. O Linux
fornece automaticamente a opção -i, mesmo se você não digitá-la.
exibe o conteúdo do arquivo etc/passwd, que lista os logons de sistema válidos.
Se um arquivo for muito grande para ser exibido em uma única tela, a pri-
Renomeando ou movendo um arquivo
meira parte irá fazer um ruído passando por você e serão vistas apenas as últimas
poucas linhas do arquivo. Para evitar isso, você pode utilizar o comando more: Para renomear um arquivo, utilize o comando mv, especificando o nome (ou ca-
minho) do arquivo e o novo nome (ou caminho). Por exemplo:
[root@desktop jroot]# more /etc/passwd
[root@desktop /root]# mv old new
r~nomeia o arquivo chamado old como new. Se o arquivo de destino já existir, o Cada arquivo ativo ou em espera tem um número de trabalho de impressão
Lmux sobrescreve-o, e então você deve ser cuidadoso. Antes de mover um ar- atribuído. Você pode utilizar lprm para cancelar a impressão de um arquivo, es-
quivo, utilize o comando Is para assegurar-se de que nenhum arquivo será so- pecificando o número de trabalho de impressão. Por exemplo:
brescrito; ou, utilize a opção -i do comando mv, que pede para confirmar se
você quer sobrescrever um arquivo existente. O Linux fornece automaticamen- [root@desktop jroot]# lprm 155
te a opção -i mesmo se você não digitá-la; cancela aimpressão do trabalho de número 155. Entretanto, somente o usuário
O comando mv pode renomear um diretório, mas não pode mover um dire- que solicitou que um arquivo seja impresso (ou o usuário root) pode cancelar a
t?:io de ~m ~ispositivo para outro. Para mover um diretório para um novo dispo- ünpressão do arquivo.
SitiVO, pnmeiro copie o diretório e seu conteúdo e depois remova o original.
Trabalhando com arquivos compactados
Localizando um arquivo
Para economizar espaço em disco e acelerar descarregamentos, você pode com-
Se você sabe o nome de uni arquivo, mas não sabe o que o diretório contém pactar um arquivo de dados. Por convenção, arquivos compactados são identifi-
pode utilizar o comando find para localizar o arquivo. Por exemplo: ' cados com a extensão .gz; entretanto, o Linux não exige nem impõe essa con-
venção.
[root@desktop jroot]# find . -name 'missing' -print Para expandir um arquivo compactado, utilize o comando gunzip. Por
exemplo, suponha que o arquivo bigfile.gz foi compactado. Digitar o comando:
tenta achar um arquivo chamado missing, localizado no (ou abaixo do) diretório
de trabalho atual (.). Se o comando localizar o arquivo, ele exibe seu nome de [root@desktop jroot]# gunzip bigfile.gz
caminho absoluto.
Se você conhece somente parte do nome de arquivo, você pode cercar a "extrai o arquivo bigfile e remove o arquivo bigfile.gz.
parte que você conhece com asteriscos ('~): Para compactar um arquivo, utilize comando gzip. Por exemplo, para com-
pactar o arquivo bigfile, digite o comando:
[root@desktop jroot]# find / -name '*iss*' -print
[root@desktop jroot]# gzip.bigfile
Esse comando localiza qualquer arquivo cujo nome inclui os caracteres iss
pesquisando cada subdiretório do diretório-raiz (isto é, o sistema inteiro). ' O comando cria o arquivo bigfile.gz e remove o arquivo bigfile.
Às vezes, é conveniente armazenar vários arquivos (ou o conteúdo de vários
Imprimindo um arquivo subdiretórios) em um único arquivo. Isso é útil, por exemplo, na criação de um
backup ou de uma cópia do tipo repositório de arquivos. O comando tar do
Se o sistema inclui uma impressora, você pode imprimir um arquivo utilizando ."Linux cria um único arquivo que contém dados de vários arquivos. Diferente do
o comando lpr. Por exemplo: comando gzip, o comando tar não perturba os arquivos originais. Para criar um
arquivo tar, como um arquivo criado pelo comando tar, é chamado um coman-
[root@desktop jroot]# lpr /etc/passwd do assim:
tar -cvf arquivotar arquivos-ou-diretórios
envia o arquivo /etc/passwd para a impressora.
Se um arquivo for longo, ele pode requerer algum tempo para imprimir. substitui arquivotar pelo nome do arquivo tar que você quer criar, e arqui-
y ocê. p~de enviar outros arquivos para a impressora enquanto um arquivo está vos-ou-diretórios por uma lista de arquivos e diretórios, separando os elementos
impnmmdo. O comando lpq permite visualizar que arquivos estão aguardando da lista por um ou mais espaços ou tahulações. Você pode utilizar os nomes de
a impressão: caminho absoluto ou relativo para especificar os arquivos ou diretórios. Por
convenção, o nome de um arquivo tar termina com .tar, mas o Linux não exige
[root@desktop jroot]# lpq nem impõe essa convenção.
lp is ready and printing Por exemplo, para criar um arquivo tar chamado backup.tar que contém
Rank Owner Job Files Total Size todos os arquivos em todos os subdiretórios do diretório /home/bill, digite:
active root 155 jetcjpasswd 1030 bytes
tar -cvf backup.tar jhomejbill
o comando cria o arquivo backup. tar no diretório de trabalho atual. Para vincular um novo nome com um arquivo existente ou diretório, digite
Você pode listar o conteúdo de um arquivo tar, utilizando um comando um comando que siga esse padrão:
que segue esse padrão:
ln -s velho novo
tar -tvf arquívotar I more
Por exemplo, suponha que o diretório de trabalho atual contém o arquivo
o I more faz com que a saída seja enviada para o comando more, de modo -willíam. Para ser capaz de referir-se a esse mesmo arquivo pelo nome alternati-
que você possa paginar por múltiplas páginas. Se o arquivo tar contém somente vo bill, digite o comando:
alguns arquivos, você pode omitir o I more.
Para extrair o conteúdo de um arquivo tar, utilize um comando que siga [root@desktop /root]# ln -s william bill
esse padrão:
O comando Is mostra o resultado:
tar -xvf arquívotar
[root@desktop /root]# ls -1
Esse comando expande os arquivos e diretórios contidos dentro do arqui- lrwxrwxrwx 1 root root 7 Feb 27 13:58 bill->william
vo tar como arquivos e subdiretórios do diretório de trabalho. Se um arquivo ou -rw-r--r-- 1 root root 1030 Feb 27 13:26 william
subdiretório já existir, ele é silenciosamente sobrescrito.
O comando tar fornece várias opções úteis; veja sua página de manual para O novo arquivo (bill) tem tipo 1, que indica que ele é um link, em vez de
detalhes. . um arquivo ou diretório. Além disso, o comando de Is mostra convenientemen-
É comum compactar um arquivo taro Você pode facilmente realizar isso es- te o nome do arquivo que o link referencia (william).
pecificando as opções -czvf em vez de -cvf. Arquivos tar compactados são con- Se você omitir a opção -s, o Linux cria o que é chamado de um hard link.
vencionalmente identificados terminando com .tgz. Para expandir um arquivo Um hard link deve ser armazenado no mesmo sistema de arquivos que o arquivo
tar compactado, especifique as opções -xzvf em vez de -xvf. que ele referencia, uma restrição que não se aplica aos links simbólicos. A conta-
O comando tar não utiliza o método ZIP de compactação comum no mun- gem de links exibida pelo comando Is reflete somente hard links; links simbóli-
do do Microsoft Windows. Entretanto, o Linux pode facilmente trabalhar com, cos são ignorados.
ou mesmo criar, arquivos ZIP. Para criar um arquivo ZIP que armazena arqui-
vos ou diretórios compactados, emita um comando como esse: Trabalhando com permissões de arquivo
zip -r arquívozíp arquívos_a_zípar Diferente do Windows 98, mas semelhante a outras variedades do Unix e do
Windows NT, o Linux é um sistema operacional multiusuário. Portanto, ele in-
onde arquivozip nomeia o arquivo ZIP que será criado e arquivos_a_zipar espe- clui mecanismos que protegem dados contra acesso não-autorizado. O mecanis-
cifica os arquivos e diretórios que serão incluídos no arquivo ZIP. mo primário de proteção restringe o acesso aosdiretórios e arquivos, baseados
Para expandir um arquivo ZIP existente, emita um comando como esse: na identidade do usuário que solicita acesso e nos modos de acesso atribuídos a
cada diretório e arquivo.
unzip arquívozíp
Cada diretório e arquivo têm um usuário associado, chamado proprietário
(owner), que criou o diretório ou arquivo. Cada usuário pertence a um ou mais
Trabalhando com links conjuntos de usuários conhecidos como grupos. Cada diretório e arquivo têm
um grupo associado, que é atribuído quando o diretório ou arquivo é criado.
O Microsoft Windows 9x suporta atalhos, que permitem referir-se a um arqui- Permissões de acesso determinam quais operações um usuário pode reali-
vo ou diretório (pasta) por vários nomes. Os atalhos também permitem incluir
zar em um diretório ou arquivo. A Tabela 4-4 lista as possíveis permissões e ex-
um arquivo em vários diretórios, ou um subdiretório dentro de múltiplos dire-
plica o significado de cada uma. Note que as permissões trabalham para diretó-
tórios-pai. No Linux, você obtém os mesmos resultados utilizando o comando
rios de maneira diferente de como trabalham para arquivos. Por exemplo, a per-
ln, que vincula múltiplos nomes a um único arquivo ou diretório. Esses nomes
missão r indica a capacidade de listar o conteúdo de um diretório ou de ler o
são chamados links simbólicos, soft links ou simplesmente links.
conteúdo de um arquivo. Um diretório ou arquivo pode ter mais de uma per-
missão. Somente as permissões listadas são concedidas; qualquer outra opera-,
97
ção é proibida. Por exemplo, um usuário que tem permissão rw a um arquivo possível e a permissão equivalente de acesso. Por exemplo, b argumento
pode ler ou gravar esse arquivo, mas não pode executá-lo. lé equivalente a rwxr-x-x, que dá ao proprietário todas as permissões possí-
dá ao grupo a permissão de ler e executar, e dá a outros usuários permissão
Tabela 4-4. Permissões de acesso
Permissão Significado para diretório Significado para arquivo permissão de acesso do grupo
r Lista o diretório Lê conteúdo rwx I rL I r--
w Cria ou remove arquivos Escreve conteúdo I
permissão de acesso
Ipermissão de
x Acessa arquivos e subdiretórios Executa T do proprietário acesso de outros
Os modos de acesso de um diretório de arquivo consistem em três permis- 4-5. Valores numéricos do modo de acesso
sões:
Significado
proprietário (owner)
Aplica-se ao proprietário do arquivo
-x
grupo (group) -w-
Aplica-se a usuários que sejam membros do grupo atribuído ao arquivo -wx
r -
outro (other)
r-x
Aplica-se a outros usuários
rw-
O comando Is lista os modos de acesso a arquivo na segunda coluna no seu rwx
formato de saída longo, como mostra a Figura 4-5. A coluna contém nove carac-
teres: os três primeiros especificam o acesso permitido ao proprietário do dire-
tório ou arquivo, os três seguintes especificam o acesso permitido a usuários no
mesmo grupo como diretório ou arquivo e os três últimos especificam o acesso .Se você for proprietário de um arquivo ou diretório (ouse você for o usuário
permitido aos outros usuários (veja a Figura 4-6). ), você pode alterar sua posse, utilizando o comando chown. Por exemplo, o
comando seguinte atribui newuser como o proprietário do arquivo hotpotato:
drwxr-xr-x 5 root root 1024 Dec 23 13:48 GNUstep [root@desktop jroot]# chown newuser hotpotato
I- rw- r-- r-- I 11 ro,t I I root 331 Feb 11 10:19 Xrootenv.O
.I I
access modes owner group o proprietário de um arquivo ou diretório (e o usuário root) também pode
alterar o grupo de um arquivo. Por exemplo, o seguinte comando atribui new-
Figura 4-5: Modos de acesso mostrados pelo comando Is.
group como o novo grupo do arquivo hotpotato:
Você configura os modos de acesso de um diretório ou arquivo utilizando [root@desktop jroot]# chgrp newgroup hotpotato
o comando chmod, que tem o seguinte padrão:
O grupo que você atribui a um arquivo ou diretório deve ter sido previa-
chmod nnn diretório-ou-arquivo mente estabelecido pelo usuário root. Os grupos válidos aparecem no arquivo
letc/group, que somente o usuário root pode alterar.
O argumento nnn é um número de três dígitos que fornece o modo de O usuário root pode atribuir cada usuário a um ou mais grupos. Quando
98 1 acesso para o proprietário, grupo e outros usuários. A Tabela 4-5 mostra cada você efetua logon no sistema, você é atribuído a um desses grupos - seu grupo de 199
login- por padrão. Para mudar para outro de seus grupos atribuídos, você pode e desmontando unidades
utilizar o comando newgrp. Por exemplo, para alter~r o grupo chamado second-
group, utilize o seguinte comando: não pode acessar uma partição de disco rígido, CD-ROM ou disquete até
dispositivo ou partição relacionado estar montado. Montar um dispositivo
[root@desktop jrootJ# newgrp secondgroup -..~.~.-+-.~n o status do dispositivo e prepara-o para acesso. O Linux pode ser confi-
para montar automaticamente um dispositivo ou partição quando ele
Se você tentar alterar um grupo que não existe, ou a que você não foi atri- -,---I"".LaLU.. ,,,-,· mas você deve montar manualmente outros dispositivos e partições.
buído, seu comando falhará. Quando um arquivo ou diretório é criado, eleé au-
tomaticamente atribuído ao grupo atual a que você pertence como o grupo que
tem a posse desse arquivo ou diretório. Se um dispositivo utiliza mídia removível, a mídia pode não estar
presente quando o sistema inicializa. Se o sistema é configurado para
montar automaticamente tal dispositivo e a mídia não estiver presen-
Executando programeis te, ocorre um erro. Portanto, dispositivos que utilizam mídia removí-
vel não são em geral configurados para montagem automática.
Tanto em Linux, como em MS-DOS e Microsoft Windows, os programas são
armazenados em arquivos. Freqüentemente, você pode carregar um programa
simplesmente digitando seu nome de arquivo. Entretanto, isso assume que o ar- Antes que você possa a remover mídia de um dispositivo, você deve des-
quivo está armazenado em um de uma série de diretórios conhecidos como ca- montá-lo. O sistema também desmonta dispositivos quando ele desliga. Montar
minho. Dizemos que um diretório incluído nessa série está no caminho. Se você e desmontar dispositivos é uma operação privilegiada; geralmente, apenas o
trabalhou com MS-DOS, conhece o caminho de MS-DOS, que trabalha de ma- usuário root pode montar e desmontar dispositivos manualmente.
neira muito semelhante ao caminho do Linux. Você aprenderá mais sobre como Para montar um dispositivo ou partição, você utiliza o comando mount,
trabalhar com o caminho do Linux no Capítulo 13. quetem o seguinte padrão:
Se o arquivo que quer carregar não estiver armazenado em um diretório no
caminho, você pode simplesmente digitar o nome do caminho absoluto do ar- mount opções dispositivo diretório
quivo. O Linux então carregará o programa, mesmo que ele não esteja no cami-
nho. Se o arquivo que você quer carregar estiver armazenado no diretório de O comando mount fornece muitas opções. Entretanto, geralmente você
trabalho, digite ./ seguido pelo nome do arquivo de programa. Novamente, o Li- pode utilizar o comando mount sem qualquer opção; consulte a página de ma-
nux carregará o programa, mesmo que ele não esteja no caminho. nual para aprender as opções disponíveis.
Por exemplo, suponha que o programa bigdeal esteja armazenado no dire-
tório /home/bob, que é o diretório atual e que está no caminho. Você poderia
carregar o programa dessas maneiras: DICA A razão pela qual você pode utilizar o comando mount sem opções
é que o arquivo /etc!fstab descreve os dispositivos do sistema e o
bi gdeal tipo de sistema de arquivos que provavelmente cada um contém. Se
.jbigdeal adicionar um novo dispositivo ao sistema, você pode precisar revi-
jhomejbobjbigdeal sar o conteúdo de /etc!fstab ou especificar opções apropriadas ao
montar o dispositivo.
O primeiro comando assume que o programa está ng caminho. O segundo
assume que o programa reside no diretório de trabalho atual. O terceiro não faz
nenhuma suposição sobre a localização do arquivo. Você deve especificar o dispositivo que quer montar e um diretório, conhe-
cidocomo ponto de montagem. Para tornar o acesso conveniente para vários dis-
positivos, o Linux trata um dispositivo montado como um diretório; montar o
Trabalhando com dispositivos dispositivo o associa com o diretório identificado. Por exemplo, uma operação
comum é montar um CD-ROM. Você pode realizar isso com o comando:
Esta seção apresenta comandos que trabalham com dispositivos. Você aprende-
rá a montar e desmontar dispositivos e a formatar um disquete. [root@desktop /rootJ# mount /dev/cdrom /mnt/cdrom
O arquivo /dev!cdrom é um link que aponta para o arquivo real de disposi-
tivo associado com a unidade de CD-ROM do sistema. O diretório /mnt!cdrom 1101
login- por padrão. Para mudar para outro de seus grupos atribuídos, você pode e desmontando unidades
utilizar o comando newgrp. Por exemplo, para alterar o grupo chamado second-
group, utilize o seguinte comando: ocê não pode acessar uma partição de disco rígido, CD-ROM ou disquete até
o. dispositivo ou partição relacionado estar montado. Montar um dispositivo
[root@desktop /root]# newgrp secondgroup v~rificao status do dispositivo e prepara-o para acesso. O Linux pode serconfi-
t:. ..u.~~'~ para montar automaticamente um dispositivo ou partição quando ele
Se você tentar alterar um grupo que não existe, ou a que você não foi atri- llU.\.-HULL'''; mas você deve montar manualmente outros dispositivos e partições.
buído, seu comando falhará. Quando um arquivo ou diretório é criado, ele é au-
tomaticamente atribuído ao grupo atual a que você pertence como o grupo que
tem a posse desse arquivo ou diretório. Se um dispositivo utiliza mídia removível, a mídia pode não estar
presente quando o sistema inicializa. Se o sistema é configurado para
montar automaticamente tal dispositivo e a mídia não estiver presen-
Executando programas te, ocorre um erro. Portanto, dispositivos que utilizam mídia removí-
vel não são em geral configurados para montagem automática.
Tanto em Linux, como em MS-DOS e Microsoft Windows, os programas são
armazenados em arquivos. Freqüentemente, você pode carregar um programa
simplesmente digitando seu nome de arquivo. Entretanto, isso assume que o ar- Antes que você possa a remover mídia de um dispositivo, você deve des-
quivo está armazenado em um de uma série de diretórios conhecidos como ca- montá-lo. O sistema também desmonta dispositivos quando ele desliga. Montar
minho. Dizemos que um diretório incluído nessa série está no caminho. Se você e desmontar dispositivos é uma operação privilegiada; geralmente, apenas o
trabalhou com MS-DOS, conhece o caminho de MS-DOS, que trabalha de ma- usuário root pode montar e desmontar dispositivos manualmente.
neira muito semelhante ao caminho do Linux. Você aprenderá mais sobre como Para montar um dispositivo ou partição, você utiliza o comando mount,
trabalhar com o caminho do Linux no Capítulo 13. que tem o seguinte padrão:
Se o arquivo que quer carregar não estiver armazenado em um diretório no
caminho, você pode simplesmente digitar o nome do caminho absoluto· do ar- mount opções dispositivo diretório
quivo. O Linux então carregará o programa, mesmo que ele não esteja no cami-
nho. Se o arquivo que você quer carregar estiver armazenado no diretório de O comando mount fornece muitas opções. Entretanto, geralmente você
trabalho, digite ./ seguido pelo nome do arquivo de programa. Novamente, o Li- pode utilizar o comando mount sem qualquer opção; consulte a página de ma-
nux carregará o programa, mesmo que ele não esteja no caminho. nual para aprender as opções disponíveis.
Por exemplo, suponha que o programa bigdeal esteja armazenado no dire-
tório /home/bob, que é o diretório atual e que está no caminho. Você poderia
carregar o programa dessas maneiras: DICA A razão pela qual você pode utilizar o comando mount sem opções
é que o arquivo /etc/fstab descreve os dispositivos do sistema e o
bigdeal tipo de sistema de arquivos que provavelmente cada um contém. Se
./bigdeal adicionar um novo dispositivo ao sistema, você pode precisar revi-
/home/bob/bigdeal sar o conteúdo de /etc/fstab ou especificar opções apropriadas ao
montar o dispositivo.
O primeiro comando assume que o programa está no caminho. O segundo
assume que o programa reside no diretório de trabalho atual. O terceiro não faz
nenhuma suposição sobre a localização do arquivo. Você deve especificar o dispositivo que quer montar e um diretório, conhe-
cido como ponto de montagem. Para tornar o acesso conveniente para vários dis-
positivos, o Linux trata um dispositivo montado como um diretório; montar o
Trabalhando com dispositivos dispositivo o associa com o diretório identificado. Por exemplo, uma operação
comum é montar um CD-ROM. Você pode realizar isso com o comando:
Esta seção apresenta comandos que trabalham com dispositivos. Você aprende-
rá a montar e desmontar dispositivos e a formatar um disquete. [root@desktop /root]# mount /dev/cdrom /mnt/cdrom
O arquivo /dev!cdrom é um link que aponta para o arquivo real de disposi-
tivo associado com a unidade de CD-ROM do sistema. O diretório /mnt!cdrom 101 1
é um diretório criado pelo programa de instalação; esse diretórioé convencio-
nalmente utilizado como o ponto de montagem para CD-ROMs. Depois que o gramas úteis do Linux
comando se completou, você pode acessar arquivos e diretórios no CD-ROM
assim como acessaria arquivos e diretórios comuns no caminho /mnt/cdrom. Por seção apresenta vários programas que você pode achar ~teis para trabalhar
exemplo, para listar os arquivos de primeiro nível e diretórios do CD-ROM; o sistema Linux. Você aprenderá vários comandos que mformam status de
simplesmente digite: e como utilizar pico, um editor de texto simples.
do Linux para formatar um disquete é fdformat. Simplesmente siga o comando em recursos. Embora todos os comandos possam ser utIhzados sem opçao ~u ar-
com um argumento que especifica a unidade de disquete e a capacidade do dis- gumento, cada um suporta opções e argumentos que ~ermitem pe:sonahzar a
quete; os argumentos disponíveis estão listados na Tabela 4-6. Por ~xemplo, operação e a saída; consulte a página de-manual aproprIada para maiS detalhes.
para formatar um disquete de 1.44 MB em sua unidade a: do Sistema, digite:
Tabela 4-7. Comandos úteis de sistema
[root@desktop jroot]# fdformat /dev/fdOH1440
Comando Função
Uma vez que formatou o disquete, você pode montá-lo e depois ler e gra-
var dados nele. Certifique-se de desmontar o disquete antes de removê-lo. Des- df Mostra a quantidade de espaço livre em disco (em blocos de1K) em
montar o disquete assegura que todos os dados pendentes foram gravados nele; cada sistema de arquivos montado.
caso contrário, o disquete pode não ser utilizável, devido a uma corrupção dos du Mostra a quantidade de espaço em disco (em blocos de 1K) utilizado
102/ dados. pelo diretório de trabalho e seus subdiretórios.
Tabela 4-7. Continuação comandos possam ser distinguidos de caracteres que você quer adicionar ao buf-
Comando Função Digitar um caractere comum insere-o na posição atual do cursor. Você pode
~uti1izar as teclas do cursor para mover a exibição; você pode utilizaras teclas
(ree Mostra a estatística de uso de memória, incluindo memória livre Delete ou Backspace para apagar caracteres. Alguns comandos utilizam a tercei-
total, memória utilizada, memória física, memória de swap, memória falinha da parte inferior para informar o status e obter entrada adicional.
compartilhada e buffers utilizados pelo kernel. A Tabela 4-8 resume os comandos do pico. Note que o comando Ctrl-Gacessa
ps Mostra os processos ativos (instâncias de programas em execução) o sistema de ajuda do pico. Você pode acessar vários comandos utilizando teclas de
associados com essa sessão de login. Utilize a opção -a para listar .. função; por exemplo, pressionar F1 fornece o mesmo resultado que digitar Ctrl-G.
todos os processos.
top Mostra uma exibição continuamente atualizada de processos ativos e
os recursos que eles estão utilizando. Digite a tecla q para sair.
uptime Mostra a data/hora atual, a quantidade de tempo conectado, o
número de usuários conectados e a média de carga do sistema. Figura 4-7: O editor pico.
user Mostra cada sessão de login.
w Mostra um resumo da utilização de sistema, usuários atualmente Tabela 4-8. Resumo de comandos do pico
conectados e processos ativos.
Descrição
who Mostra os nomes de usuários atualmente conectados, o terminal que
cada um está utilizando, o tempo que cada um está conectado e o Marca a posição do cursor como início de texto selecionado.
nome do host a que cada um está conectado (se houver algum). Move para o início da linha atual.
Move um caractere para trás.
Informa a posição atual do cursor.
Ctrl-D Exclui o caractere na posição do cursor.
Utilizando o editor pico
Ctrl-E Move para o fim da linha atual.
o editor pico é um editor de texto simples que você pode considerar o equiva-
Ctrl-F Avança um caractere.
lente do Linux ao acessório Notepad do Microsoft Windows. Para iniciar o
Ctrl-G (FI) Exibe ajuda.
pico, simplesmente digite pico no prompt de shell; ou, se você quiser editar um
arquivo particular, digite pico seguido pelo nome do arquivo (ou o caminho do Ctrl-I Insere uma tabulação na posição atual do cursor.
arquivo, se o arquivo não estiver no diretório de trabalho). Por exemplo, para Ctrl-] (F4) Formata o parágrafo atual.
editar o arquivo mydata, digite: Ctrl-K (F9) Recorta texto selecionado.
Ctrl-L Atualiza a exibição.
[root@desktop /root]# pico mydata Move para a próxima linha.
Ctrl-N
Ctrl-O (F3) Salva o buffer atual em um arquivo.
DICA Se o pico falhar em iniciar, provavelmente você não instalou o pa- Ctrl-P Move para a primeira linha.
cote pine, que o contém. Você pode instalar esse pacote seguindo as Ctrl-R (F5) Insere um arquivo externo na posição atual do cursor.
instruções dadas no Apêndice C. Ctrl-T (F12) Invoca o verificador de ortografia.
Ctrl-U (FIO) Cola texto na posição atual do cursor.
A Figura 4-7 mostra a tela padrão do pico. Na parte superior da tela apare- Ctrl-V (F8) Avança uma página de texto.
ce uma linha de status que mostra a versão do programa e o nome do arquivo Ctrl-W (F6) Procura texto, ignora letras maiúsculas e minúsculas.
sendo editado (ou "New Buffer", se o arquivo for novo). Se o arquivo foi modi- Ctrl-X (F2) Sai do pico, salva o buffer edito
ficado, o canto direito superior da tela exibe a palavra Modified. As duas linhas Move para trás uma página de texto.
Ctrl-Y (F7)
inferiores da lista de exibição listam os comandos de edição disponíveis. A maio-
104 1 ria dos comandos requer a digitação de um caracter e de controle, de modo que
CAPÍTULO 13 um shell BASH em seu nome quando você efetua login; então, em geral
necessário se preocupar muito com a escolha de um shell. Entretanto, para
IU,t\,"'-''-'' sobre outros shells disponíveis, você pode consultar as páginas
DOMINANDO O do Linux.
Tabela 13-5. Metacaracteres de nome de arquivo apenas arquivo2 e arquivo3, porque somente esses arquivos têm no-
Metacaracteres
que correspondem com o padrão especificado, que requer que o último ca-
Significado
ractere do nome de arquivo esteja no intervalo 2-3.
* Corresponde com uma string de zero ou mais caracteres Você pode utilizar mais de ummetacarattereemuntút1icoargumento~ Por
? .exemplo, considere o seguinte comando:
Corresponde exatamente com um caractere
[abc ... ] l-s -1 file??
. Corresponde com qualqueruIl1 dós caracteres especificados
[a-z]
Corresponde com qualquer caractere no intervalo especificado Esse comando listará o arquivo04, porque cada metacaractere corresponde
[!abc ... ]
Corr~s~onde com qualquer outro caractere que não aqueles exatamente com um caractere de nome de arquivo.
especIficados
[!a-z] A maioria dos comandos permite especificar múltiplos argumentos. Se ne-
Co~responde com qualquer caractere que não esteja
no lDtervalo especificado nhum arquivo corresponder com um argumento dado, o comando ignora o ar-
O diretório inicial do usuário atual gumento. Eis outro comando que informa todos os quatro arquivos:
-userid O diretório inicial do usuário especificado ls -1 fileO* file[I-3]
-+
O diretório de trabalho atual
O diretório de trabalho anterior Suponha que um comando tem um ou mais argumentos que inclu-
em um ou mais metacaracteres. Se nenhum dos argumentos corres-
ponder com quaisquer nomes de arquivo, o shell passa os argumen-
tos para o programa com os metacaracteres intactos. Quando o
do No globbing de nome de ~r~uivo, assim como em curingas (wildcarding) . •. programa espera um nome de arquivo válido, pode resultar um
MS-DOS, o ~hel1 tenta substitUir metacaracteres que aparecem em argumen~ erro inesperado.
t~s de tal maneira qu~ os argumentos especifkam os nomes de arquivo.
blllg de no~e de arqUivo torna mais fácil especificar nome de arquivo e conJ'un-
tos de arqUivos. Outro metacaractere permite facilmente referenciar odiretório inicial. Por
exemplo, o seguinte comando:
Po:exemplo~ suponha que o diretório de trabalho atual contém os seguin-
~:~ arqUivos: arquIVo 1, arquiv.o2, arquiv~3 e arquivo04. Suponha que você quer ls -
er o famanho de cada arqUiVO. O segulllte comando traz essas informações:~ lista os arquivos no diretório inicial do usuário.
ls -1 fileI file2 file3 file04
Os metacaracteres de nome de arquivo não poupam simplesmente você de
digitar. Eles permitem que você escreva scripts que seletivamenteprocessam os
. E,n~retant?,. o seguinte comando traz as mesmas informações e é muito·
maiS facll de digitar: arquivos por nome. Você verá como isso funciona mais adiante neste capítulo.
ls -1 file*
Aliases de shell
Como a Tabela 13-2 mostra, o metacaractere * de nome de arquivo pode Os aliases de shell tornam mais fácil utilizar os comando, permitem estabelecer
co:responder com qualquer string de caracteres. Suponha que você emitiu o se- nomes de comando abreviados e pré-especificar o argumento comum. Para esta-
gUlllte comando: belecer um alias de comando, emita um comando na forma:
278/ ls -1 file?
alias name='comando'
onde ~?mand~· especifica o comando pelo qual você quer criar um alias e onde alias especifica o alias que você quer remover. Osaliases duram apenas
esp ecIÍ1ca. o alIas. Por exemplo, suponha que você digita freqüentemente o até o final de uma sessão, então não é necessário preocupar-se em removê-los
man~o Dlr do MS~DOS quando você pretende digitar o comando Is do antes de efetuar logoff. Se quiser que um alias seja efetivo toda vez que efetuar
Voce pode estabelecer um alias para o comando Is, emitindo esse comando: login, você pode utilizar um script de shell. A próxima subseção mostra-lhe
alias dir='ls -1' como fazer isso.
Observe como os vá~ios comandos recebem autoticamente Um alias. Por Você pode executar esse script emitindo o comando sh:
::mplo,oco~and~ rm -1 recebe o alias rm. O efeito é que a opção -i aparece sh deleter
_. pre~~e voce emIte o cOI?~nd? rm, quer ou não você digite a opção. A opção
/ esp~cIÍ1ca q~e o shell solIcItara a confirmação antes de excluir os arquivos
ss~ aJ~da a eVItar exclusão acidental de arquívos, que pode ser particularment~ DICA Se você invocar o comando sh sem um argumento que especifica
arr~s~a o quan?o vo~ê estiver conectado como root. O alias assegura que você um arquivo de script, um novo shell interativo é carregado. Para
SOlICItou a. c~nfIrmaçao mesmo se você não pedir para ser solicitado. Se não qui- sair do novo shell e retornar para sua sessão anterior, emita o co-
ser ser solIcItado, você pode emitir um comando como: mando exit.
rm -f files
Se o arquivo dele ter estava em um outro diretório que o diretório de traba-
onde files e~pec~fica os arquivos a ser excluídos. A opção -f tem um efeito oposto lho atual, você teria de digitar um caminho absoluto, por exemplo:
~ue da opçao -1; ele força a exclusão de arquivos sem solicitar a confirmação sh jhomejbilljdeleter
orno o comando recebe um alias, o comando é realmente executado: .
Você pode tornar um pouco mais fácil executar o script alterando seu
rm -i -f arquivos modo de acesso para incluir acesso de execução. Para fazer isso, emita o seguin-
te comando:
. Ah opção -f assume precedência sobre a opção -i, porque ocorre mais tarde chmod 555 deleter
na 1ln a de comando.
Isso fornece a você, aos membros de seu grupo e a todo mundo a capacida-
Se quiser remover um alias de comando, você pode emitir o comando una- de de executar o arquivo. Para fazer isso, simplesmente digite no caminho abso-
lias:
luto do arquivo, por exemplo:
unalias alias jhomejbilljdeleter
Se o arquivo estiver no diretório atual, você pode emitir o seguinte com'atmíl
o fluxo de saída padrão
.jdeleter
stderr
Você pode perguntar-se por que você simplesmente não pode \..UJ'uu,:',t O fluxo de erro padrão
mando: Por padtã:ó;:a.maídria ddsprQgrarnaslê suaentrada:d.estd i rregrava sua saÍ-
em stdout. Como ambos os fluxos normalmente são associados com um con-
deleter
os programas comportam-se como você geralmente quer, lendo os dados
De fato, essa forma ainda mais simples do comando funcionará, entrada do teclado do console e gravando a saída na tela de console. Quando
quedeleterresirlaemumdiretôrio-emseu caminhodepesqüisa: Votê",""uJ<::I'" umprogram.a bem-comportado grava uma mensagem de erro, ele grava a men-
sóbre o caminho de pesquisa mais tarde. '8agem no fluxo de stderr, que também está associado com o console por pad~ão.
O Linux.inclui vários sGripts padrãeque são executados várias vezes. er fluxos separados para saída e mensagens de erro apresenta uma oportumda-
bela 13-6 identifica esses scripts e fornece o momento em que cada um é de importante, como você logo verá.
tado. Você pode modificar esses scripts para operar de maneiras diferentes. Embora o shell associe os três fluxos padrão de entrada/saída com o conso-
exemplo, se quiser estabelecer aliases de comando que estão disponíveis le por padrão, você pode especificar os redirecionadores de entrad.a/saída que,
que você efetua login, você pode utilizar um editor de texto para adicionar as por exemplo, associam uma entrada ou fluxo de s:ída co~ ~m arqUiVO. A Tabe-
nhas apropriadas ao arquivo .profile que reside em seu diretório inicial. 13-7 resume os redirecionadores de entrada/salda maIS Importantes.
bre~-sedeque, Jáqueóilóine desse arquivo começàcom um ponto, o comal.1do
normalmente não mostrará o arquivo. Você deve especificar a opção -a a
veress~seoutros arquivos otl.lltoS~
Tabela 13-7, Redirecianadores de entrada/saída
Função
Tabela 13-6. Scripts especiais Redireciona o fluxo de saída padrão para o arquivo especificado
Script Função' Rediredónaofluxo de erro padrão pará o arquivo especifieadó
»arquivo Redireciona o fluxo de saída padrão para o arquivo especificado,
/etc!profile Executado quando o usuário efetua login acrescentando a saída ao arquivo se o arquivo já existir
-/.profile Executado quando o usuário efetua login Redireciona o fluxo de erro padrão para à arquivo especificado,
2»arquivo
-/.bashrc Executado quando BASH é carregado acrescentando a saída ao arquivo se o arquivo já existir
-/.bashJogout Executado quando o usuário efetua logout &>arquivo Redireciona a saída padrão e os fluxos de erro para o arquivo
especificado
<arquivo Redireciona o fluxo de entrada padrão para o arquivo
especificado
DICA Se quiser modificar um dos scripts padrão que deve residir em seu . «text Lê a entrada padrão até uma linha corresponder com o téxto
diretório inicial, mas acha que seu diretório inicial não contém o ar- localizado, ponto em que o fim de arquivo é enviado
quivo indicado, simplesmente crie o arquivo. Da próxima vez que cmdl I cmd2 Pega a entrada padrão de cmd2 a partir da saída padrão de cmdl
você efetuar Iogin, logout ou carregar o BASH (conforme apropria- (também conhecido como redirecionador de pipe)
do) o shell executará seu script.
Redireção de entrada/saída e piping Para ver como a redireção funciona, considere o comando wc. Este coman-
do pega uma série de nomes de arquivo como argument~s e impri~~ o número
o shell fornece três fluxos de dados padrão: total de linhas, palavras e caracteres presentes nos arqUIVOS espeCIficados. Por
stdin exemplo, o comando:
O fluxo de entrada padrão
282 wc jetcjpasswd 1283
talvez produza a saída: você pode ler de qualquer arquivo desejado mesmo que o autor tenha sido me-
nos previdente.
22 26 790 /etc/passwd
que indica que o arquivo /etc/passwd contém 22 linhas, 26 palavras e 790 carac- Alguns programas são escritos para ignorar redirecionadores. Por
teres. Geralmente, a saída do comando aparece no console. Mas, considere o exemplo, o comando passwd espera ler a nova senha apenas do
guinte comando, que inclui um redirecionadorde saída: console, não deuni arquivo. Você pode forçar esses programas a ler
de um arquivo, mas fazer isso exige técnicas mais avançadas que os
wc /etc/passwd > total redirecionadores.
Se emitir esse comando, você não verá a saída do console, porque a saída é
Quando você não especifica nenhum argumento de linha de comando,
redirecionada para o arquivo total, que o comando cria (ou sobrescreve, se o ar~
muitos programas Unix lêem sua entrada de stdi n e gravam sua saída para stdout.
quivo já existir). Se executar estes dois comandos:
Esses programas são chamados de filtros. Os filtros podem ser facilmente com-
wc /etc/passwd > total binados para realizar uma série de operações relacionadas. A ferramenta para
cattotal combinar filtros é o pipe, que conecta a saída de um programa à entrada de ou-
tro. Por exemplo, considere este comando:
você poderá ver a saída do comando wc no console.
Talvez você agora possa ver a razão por que ter os fluxos de saída separa- 1s -1 - I wc -1
dos stdout e stderr. Se o shell forneceu um único fluxo de saída, as mensagens de
erro e a saída seriam misturadas. Portanto, se você redirecionou a saída de um O comando consiste em dois comandos, unidos pelo redirecionador de
programa para um arquivo, quaisquer mensagens de erro também seriam redi- pipe (I). O primeiro comando lista os nomes dos arquivos no diretório inicial de
recionadas. Isso pode tornar difícil notificar um erro que ocorreu durante a exe- usuários, um arquivo por linha. O segundo comando invoca wc utilizando a op-
cução do programa. Em vez disso, como os fluxos são separados, você pode es- ção -1, que faz com que wc imprima apenas o número total de linhas, em vez de
colher redirecionar somente stdout para um arquivo. Quando você fizer isso, as imprimir o número total de linhas, palavras e caracteres. O redirecionador de
mensagens de erro enviadas para stderr aparecerão no console da maneira usual. pipe envia a saída do comando Is para o comando wc, que conta e imprime o nú-
Naturalmente, se preferir, você pode redirecionar stdout e stderr para o mesmo mero de linhas em sua entrada, que incidentalmente representa o número de ar-
arquivo ou redirecioná-Ios para arquivos diferentes. Como de costume no mun- quivos no diretório inicial do usuário.
do de Unix, você pode fazer do jeito que quiser. Esse é um exemplo simples do poder e da sofisticação do shell de Unix. O
. A maneira mais simples de evitar saída irritante é redirecioná-Ia para o ar~ Unix não inclui um comando que conta os arquivos no diretório inicial do usuá-
qmvo nulo, /dev/null. Se você redirecionar o fluxo stderr de um comando para rio, e não precisa fazer isso. Se surgir a necessidade de contar os arquivos, um
/dev/nulll, você não verá nenhuma mensagem de erro que o comando produz. usuário de Unix informado pode preparar um script simples que calcula o resul-
Assim como é possível direcionar a saída padrão ou o fluxo de erro de um tado desejado, utilizando os comandos Unix de uso geral.
comando para um arquivo, também é possível redirecionar o fluxo de entrada
padrão de um comando para um arquivo, de modo que o comando leia do ar-
quivo em vez de ler do console. Por exemplo, se o comando wc for emitido sem Variáveis de shell
argumentos, o comando lê sua entrada de stdi n. Digite algumas palavras e então Se estudou programação, você sabe que as linguagens de programação asseme-
digite o final de caracter e de arquivo (Ctrl-D) e o wc informará o número de li- lham-se a álgebra. Tanto as linguagens de programação como a álgebra permi-
nhas, palavras e caracteres que você inseriu. Pode-se instruir o wc a ler de um ar- tem referenciar um valor por um nome. E tanto as linguagens de programação
quivo, em vez de ler do console, emitindo um comando como: como a álgebra incluem mecanismos elaborados para manipular valores identi-
ficados.
wc </etc/passwd O shell é uma linguagem de programação, que permite referenciar variá-
Naturalmente, essa não é a maneira normal de invocar wc. O autor do wc veis conhecidas como variáveis de shell ou variáveis de ambiente. Para atribuir
convenientemente forneceu um argumento de linha de comando que permite um valor a uma variável de shell, utilize um comando que tem a seguinte forma:
284 1 especificar o arquivo do qual wc lê. Entretanto, utilizando um redirecionador,
variável=valor
Pode-se utilizar o valor de uma variável de shell em um comando prece-
Por exemplo, o comando: o nome da variável de shell por um sinal de cifrão ($). Para evitar confu-
Cotntexto emvolta; você podeincluit o nome da variável de shell dentro de
DifficultyLevel=l <,n,'""." ({ }); é uma boa prática (embora não necessário) fazer isso consistente-
Por exemplo, você pode alterar o diretório de trabalho atual para seu di-
atribui o .valor 1ª variáyd dç &h.elLchamada-RjffjÇJ,IltyLeveJ . Diferente UC:l11; N'aJe1 °rÇ',V""'" inicial emitindo o comando:
veis algébrica&, ~sva~iáv~is·de shell podemtervalures não numéricos.
pIo, o comando:
Diffi culty'=mecfi um
Naturalmente, emitir o comando cd sem argumento causa o mesmo resul-
atribui o valor medium à variável de shell.identificadacomo.Difficulty•. Entretanto, suponha que você queira mudar para o subdiretório work do
.. As vaiiáveisde shell são amplamente utilizadas dentro do Unix, seu diretório inicial. O seguinte comando realiza exatamente isso:
elas fornecemüma maneira conveniente de transferir valores de um """.... ~,
para outro. Os programas podem obter o valor de uma variável de shell cd ${HOME}/work
zar o va1.Q! para .mQdificar sua operação, da mesma maneira como unllZélID OcV
lor de argumentos de linha de comando. Uma maneira fácil de ver o valor de uma variável de shell é especificar a va-
Você pode ver uma lista de variáveis de shell emitindo o comando set. N como o argumento do comando echo. Por exemplo, para ver o valor da
maImente,o comando produz mais de uma tela simples de saída. Então, variável de shell HOME, emita o comando:
pode utilizar um redirecionador de pipe e o comando more para visualizar a
da uma tela por vez: echo ${HOME}
echo $PATH
dirá a você que o arquivo de programa é /usr/bin/wc, ou qualquer que seja o ca- ..
minho correto para seu sistema. o comando echo imprimirá o valor da variável de sh,ell PATH. Entretanto~ se in-
cluir o argumento dentro de aspas simples, você obtem o resultado desejado:
Citação literal de strings echo'$PATH'
Às vezes o shell tira conclusões errôneassobre um comando que você escreveu,
causando o globbing de um nome de arquivo ou expandindo uma referência As aspas duplas têm um efeito semelha~te. Elas imp_edem qu~, o ~hell cause
para uma variável de shell que você não pretendia. Na realidade é a sua interpre- o lobbing de um nome de arquivo mas permite a expansao de van.aveis de shell.
tação que está equivocada, não a do shell. Portanto, cabe a você reescrever seu g As aspas de abertura operam de forma diferente; elas permitem executar
comando de modo que a interpretação do shell esteja de acordo com o que você um comando e utilizar sua saída como um argumento de outro comando. Por
288 I
pretende. .. exemplo, o comando:
echo My home directory contains 'ls -wc -1' files.
. t' invocado A Tabela 13-10 descreve as maispo-
imprime uma mensagem que fornece o número de arquivos no diretório . .oeClIllca'lOS quan do seu scnp e · .
do usuário. O comando trabalha primeiro executando o comando contidQ .p,U.•~.'''''' variáveis de shell.
1s -wc I -1
Signi~do
Este comandó,como explicado anteriormente, calculaeimprimeo o· ~ÍImeiode' argumentos.,
ró de arquivos no diretório do usuário. Comóbtórriandó' '
OftóJiie do comando.
back, sua ,saída não-é impressa; em vez disso a~sa.ídasubstitui 'ot exl:0()rtlnnat
Os .argumentos individuais do comando~
1
treaSpas back.
O comando resultante torna-se: A lista inteira de argumentos, tratada como uma única palavra.
A lista inteira de argumentos, tratada como uma série de palavras.
ecnoMy nome di rectory contai ns 22 fil es.
O status de sal'da do comando anterior. O valor O denota
conclusão bem-sucedida.
Quando executado, este comando imprime a saída:
, oiâ de processo do processo atual.
My homediredorycontains22fnes.
o poder do shell de Linux Por exemplo, eis um simples script de uma linha que imprime o valor de
seu segundo argumento:
Vocêi;lgorapodecomeçar a apreciar o poder do-shell do Linux: incluindo
ses de comando em seu scriptbashrc, você pode estender o repertório de echo My second argumenthas,the va 1ue $2.
mando do shell. E, utilizando a conclusão de nome de arquivo e a lista de
rico, você pode reduzir a quantidade de digitação necessária. Uma vez que Suponha que você armazena este sc~ipt no arquivo seco.nd, altere seu modo
entende como utilizá-lo adequadamente, o shell do Linux é poderoso, rápido e de acesso para permitir a execução, e o lllvoca como segue. .
fácil para utilizar a interface que evita as limitações e a monotonia da interface
gráfica de apontar e clicar. .jsecond a b c
Mas, o shell tem recursos adicionais que estendem suas capacidades mais
ainda. Como verá na próxima seção, o shell de Linux inclui uma linguagem de o script imprimirá a saída:
programação poderosa que fornece processamento de argumento, lógica condici-
onal e loops. My second argument has the va1ue b.
. . 'veis ara acessar apenas nove argumentos.
; Note que o shell fornece ~arla p mentos A chave para fazer isso é
Entendendo scripts de shell Contudo, voc~ pode acessar mal~~~;~:e ~~:iro arg~mento e muda os valores
o comando shtft, que descarta o. P rtP to d' epois de executar o comando,
. -o para baIXO. o an , .','
Esta seção explica como ós scripts de shçll mais avançados funcionam. As infor- restantes uma poslça , I d décimo argumento. Para acessar o
mações são também adequadas para equipá-lo a escrever muitos de seus própri- shift, a variável de shell $9 contem o v: or .. :tes você simplesmente executa o
os scripts de shell úteis. A seção começa mostrando como processar argumentos décimo primeiro argumento e os su seque. '
de um script. Então mostra como realizar operações iterativas condicionais. comando shift o número apropriado de vezes.
A próxima linha é talvez a linha mais complexa do script inteiro: Você pode alterar facilmente esse intervalo para algo mais apropriado às
route del default suas necessidades.
Depois que o intervalo de tempo da conexão se passou, a próxima linha
termina todas as instâncias em execução do programa wvdial: .
O comando foute normalmente é emitido pelo administrador de --_'__ u.''''
Você mesmo provavelmente nunca emitiu o comando, porque o tmru:;,,;colnr OIt, kil1all wvdia1
outro programa de configuração de rede o emitiu em seu nome. O efeito do
mando é excluir a rota de rede padrão, se houver alguma. Arota padrão é aquela
pela qual o TCP/IP envia pacotes quando não conhece nenhuma outra rota es~ DICA o Apêndice E descreve brevemente o comando killall e outros co-
pecífica para seu destino especificado. É necessário excluir a rota padrão porque mandos possivelmente não familiares empregados nesse script.
o programa wvdial, que o script utiliza para estabelecer sua conexão PPP, não
irá sobrescrever uma rota padrão existente.
O script então pausa por dois segundos, para assegurar que wvdial termi-
wvdia1 & nou completamente:
A próxima linha carrega o programa wvdial. Como especificado pelo e co- sleep 2s
mercial (&), o programa executa no segundo plaIlo, então o script continua exe-
cutando embora wvdialinicia e executa. A próxima linha pausa o script por um Sob algumas circunstâncias, um programa ignorará uma solicitação de ter-
minuto, dando a wvdial o tempo de estabelecer a conexão PPP: minação. A próxima linha lida com essa possibilidade, enviando um código es-
pecial que compele um programa relutante em terminar sem mais demora:
sleep 1m
killall -9 wvdia1
A próxima linha executa o comando ifconfig e remete sua saída para o
usuário especificado (você deve substituir userid@mail.com pelo seu próprio Nos bastidores, wvdial carrega um programa conhecido como pppd, que
endereço de correio eletrônico, que você pode acessar remotamente): realmente estabeleceu e gerencia a conexão PPP. Outro comando killall desti-
na-se a terminar o pppd se wvdial falhar em fazer isso:
ifconfigmail userid@mail.com
ki 11 a11 pppd
299
Novamente, o script pausa por alguns segundos: o Linux é resposta capaz para tais desafios de uma variedade de maneiras.
exemplo, o programa cron, embora mélÍs complicado de utilizar que o co-
sleep 2s mando at, fornece a capacidade de especificar horas de carregamento de ptú:..
grama muito flexivelmente. Por exemplo, o cron permite estabelecer uma cone-
E, novamente o script utiliza a opção-9 para especificar se quaisquer às 10:00 da manhã da terceira sexta-feira de cada m.ês. .
tâncias restantes do pppd deve.J:Il. te.!.lllii!aI")J:!l.c::çliatª!f!~I!!~:. .. . Você pode apiêhdefrnaissobrêo Lihuxno Apêridice·E, que resume inuiios
comandos úteis do Linux que você pode utilizar e incluir em scripts de shell.
ki 11 a11 -9 pppd
boa mal1eira dec()fitinuar aprendendo sobre Linux é examinar oApêndíce
~. ê~p~iiníêtiiai cada um dos· comandos descritos; Leiasuás' páginas. ~art e
"':';~Pbifiih;"6!§iiipttififlzi"if'2i>hl~fi:d8:ji"pãf~':ãgeridaf~···e· xelcu(;ào
aprenda mais sobre elas. Pergunte-se como os comandos podem ser utilIzados
10:00:
em scripts que facilitariam o uso do Linux.
Se você verdadeiramente pegar o "vírus" do Linux, como muitos pegaram,
echo "/root/periscope"lat 10:00
você vai querer examinar outros trabalhos sobre o Linux, como:
o comando at lê um ou mais comandos de sua entrada padrão e os ex(~cuta • RunningLinux,.3a. edição, de MattWelsh, Kalle Da!~~i~_~r_~..~~:.~aufman
na hora f:specifiçadél como um aI"gulllf:.I!~().......... . -O'Kêil1y'&'Associates;-r999r:-'~'
.. 'Paia:tentar' o'scrÍptpOrsi mesmo, você deve ter instalado o programa
ai, como explicado no Capítulo 11, Conectando-se à Internet. Coloque o • Learning the bashShell, 2a. edição, de Cameron Newham e Bill Rosenblatt
no arquivo /root/periscópe. Naturalmente, você provavelmente iiáquetet (Sebastopol, CA: O'Reilly & Associates,1998).
nalizar o script para especificar uma hora de compromisso e dtiráçãode sua
ptiaescolha.Para iriiciar periScope, efetuelogin como root e emita o '-VJLUa.l ......J.
• Linux NetworkAdministrator's Guide, de Olaf :Kirch· (Sebastopol, CA:
O'Reilly & Associates, ·1995).
(echo"/root/periscope" I at 10:00)&
• Le~~ing the ~i Editor, 6a. edição, de Linda Lamb e Arnold Robbins (Sebasto-
Quando 10:00 (ou como outra hora que você especificou) estiver perto, o pol, CA: O'Reilly & Associat~s, 1998).
sistema Linux obedientemente deve discar seu ISP e manter a conexão para Din::
tervalo de tempo especificado. Você também achará uma riqueza de informações úteis sobre sites da Web
descritos no Capítulo 1 e em periódicos comoLinux Journal e Linux Magazine.
Entretanto, não somente leia sobre Linux; trabalhe com ele. Escreva, teste
Utilizando o periscope e depure seus próprios scripts. Compartilhe scripts que você escreveu com ou-
tros e estude scripts escritos por outros. Acima de tudo, leia, comunique-se e
No horário agendado, dispare seu computador e acesse sua conta de correio ele- co~partilhe o que aprendeu e o que você quer aprender. Essas atividades são a
trônico. Você deve encontrar uma mensagem de correio que contém a saída if- base da cultura do Linux e são os meios pelos quais os usuários do Linux - e o
config fornecendo o endereço de IP atual do seu computador. Agora você pode próprio Linux - crescem e se desenvolvem.
utilizar um cliente telnet ou ssh - sua escolha dependerá do servidor que você ...
estáexecutartdo emseu'sÍshiina Unux:'::paraentrar em contato com seu compu-
tador e trabalhar o resto do tempo especificado da conexão. No final do tempo
da conexão, o sistema Linux'servirásua conexão PPP, e corneçará contando até
ser novamente hora de conectar.
Continuando a avançar
Como é um script bem simples, o periscope não faz~justiça completa às capacida-
des do Linux. Por exemplo, suponha que você queira estabelecer conexões em
horas variadas ou em dias da semana variados. Ou, suponha que você queira
300 1 agendar a próxima conexão toda vez que você efetua login.
APÊNDICE A APÊNDICE B
~
A Tabela B-l descreve os principais arquivos do Linux. Você pode utilizá-la, por
Programos comuns
exemplo, para ajudá~lo a localizar rapidamente os arquivos de configuração.
link
Kernel e outros orquivos de inicializoção
Arquivos de dispositivo Tabela B-l. Principais arquivos do Linux
Programas comuns
Arquivos de configuração Descrição
Documentação
Diretório iniciol do usuório
Arquivos de configuração /boot/module-info Informações de módulo para o kernel do Linux
Bibliotecos compor/ilhados
Jogos /boot/System.map O mapa dokernel do Linux
Arquivos danificados
Arquivos de cobeçalho de C /boot/vmlinuz Kernel do Linux
Arquivos variados
Documentação on-line /etc!Xl1/XF86Config Arquivo de configuração do X
Sistemos de orquivos monto dos
Bibliotecos compartilhados /etc/Xll/xinit/Xclients Script padrão para xinit
Diretórios e orquivos que informam
status do sistema Outros oplicotivos /etc/at.al/ow Usetids de usuários autorizados a utilizar o comando at
Araiz do diretório inicial do usuório Páginas man /etc!at.deny Userids de usuários proibidos de utilizar o comando at
Programas de administração de sistema Progromos de odministroção
de sistemo
/etc!auto.master O arquivo de configuração para o daemon autofs, que
Arquivos temporários automaticamente monta os sistemas de arquivos
Informoções compartilhados
Código-fonte /etc/auto.misc Arquivo de mapa do automontador
/etc!bashrc Funções e aliases de sistema amplo para o shellBASH
Arquivos de log, arquivos de spool e outros arquivos dinfimicos /etc!conf. modules Aliases e opções para módulos do kernel carregáveis
/etc!fstab Sistemas de arquivo montados ou disponíveis para montar
/etc!group Informações de grupo
Figura A-l: A árvore de diretórios do Red Hat Linux.
/etc/host Mapa de números de IP para nomes de host
/etc/hosts.al/ow Hosts autorizados a acessar serviços de Internet
A Figura A-l mostra a estrutura típica da árvore de diretórios do Linux.
Somente os diretórios principais são mostrados. /etc!hosts. deny Hosts proibidos de acessar serviços de Internet
/etc!httpd/access.conf Arquivo de configuração do servidor da Web
/etc/httpd/httpd.conf Arquivo de configuração do servidor da Web
/etc/httpd/srm.conf Arquivo de configuração do servidor da Web
303
Tabela B-l. Continuação
APÊNDICE C
Arquivo Descrição
/etc/inetd.conf
Confi?uração para o daemon inetd, que controla o acesso RED HAT PACKAGE
a serVIços de Internet
/etc/inittab
Configuração para o daemon de init, que controla a MANAGER
execução de processos
/etc/issue
Kernel do Linux e versão de distribuição
/etc/lilo.conf
Arquivo de configuração do utilitário de carga (filo)
/ etc/login. defs Opções para useradd e comandos relacionados
/etc/minicom. users Userids autorizados a utilizar o minicom
/etc/mtab Sistemas de arquivo montados
/etc/passwd Informações sobre as contas de usuário
/etc/pine.conf Configuração do leitor de correio pine
/etc/printcap Esse apêndice apresenta o Red Hat Package Manager (RPM), uma ferramenta
Opções e capacidades de impressora ~que facilita a instalação, desinstalação e atualização do software Linux. Supo-
/etc/profile
Ambiente padrão para usuários do shell BASH nha, por exemplo, que depois de instalar o Linux, você descubra que precisa de
/etc/rc.d um aplicativo que você omitiu; é possível localizar o pacote do aplicativo ausen-
Scripts para inicialização e desligamento do sistema e de
processos .. te e utilizar RPM para instalar rápida e facilmente o aplicativo. De maneira se-
/etc/profile
Informações de segurança das contas de usuário
melhante, quando uma nova versão de um aplicativo torna-se disponível, o
/etc/skel RPM ajuda você a atualizar facilmente, preservando os arquivos de configura-
Esqueleto de arquivos Utilizados para estabelecer novas ção do aplicativo. O RPM também permite consultar o status de seus sistemas,
contas de usuário
ajudando-o a determinar se os arquivos importantes foram excluídos.
/etc/smb.conf Configuração de daemon smb (Samba)
/etc/smbpasswd
Informações sobre as conta de usuário do Samba
/ etc/smbusers Mapeamentos de usuários para o Samba Pacotes
/etc/termcap Capacidades e opções de terminais Um pacote RPM (ou, mais simplesmente, um RPM ou um pacote) é um arquivo
/var/log/cron Log da atividade do cron que contém arquivos necessários para instalar um aplicativo ou uma unidade de
/var/log/httpd/access}og software. Os pacotes RPMs são geralmente identificados utilizando uma conven-
Log do acesso ao servidor da Web ção que permite determinar o nome do pacote, a versão do software, o número da
/var/log/httpd/error_log Log de erros do servidor da Web release do software e a arquitetura de sistema a que se destina o aplicativo. A Figu-
/var/log/messages Log do sistema ra C-l mostra como os componentes de um nome de pacote são organizados.
,pac~age, - y - . ,;3,6, .
~ rpm
Instalando um pacote
Para instalar um pacote, efetue login como root e emita o seguinte comando a
partir de um prompt de shell:
rpm -ivh pacote 1 305