Você está na página 1de 36

CAPÍTULO 4 Primeiro, o sistema deve ser preparado para a inicialização.

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ê'
<

desesperar-se tentando aprender e lembrar todos eles. De fato, o número


DICA Como os outros membros da família Unix, o sistema operacional . . que você utilizará regularmente é relativamente pequeno. Em bre~
Linux diferencia letras maiúsculas de minúsculas. Certifique-se de esses comandos se tornarão uma segunda natureza para você.
digitar o userid root exatamente como ele aparece, utilizando to-
Agora tente um segundo comando, o comando date:
dos os caracteres em letras minúsculas. De maneira semelhante, a
senha deve ser digitada exatamente da mesma maneira como ela
[root@desktop jroot]# date
foi inserida na caixa de diálogo Root Password durante a instala- Tue Feb 23 11:15:20 PST 1999
ção do sistema.
.o comando date exibe a data e hora atuais;
Quando o logon foi efetuado com sucesso, você verá um prompt de co-
mando que se parece com isto:
Se você acha trabalhar com MS-DOS desagradável e intimidador,
[root@desktop jroot]# você pode não gostar imediatamente de trabalhar com a linha de
comando do Linux. Entretanto, dê a si mesmo algum tempo para se
acostumar. A linha de comando do Linux tem vários recursos que a
Esse prompt diz que o shell bash do Linux está pronto para aceitar seus co-
tornam mais fácil de utilizar e mais poderosa que o MS-DOS. Se,
mandos. depois de trabalhar com a linha de comando do Linux durante vá-
rios dias, você não se sentir à vontade com ela, não se desespere. Q
Linux fornece uma interface gráfica com o usuário, além de sua in)'\'
Emitindo comandos terface de linha de comandos. Você aprenderá a interface gráfica
com o usuário no Capítulo 6 . "
o componente do Linux que interpreta e executa comandos é chamado shell. O
Linux suporta uma variedade de shells diferentes, mas o mais popular é o shell
bash. Este capítulo apresenta os princípios básicos da utilização de shell bash;
você aprenderá mais sobre o shell no Capítulo 13.
comandos
O shell bash do Linux apresenta ao usuário uma interface de linha de co- .Às vezes você pode digitar um comando incorretamente, fazendo o Linux exibir
mandos (command-line interface - CU). As CUs são familiares aos usuários do mensagem de erro. Por exemplo, suponha que você digitou dat em vez de
Windows que trabalharam na janela do MS-DOS, e de fato a janela MS-DOS
Prompt do Microsoft Windows é um tipo de shell de linha de comandos para o
Windows. O Linux shell bash funciona de maneira muito semelhante à janela [root@desktop jroot]# dat
MS-DOS Prompt. Você digita comandos de texto e o sistema responde exibindo bash: dat: command not found
respostas de texto. Assim, como seu primeiro comando do Linux, digite w e
pressione Enter. Sua tela deve se parecer um pouco com: Nesse caso, verifique cuidadosamente a ortografia do comando e tente nova-
< mente. Se notar um erro antes de pressionar Enter, você pode utilizar a teda Back-
[root@desktop jroot]# w space para retornar até o ponto do erro e então digitar os caracteres corretos.
11:12am up 6 min, 1 user, load average: 0.00, 0.08, 0.05 Exatamente como um navegador da Web monitora sites recentemente visi-
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT tados, o shell BASH do Linux monitora comandos emitidos recentemente. Essa
root ttyl 11:13am O.OOs 0.20s O.lls -bash lista é chamada de lista de histórico e permite ver os comandos utilizados ante-
O comando w diz ao Linux para exibir o status do sistema e uma lista de to- tiormente usando a te da de seta para cima, ou os comandos posteriores utilizan-
76 1 dos os usuários do sistema. No exemplo, a saída do comando diz que agora é do a teda de seta para baixo (isto é, no caso de você já ter utilizado a te da de seta 177
para cima antes), assim como utilizaria os botões Back e Forward em um nave- Quando o sistema efetua logout, ele exibe imediatamente um prompt de
gador da Web. De fato, a lista de histórico fornece várias maneiras poderosas de login. Se mudar de idéia e quiser acessar o sistema, você pode efetuar login sim-
lembrar e reutilizar comandos freqüentemente emitidos, como veremos no Ca- plesmente fornecendo seu userid e senha.
pítulo 13.
As teclas de seta para cima e para baixo permitem rolar por uma lista de co-
mandos recentemente emitidos. Esse recurso é útil quando se quer repetir um Desligando o sistema
comando. Simplesmente use a tecla de seta para cirna pata localizar o comando
Não se deve desligar a energia de um computador enquanto estiver executando
çpressione Euter para executá-lo novamente. Além dissD,épossíveLutiliza.resse
Dftúx;ém vezdísso,deve-sedêsEgaYbsisterná operacional e depolsdeslígara
recurso quando se quer emitir um comando semelhante para alguém que você
energia. Para desligar um sistema Linux, utiliza-se o comando shutdown, que re-
emitiu recentemente. Utilize tecla de seta para cima para localizar o comando
side em um diretório chamado Isbin:
original. Então, utilize as teclas de seta para a esquerda e para a direita para posi-
cionar o cursor e fazer qualquer alteração no comando que você quiser. Por fim, , [root@desktop jroot]# /sbin/shutdown -h now
pressione Enter paraexeclltar o comando.
Não digite o prompt, que aparece automaticamente na linha de comando.
Apenas o usuário root pode emitir o comando shutdown. Se você quiser reiniciar
Utilizando consoles virtuais - . um sistema Linux, você pode utilizar uma forma alternativa do comando shut-
No Microsoft Windows, você pode ter várias janelas MS-DOS Prompt simulta- down:
neamente ativas. Embora o shell bash não tenha uma interface gráfica com o
usuário, você pode trabalhar com várias instâncias do shell, utilizando os conso- [root@desktop jroot]# /sbin/shutdown -r now
les virtuais do Linux. O Linux fornece seis consoles virtuais; você pode utilizar
pressionamentos de tecla especiais para alternar entre eles. O pressionamento Ou, ainda mais conveniente, você pode utilizar o conhecido "cumprimen-
de tecla Alt-Fn, onde n é o número de um console virtual (1-6), faz com que o to de três dedos" do MS-DOS: Ctrl-Alt-Del, que simplesmente emite um co-
Linux exiba o console virtual n. Por exemplo, você pode exibir o console virtual mando shutdown em seu nome.
2 digitando Alt-F2. Você pode visualizar apenas um único console por vez, mas Quando você desliga um sistema, o Linux automaticamente efetua o logoff
pode alternar rapidamente entre os consoles, utilizando o pressionamento de te- de todos os usuários, termina todos os programas em execução e fecha todos os
cla apropriado. arquivos abertos. Antes de desligar um sistema, você deve verificar cada console
Consoles virtuais são úteis quando se inicia uma tarefa demorada e se quer virtual para determinar se uma operação importante está em andamento. Se es-
ser capaz de realizar uma tarefa não relacionada enquanto a original está traba- tiver, você deve retardar o fechamento do sistema até a operação completar.
lhando. Além disso, você achará esses consoles úteis depois de ter estabelecido
vários userids no sistema, uma vez que você poderá efetuar logon como um
userid em um console virtual enquanto você está conectado como outro userid Trabalhando com o prompt de comando
em um console diferente.
Consoles virtuais têm um recurso protetor de tela como aquele encontrado
do Linux
no Microsoft Windows. Se um console virtual ficar inativo durante um longo Para tornar os comandos do Linux fáceis de utilizar, eles compartilham uma es-
período, o Linux apaga a tela do monitor. Para restaurar a tela sem perturbar trutura comum simples. Esta seção descreve sua estrutura comum e explica
seu conteúdo, simplesmente pressione a tecla Shift. como podem ser obtidas informações úteis dos comandos disponíveis.

Efetuando logout Estrutura de comando


Quando você terminou de utilizar um console virtual, você deve efetuar logout Os comandos de Linux compartilham a forma comum:
(desconectar-se), digitando o comando exit e pressionando Enter. Quando se
efetua logout, o sistema libera memória e outros recursos que foram alocados comando opção(ões) argumento(s)
quando você efetuou login, tornando esses recursos disponíveis para outros
O comando identifica o comando que você quer que o Linux execute. O
78 1usuários. nome de um comando Linux quase sempre consiste em letras minúsculas e dígi-179
tos. Lembre-se, diferentemente do Microsoft Windows, o Linux diferencia le- A Figura 4-1 mostra a saída resultante que o comando exibe uma página
tras maiúsculas de minúsculas; certifique-se de digitar cada caractere de um co- por vez. Note o prompt dois-pontos, que aparece no canto esquerdo inferior da
mando adequadamente. tela. Para avançar a página, pressione a tecla Barra de espaço; para voltar a pági-
A maioria dos comandos permite especificar opções ou argumentos. Entre- na, pressione a tecla b. Para sair do programa man, pressione a tecla q.
tanto, em qualquer caso dado, talvez não seja necessário fazer isso. Por exem- As páginas de manual são organizadas de acordo com um formato comum.
plo, digitar o comando w sem opções e argumentos faz com o Linux exiba uma No começo de uma página de manual, você encontrará o nome da página e a se-
lista de usuários atuais. ção do banco de dadosde páginas de manual da qual ela se origina, mostrada en-
As opções modificam a maneira como um comando funciona. A maioria tre parênteses. Por exemplo, a figura mostra a página de manual chamada w,
das opções consiste em uma única letra, prefixada por um traço. Freqüentemen- originária da seção ido banco de dados de páginas de manual. A Tabela 4-1 des-
te, é possível especificar mais de uma opção; quando faz isso, você separa cada creve as seções do banco de dados de páginas de manual; a maioria das seções é
opção com um espaço ou tabulação. Por exemplo, opção -h do comando w faz principalmente de interesse dos programadores. Como usuário e administra-
com que a saída do comando omita as linhas do cabeçalho que informam dor, você se interessará principalmente pelas seções 1 e 8.
data/hora e os nomes dos campos. Digitar:

[root@desktop /root]# w -h Tabela 4-1. Seções de Páginas de manual


Seção Descrição
imprime uma lista de usuários sem as linhas de cabeçalho.
Os argumentos especificam nomes de arquivo ou outros alvos que orien- 1 Programas executáveis e comandos de shell
tam a ação do comando. Por exemplo, o comando w permite especificar um 2 Chamadas de sistema (fornecidas pelo kernel)
userid como um argumento, o que faz com que o comando liste somente logins 3 Chamadas de biblioteca (fornecidas por bibliotecas de sistema)
que pertencem ao userid especificado. Digitar: Arquivos especiais (por exemplo, arquivos de dispositivo)
4
[root@desktop /root]# w root 5 Formatos e convenções de arquivo
6 Games
imprime uma lista dos logins atuais pelo usuário root. Alguns comandos permi- 7 Pacotes de macro e convenções
tem especificar uma série de argumentos; cada argumento deve ser separado
8 Comandos de administração de sistema
com um espaço ou uma tabulação.
9 Rotinas de kernel não-padrão

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:

[root@desktop /root]# man w


Utilizando apropos
o comando man pesquisa as páginas de manual e exibe informações detalhadas
sobre um comando especificado. O comando apropos também pesquisa as pági- o Linux recebe dados de, envia dados para e armazena dados em dispositivos.
nas de manual; entretanto, ele exibe as informações de resumo sobre páginas de Um dispositivo normalmente corresponde a uma unidade de hardware, como
manual que contêm uma palavra-chave especificada. (A pesquisa é limitada à um teclado ou uma porta serial. Entretanto, um dispositivo pode não ter corres-
curta descrição que aparece no início de cada página de manual). Por exemplo, pondente de hardware: o kernel cria vários pseudodispositivos que você pode
digitar o comando: acessar como dispositivos mas que não têm existência física. Além disso, uma
única unidade de hardware pode corresponder a vários dispositivos - por exem-
[root@desktop /root]# apropos files plo, o Linux define cada partição de uma unidade de disquete como um disposi-
tivo distinto. A Tabela 4-2 descreve alguns dispositivos típicos do Linux; nem
exibe uma lista de páginas de manual que contêm a palavra files, como mostra a todos os sistemas fornecem todos esses dispositivos e alguns sistemas fornecem
Figura 4-2. dispositivos não mostrados na tabela.
O comando apropos é útil quando você não lembra o nome de um coman-
do do Linux. Digitando uma palavra-chave relacionada, pode-se obter uma lista
Tabela 4-2. Dispositivos típicos do Linux
de comandos e pesquisar o comando desejado na lista.
Dispositivo Descrição

atibm Mouse de barramento


Como o Linux organiza os dados audio Placa de som
Para o mais eficiente uso do sistema Linux, você deve entender como o Linux cdrom Unidade de CD-ROM
organiza os dados. Se está familiarizado com o Microsoft Windows ou outro sis- console Console virtual atual
tema operacional, você achará fácil aprender a maneira como o Linux organiza
fdn Unidade de disquete (n designa a unidade; por exemplo, fdO é a
dados, porque a maioria dos sistemas operacionais organiza dados de maneira primeira unidade de disquete)
muito semelhante. Esta seção explica como o Linux organiza os dados. Além
disso, a seção introduz vários comandos importantes do Linux que funcionam ftape Unidade de fita streaming que não suporta retrocesso
com diretórios e arquivos. hdxn Disco rígido não-SCSI (x designa a unidade e n designa a partição;
por exemplo, hdal é a primeira partição do primeiro disco rígido
não-SCSI)
Tabela 4-2. Continuação grava dados especiais, chamados de sistema de arquivos, na partição. O sistema de
arquivos organiza o espaço disponível e fornece um diretório que permite atribuir
Dispositivo Descrição
um nome para cada arquivo, que é um conjunto de dados armazenados. Além dis-
inportbm Mouse de barramento so, você pode agrupar arquivos em diretórios, que funcionam quase da mesma
1pn que as pastas que você cria utilizando o Explorer do Microsoft Win-
Porta paralela (n designa o número do dispositivo; por exemplo, lpO é
a primeira porta paralela) diretórios armazenam informações sobre os arquivos que eles contêm.
Cada CD-ROM e disquete deve ter também um sistema de arquivos. O sis-
modem Modem
de arquivos de um CD-ROM é gravado quando o disco é criado; o sistema
mouse Mótise . . arquivos de· um disquete é regravado toda vez que ele é formatado.
nftape Unidade de fita streaming que suporta retrocesso O Microsoft Windows 95 permite escolher formatar uma partição como
nrftn Unidade de fita streaming que suporta retrocesso (n designa o número FAT ou FAT32. O Linux suporta uma grande variedade de tipos de sistema de
do dispositivo; por exemplo, nrftOé a primeira unidade de fita arquivos; a Tabela 4-3 resume os mais comuns. Os tipos mais importantes de
streaming) sistema de arquivos são ext2, que é utilizado para partições de Linux nativas;
nstn Unidade de fita SCSI streaming que não suporta retrocesso (n designa msdos, que é utilizado para partições FAT (e disquetes) do tipo criado pelo
o número do dispositivo; por exemplo, nstO é a primeira unidade de MS-DOS e pelo Microsoft Windows; e i s09660, que é utilizado para CD-ROMs.
fita streaming SCSI) Além disso, o Linux fornece o sistema de arquivos vfat, que é utilizado para par-
null Pseudodispositivo que aceita saída ilimitada ... fições FAT32 do tipo criado pelo Microsoft Windows 9x. Linux também supor-
ta leitura de sistemas de arquivos Windows NT NTFS; entretanto, o suporte
printer Impressora
para gravar essas partições ainda não é estável.
psaux Dispositivo indicador auxiliar, como um trackball ou a mo use do tipo
pino (knob) no Thinkpad da IBM
rftn Unidade de fita streaming que não suporta retrocesso (n designa o
Tabela 4-3. Tipos comuns de sistemas de arquivo
número do dispositivo; por exemplo, rftO é a primeira unidade de Sistema de arquivos Descrição
fita streaming)
coerente Um sistema de arquivos compatível com aquele utilizado pelo Unix
sedn Dispositivo SCSI (n designa o número do dispositivo; por exemplo,
sedO é o primeiro dispositivo SCSI) O predecessor do sistema de arquivos ext2; suportado por
compatibilidade
sdxn Disco rígido SCSI (x designa a unidade e n designa a partição; por
O sistema de arquivos Linux padrão
exemplo, sdal é a primeira partição do disco rígido SCSI firs)
Um sistema de arquivos compatível com o utilizado pelo OS/2
srn CD-ROM SCSI (n designa a unidade; por exemplo, srO é o primeiro da IBM
CD-ROM SCSI)
iso9660 Sistema de arquivos padrão utilizado em CD-ROMs
stn Unidade de fita SCSI streaming que suporta retrocesso (n designa o Um sistema de arquivos Linux antigo, ainda ocasionalmente
número do dispositivo; por exemplo, stO é a primeira unidade de fita utilizado em disquetes
SCSI streaming)
Um sistema de arquivos compatível com sistema de arquivos
ttyn Console virtual (n designa o console virtual particular; por exemplo, FAT da Microsoft, utilizado pelo MS-DOS e pelo Windows
ttyO é o primeiro console virtual) Um sistema de arquivos compatível com Network File System
nfs
ttySn Modem (n designa a porta; por exemplo, ttySO é uma conexão de da Sun
modem entrante na primeira porta serial) ntfs Um sistema de arquivos compatível com o utilizado por
zero Pseudodispositivo que fornece um fluxo inesgotável de zero bytes sistema de arquivos NTFS do Microsoft Windows NT
Um sistema de arquivos compatível com o utilizado pelo
System V Unix da AT&T
vfat Um sistema de arquivos compatível com o sistema de arquivos
FAT32 da Microsoft, utilizado pelo Windows 9x
Sistemas de arquivos
xenix Um sistema de arquivos compatível com o utilizado pelo Xenix
Se você estiver utilizando Microsoft Windows ou Linux, você deve formatar uma
841 partição antes de armazenar dados. Quando você formata uma partição, o Linux 1 85
-localização do diretório iniciando no diretório-raiz; você forma o nome de ca-
Díretórios ~U"""'~ como uma lista de diretórios, separados por barras normais (j). Por
Se já utilizou oMS-DOS, você deve estar familiarizado cornos conceitos de ar- exemplo, o nome do caminho absoluto do único diretório chamado bill é
quivo e diretório, e com vários comandos de MS-DOS que trabalham com os ar- fhomelbill. O nome do caminho absoluto do subdiretório school do diretório
quivos e diretórios. Sob o Linux, arquivos e diretórios funcionam de maneira é Ihome/billlschool. O nome do caminho absoluto do identicamente chama-
muito semelhante à do MS-DOS. do subdiretório school do diretório patrick é /home/patrick/school.

Diretório inicial e diretório de trabalho


Quand? você efetua login no Linux, você é colocado em um diretório especial,
conheCido como seu diretório inicial ou diretório home. Geralmente, cada usuá-
rio temum diretório inicial distinto, onde o usuário cria arquivos pessoais. Isso
torna simples para o usuário localizar arquivos previamente criados, uma vez
que eles são mantidos separados dos arquivos de outros usuários.
O diretório de trabalho - ou diretório de trabalho atual, como é às vezes
chamado - é o diretório em que você está trabalhando atualmente. Quando
você efetua login no Linux, seu diretório inicial é seu diretório de trabalho. Uti-
lizando o comando cd (que você conhecerá em breve), você pode mudar seu di-
retório de trabalho.
Figura 4-3: Uma árvore de diretórios hipotética do Linux.
A árvore de diretórios
Quando um subdiretório está muitos níveis abaixo do diretório-raiz, seu
Os diretórios de um sistema Linux são organizados como uma hierarquia. Dife-
nome de caminho absoluto pode ser longo e incômodo de trabalhar. Nesse caso,
r~nte do MS-DOS, que fornece uma hierarquia separada para cada partição, o
pode ser mais conveniente utilizar um nome de caminho relativo, que utiliza o
Lmux fornece uma única hierarquia que inclui cada partição. O diretório mais
diretório atual, em vez do diretório-raiz, como seu ponto de partida. Por exem-
alto da árvore de diretórios é o diretório-raiz, que é escrito utilizando uma barra
plo, suponha que o diretório bill seja o diretório de trabalho atual; você pode se
normal (/), não a barra invertida (\) utilizada pelo MS-DOS para designar um di-
referir a seu subdiretório books pelo nome de caminho relativo books. Note que
retório-raiz.
um nome de caminho relativo nunca pode iniciar com uma barra normal, ao
A Figura 4-3 mostra uma árvore de diretórios hipotética do Linux. O dire-
passo que um nome de caminho absoluto deve iniciar com uma barra normal.
tório-raiz contém seis subdiretórios: bin, dev, etc, home, tmp, e usr. O diretório ini-
Como um segundo exemplo, suponha que o diretório home seja o diretório de
cial tem dois subdiretórios; cada um é o diretório inicial de um usuário e tem o
mesmo nome do usuário que o possui. O usuário chamado bi 11 criou dois subdi- trabalho atual. O nome de caminho relativo do subdiretório school do diretório
retórios em seu diretório inicial: books e sch()ol. O usuário chamado patrick cri- bill seria billlschool; o nome de caminho relativo do chamado identicamente
ou um subdiretório simples em seu diretório inicial: school. subdiretório do diretório patrick seria patrick/school.
Cada diretório (diferenciado do diretório-raiz) está contido em um diretó- O Linux fornece dois nomes de diretório especiais. Utilizar um único pon-
rio conhecido como seu diretório pai. Por exemplo, o diretório pai do diretório to (.) como um nome de diretório é equivalente a especificar o diretório de tra-
de bill é home. balho. Utilizando ponto ponto (.. ) dentro de um nome de caminho, você é leva-
do para cima no caminho atual até o diretório pai. Por exemplo, se o diretório
de trabalho for home/bill, ,. refere-se ao diretório /home. De maneira semelhan-
Nomes de caminho absolutos e relativos te, o caminho .';patrick/school refere-se ao diretório /home/patrick/school.
Note na figura que existem dois diretórios chamados school: um é um subdire-
tório ~e bill e o outro é um subdiretório de patrick. Para evitar a confusão que
podena resultar quando vários diretórios têm o mesmo nome, diretórios são es-
Comandos que funcionam com diretórios
pecificados utilizando nomes de caminho. Existem dois tipos de nomes de cami- Agora que você entende os fundamentos de como o Linux organiza os dados,
861 nho: absoluto e relativo. O nome do caminho absoluto de um diretório rastreia está pronto para aprender alguns dos comandos que trabalham com diretórios. 187
Ernvez de simplesmente ler esta seção, você pode efetuar login do sistema Linux
A forma mais simples do comando Is não recebe nenhuma opção ou argu-
e experimentar os comandos por sua própria conta. Somente experimentando,
. Ela simplesmente lista o conteúdo do diretório de trabalho, incluindo
você começará a desenvolver habilidade em trabalhar com comandos de shell.
e subdiretórios (sua saída irá diferir, refletindo os arquivos presentes
seu diretório de trabalho):
Exibindo o diretório de trabalho
[root@desktop /root]# 15
Para exibir o diretório de trabalho atual, emita o comando pwd. O comando GNUstep firewall sniff
pwd não requer qualquer opção ou argumento. Xrootenv.O Linux ssh-1.2.26
audio.cddb mail ssh-l.2.26.tar.gz
[root@desktop /root]# pwd audio.wav - - mi rror support
/root axhome mirror-2.8.tar.gz temp
conf nlxb318l.tar test
corel openn testo doc
O comando pwd exibe o nome do caminho absoluto do diretório de trabalho. drivec. img scan tulip.c
dynip 2.00.tar.gz screen-3.7.6-0.i386.rpm win95
[root@desktop /root]#
Alterando o diretório de trabalho
Para alterar o diretório de trabalho, emita o comando cd, especificando o nome Aqui, a saída é apresentada em ordem léxica (dicionário), co~o três colu-
de caminho do novo diretório de trabalho como um argumento. Você pode uti- nas de dados. Note que nomes de arquivo iniciando com letras maiúsculas apa-
lizar um nome de caminho absoluto ou relativo. Por exemplo, para mudar do recem antes daqueles que começam com letras minúsculas.
diretório de trabalho para o diretório /bin, digite: _ Uma forma mais sofisticada do comando Is que inclui a opção -I exibe infor-
mações descritivas junto com os nomes de arquivo, como mostra a.Figur~ ~-4.
[root@desktop /root]# cd /bin A primeira linha da saída mostra a quantidade ~e espaço em dlsco utlhzada
[root@desktop /bin]# pelo diretório de trabalho e seus subdi.retórios? medld~s e~ ?locos de lK. ~ada
uma das demais linhas descreve um úmco arqmvo ou dlretono. As colunas sao:
Note como o prompt muda para indicar que /bin agora é o diretório de tra-
balho.
Type "
Você pode rapidamente retornar para seu diretório inicial emitindo o co- O tipo de arquivo: um diretório (d) ou um arqmvo comum (-). ~e o, s~stema
mando cd sem um argumento: suporta cor, o Linux exibe linhas de saída que pertencem aos dlretonos em
azul e linhas que pertencem aos arquivos em branco.
[root@desktop /bin]# cd
[root@desktop /root]#
Access modes
O modo de acesso, que determina que usuários podem acessar o arquivo
Novamente, note como o prompt muda para indicar o novo diretório de ou diretório.
trabalho.
Se você tentar mudar o diretório de trabalho para um diretório que não Links
existe, o Linux exibe uma mensagem de erro:
O número de arquivos ou diretórios vinculados a esse.
[root@desktop /root]# cd nowhere
bash: nowhere: No such file or directory Group
O grupo que possui o arquivo ou diretório.
Exibindo conteúdo de diretório
Size
Para exibir o conteúdo de um diretório, você utiliza o comando Is. O comando O tamanho do arquivo ou diretório, em bytes.
Is fornece muitas opções úteis que permitem controlar sua operação e saída ao
seu gosto. Modification date .. , .
A data e hora em que o arquivo ou diretório foram modlÍ1cados pela ultlma
vez.
1 89
[root@desktop / root] # Is - 1 Quando o nome de um diretório ou arquivo inicia com um ponto (.), a saí-
total 558414
_da do comando Is normalmente não inclui o diretório ou arquivo, que dizemos
d rwxr-xr-x 5 root root 1024 Dec 23 13:48 GNUstep
- rw-r--r-- 1 root root 331 Feb 11 10:19 Xrootenv.O ser oculto. Como a saída do comando Is inclui diretórios e arquivos ocultos, uti-
- rw-rw-r-- 1 root root 490 Jan 6 15:07 audio.cddb lize a opção -a. Por exemplo, para listar todos os arquivos e subdiretórios no di-
- rw-r--r-- 1 root root 45254876 Jan 6 15:08 audio.wav
d rwxr-xr-x 2 root root 1024 Feb 20 16:41 axhome retório atual- incluindo os ocultos - digite:
- rw-r--r-- 1 root root 900 Jan 18 20:15 conf
d rwxr-xr-x 2 root root 1024 Dec 25 10:03 corel
- rw-r--r-- 1 root root 915 Jan 1820:57 firewall [root@desktop jroot]# 15 -a -1
d rwxrwxr-x 2 root root 1024 Jan 6 15:42 linux
d rwx------ 2 root root 1024 Jan 4 02:19 mail
d rwxr-xr-x 3 root root 1024 Jan 4 01:49 mirror
- rwxr--r-- 1 root root - 29 Dec 27 15:07 openn Se preferir, você pode combinar as opções -a e -Is, digitando o comando assim:
~I rwxí-xr-x I ~Irot I I ryt l 1024"Dec 26 13:24"scan
type # of owner group
I I [root@desktop jroot]# 15 -a1
OCCElSS size modificotion nome
modes links (bytes) date ond time
Um usuário do diretório inicial geralmente inclui vários arquivos ocul-
Figura 4-4: A saída do comando Is. tos contendo as informações de configuração para vários programas. Por
exemplo, o arquivo. profile contém informações de configuração para o shell
Name do Linux.
O comando Is fornece várias opções úteis adicionais; veja sua página de
O nome do arquivo ou diretório.
manual para detalhes.
Você aprenderá mais sobre modos de acesso, links e grupos nas seções sub-
seqüentes deste capítulo. Criando um diretório
Se um dire~ório. contiver muitos arquivos, a listagem preencherá mais que
uma tela. Para vlsuahzar a saída de uma tela por vez, utilize o comando: Você pode criar diretórios utilizando o comando mkdir. Apenas digite o nome
do novo diretório como um argumento do comando. O Linux cria o diretório
ls -1 I more como um subdiretório do diretório de trabalho. Por exemplo, esse comando
cria um subdiretório chamado-office:
Esse comando emprega o redirecionador de pipe (I , explicado no Capítu-
lo 1~), enviando saída do subcomando Is para subcomando more, que apresenta [root@desktop jroot]# mkdir office
a ~a~da de, uma tela por vez. Você pode controlar a operação do comando more,
utlhzando as seguintes teclas: Se você não quer criar o novo diretório como um subdiretório do diretório
de trabalho, digite um nome de caminho absoluto ou relativo como o argumen-
• Barra de espaço move uma página para frente to. Por exemplo, para criar um diretório chamado rootjdocuments, digite:

• b move uma página de volta [root@desktop jroot]# mkdir /root/document5

• 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

Figura 4-6: Os modos de acesso especificam três permissões.

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.

[root@desktop jroot]# 1s /mnt/cdrom


4-6.
:==cc.cc. .
Design~ores ~ unidade de disquete
Para montar um disquete na unidade a:, digite: Significado

[root@desktop jrootl#mount /déV/fdO Imnt/f1oPPY disquete de 3,5 pol. em a: (1,44 MB)


disquete de 5,25 pol. em a: (360 kB)
Para desmontar um dispositivo, especifique o ponto de montagem como disquete de 3,5 pol. em a: (720 kB)
um argumento do comando umount. Por exemplo, para desmontar um CD-ROM, disquete de 5,25 pol. em a: (1,2 MB)
digite:
disquete de 3,5 pol. em a: (1,44 MB)
[root@desktop jroot]# umount /mnt/cdrom disquete de 3,5 pol. em a: (2,88 MB)
disquete de 3,5 pol. em b: (1,44 MB)
Somente o usuário root pode desmontar um dispositivo. Além disso, um disquete de 5,25 pol. em b: (360 kB)
dispositivo só pode ser desmontado se não estiver em uso. Se, por exemplo, o
diretório de trabalho de um usuário for um diretório do dispositivo, o dispositi- disquete de 3,5 pol. em b: (720kB)
vo não pode ser desmontado. disquete de 5,25 pol. em b: (1,2 MB)
disquete de 3,5 pol. em b: (1,44 MB)
DICA /dev/fdlH2880 disquete de 3,5 pol. em b: (2,88 MB)
Se você não conseguir desmontar um dispositivo, verifique cada
console virtual para ver se um deles tem uma sessão que está utili-
zando o dispositivo como seu diretório de trabalho. Se estiver, en-
cerre a sessão ou mude para um diretório de trabalho que não esteja
associado c;om o dispositivo.
Visualizando informações do sistema
o Linux fornece uma variedade de comandos que informam o status do sistema.
Formatando disquetes Os comandos mais comumente utilizados são mostrados na Tabela 4-7. Esses co-
Antes de poder gravar dados em um disquete, você deve formatá-lo. O comando podem ajudar a solucionar problemas de siste~~ e a identificar~gargalos
111<Ul\.lV"

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.

SHELLBASH 13-1. Shells comuns do Linux


Nome(s) de programe Descrição ..

/bin/ash Assemelha-se ao shell utilizado pelo


/bin/bsh SystemV Unix da AT&T.
/bin/bash O shell padrão para Linux, baseado
/bin/bash2 no shell Bourne original para Unix.
De acordo com sua página man,
BASH é "em última instância
projetado" para ser compatível com o
Este capítulo descreve o poderoso shell BASH, fornecendo uma explicação _
POSIX.
to mais detalhada que aquela fornecida no Capítulo 4. O capítulo também
plica brevemente as variáveis de shell, os scripts de shell e os aliases de shell, /bin!csh O segundo shell do Unix. Projetado para
parando você para um estudo aprofundado e contínuo do Linux. /bin/tcsh facilitar a utilização interativa, adicionou
muitos novos recursos e funções. Sua
sintaxe assemelha-se àquela da

o shell do Linux /bil1/ksh


linguagem de programação C.
O terceiro shell do Unix, adicionou
Você encontrou o interpretador de comandos, ou shell, do Linux antes muitos dos recursos do shell Cao
livro. Como uma janela de prompt do MS-DOS, o shell permite dar CVHldll.UV; shell Bourne original.
que ele interpreta ou executa. Por meio do shell, você utiliza e controla o /bin/zsh Um shell compacto baseado no shell
ma. Korn.

Uma variedade de shells


O shell do MS-DOS foi relativamente consistente ao longo do tempo; Por que aprender a utilizar o shell?
exemplo, as diferenças entre MS-DOS v3 e oMS-DOS v7 são pequenas. O
Se estiver acostumado ao mundo de apontar e clicar das interfaces gráficas com
de Unix, entretanto, experimentou o desenvolvimento significativamente
Ousuário, você pode questionar o valor de aprender a utilizar o shel.l do Linux.
acelerado que o MS-DOS. Hoje, você encontra não só versões como L<UHUI_IU
Muitos usuários inicialmente acham o shell incômodo e alguns se retIram para o
variantes do shell do Unix. As variantes de shell do Unix têm muito em comum,
conforto familiar da interface gráfica com o usuário, evitando o shell sempre
mas cada um tem uma autoria e uma história diferentes e cada uma reflete
visão diferente da maneira como os usuários devem interagir com o Unix. que possível. ' . . . . .
Embora seja verdade que o shell é um estllo maiS antlgo de mteraglr com
O Linux inclui os mais populares shells para Unix, como mostrado na T a-
um computador do que a interface gráfica com o usuário, a interfa~e gráfica
bela 13-1. O shell mais popular para Linux é o shell BASH (o "Bourne Again
com o usuário é realmente a interface mais primitiva. A interface gráfICa com o
SHell"), baseado no shell Bournç original para Unix. O shell BASH é ampla-
usuário é fácil de aprender e amplamente utilizada, mas o shell é muito mais so-
mente compatível com o padrão POSIX, que especifica a sintaxe e a operação de
fisticado. Utilizar uma interface gráfica com o usuário é algo como se comunicar
um shell Unix padrão, e que foi amplamente implementado. Por causa da popu-
laridade do padrão POSIX e a óbvia vantagem de trabalhar com um shell que é na linguagem de sinais de certas tribos indígenas norte-ame.ricanas. ~e. sua men-
sagem é simples como "viemos em paz", você pode comumcar-se utlhzando al-
consistente entre várias plataformas de computação, este capítulo focaliza o
guns gestos. Entretanto, se você tentar expressar algo como Gettysburg address 1 273
2721 shell BASH. A maioria dos sistemas Linux é configurada automaticamente para
do presidente Lincoln - um discurso público notavelmente conciso - por ; mas, quando diante de um problema complexo .~desestruturado, ~ue
da linguagem de sinal dos índios, você acharia sua tarefa terrível. solução criativa, o shell é a ferramenta mms frequentemente prefenda.
A American Sign Language, utilizada para comunicar-se com aqueles Criando soluções na forma de scripts de shell, elas podem ser ar~azenadas para
tem problemas auditivos, é uma linguagem muito mais rica que a linguagem reutilização subseqüente. Talvez ainda mais importante, os scnpts de. shell po-
sinais dosíndios .. lnfelizmente, os programadores· ainda não acordaram .. ser instruídos para estudar muito rapidamente os detalhes esqueCidos, ace-
desafio decriarinterfaces gráficas com o usuário que sejall1 igualmente lerando a solução de problemas relacionados.
das. O designer de um programa que fornece uma interface gráfica com o
rio deve antecipar todas as possíveis maneiras como o usuário irá interagir
o programa, e fornecer maneiras de acionar as respostas apropriadas de n,",~n.. ~.· tilizando O shell
ma por meio das capacidades de apontar e clicar. Conseqüentemente, o U1>IUalLIO
Este livro introduziu o shell no Capítulo 4. Entretanto, muitos detalhes importan-
é limitado a trabalhar apenas de maneiras previstas. O usuário é portanto'
tes foram omitidos naquele capítulo, que era voltado para ~udar ~ ,instalar e fazer
paz de adaptar o programa da interface gráfica com o usuário para acomodar
funcionar o sistema Linux o mais rápido possível. Esta s~çao :~vIslta o shell, for-
tarefas e circunstâncias imprevistas. Em resumo, essa é a razão pela qual ......U<li'
necendo informações que ajudarão a utilizá-lo de maneIra efICIente.
tarefas de administração de sistema são realizadas utilizando shell: au-uu>uo,u
dores de sist(!ma, no cumprimento de sua responsabilidade para manter um sis-
tema funcionando bem, devem continuamente lidar com e driblar situações'
previstas. Digitando comandos de shell
O shell reflete afilosofia subjacente do Unix, que fornece uma ampla varie- Ao digitar comandos de shell, você tem acesso a um mini-editor parecido com o
dade de ferramentas simples e pequenas (isto é, programas), cada uma realizan- editor DOSKEYS do MS-DOS. A Tabela 13-2 resume alguns com~ndos de te-
do uma única tarefa. Quando uma operação complexa é necessária, as ferra- clado úteís interpretados pelo shell. Os comandos de teclado ~ermltem. aC,e~sar
mentas trabalham juntas para realizar a operação complexa como uma série de uma lista de comandos recentemente executados, chamada lzsta, de h~s~ortco.
operações simples, um passo por vez. Muitas ferramentas do Unix manipulam Para reexecutar um comando, você pode pressionar a tecla para CIma vanas ve-
texto e, como o Unix armazena seus dados de configuração em forma de texto zes até localizar o comando, e então simplesmente pressionar Enter para execu-
em vez da forma binária, as ferramentas são adaptadas idealmente para manipu- tar o comando.
lar o próprio Unix. A capacidade do shell de combinar ferramentas livremente
de maneiras singulares é o que torna o Unix poderoso e sofisticado. Além disso,
Tabela 13-2. Atalhos de teclado úteis para edição
como você aprenderá, o shell é extensível: é possível criar scripts de shell que
permitem armazenar uma série de comandos para execução mais tarde, pou~ Atalho de teclado Função
pando-Ihe de tediosas tarefas rotineiras. Move para trás um comando na lista de histórico.
A filosofia contrária é vista em sistemas operacionais como o Microsoft Tecla de seta para cima
Move para frente um comando na lista de histórico.
Windows, que empregam programas elaborados, monolíticosque fornecem· Tecla de seta para baixo
menus, submenus e caixas de diálogo. Tais programas não têm uma forma de Move para trás um caractere.
Esquerda
cooperar entre eles para realizar operações complexas que não foram antecipa-- Direita
Move para frente um caractere.
das quando os programas foram projetados. Eles são fáceis de utilizar contanto Move para frente uma palavra.
que você permaneça no caminho conhecido, mas se sair fora da trilha você logo Escf
Move para trás uma palavra.
se encontrará em um confuso deserto. Esc b
Move para o início da linha.
Naturalmente, nem todo mundo compartilha dessa perspectiva. Os grupos Ctrl-A
de notícias Usenet, por exemplo, estão repletos de postagens que debatem os Ctrl-E Move para o fim da linha.
méritos relativos das interfaces gráficas com o usuário. Alguns vêem o shell de Exclui o caractere atual.
Ctrl-D
Unix como uma misteriosa e intimidante monstruosidade. Mas, mesmo se eles Exclui o caractere anterior.
estiverem corretos, é indiscutível que quando você aprende a utilizar o shell, Backspace
-Esc d Exclui a palavra atual.
você começa a ver o Unix da perspectiva com que ele foi originalmente projeta-
do (seja isso para melhor ou para pior). Exclui desde o início da linha.
Ctrl-U
A perspectiva do autor é pragmática: ao realizar operações comuns de roti- Exclui até o fim da linha.
Esc k
2741 na, uma interface gráfica com o usuário que minimiza a digitação pode ser um
Tabela 13-2. Continuação Vários outros caracteres especiais controlam a operação do shell, como
mostrado na Tabela 13-4. Os caracteres # e ; são mais freqüentemente utiliza-
Atalho de teclado Função
dos em scripts de shell, sobre os quais você aprenderá mais adiante neste capítu-
Ctrl-Y Recupera o último item excluído. lo. O caractere & é útil para executar um comando como um processo e:m se-
Esc. Insere a última palavra do comando anterior. gundo plano.
Ctrl-L Limpa ateIa, colocando a linha atual na parte
superior da tela. Tabela 13-4. Outros caracteres especiais de shell
Tab Tenta completar a palavra atual, interpretando-a Caractere Função
como um nome de arquivo, nome de usuário, nome
de variável, nome dehost ou comando, conforme # Marca o comando como um comentário, que o shell ignora.
determinado pelo. contexto. ..,
.
Separa comandos, deixando você inserir vários comandos em uma
Esc question Lista as possíveis conclusões. única linha.
& Colocado no fim de um comando, faz com que o comando execute
como um processo de segundo plano, de modo que um novo prompt
de shell apareça imediatamente depois que o comando é inserido.
Um dos atalhos de teclado pata edição mais úteis, T ab, também pode
utilizado ao digitar um comando. Se você digita a primeira parte de um nome
arquivo e pressione Tab, o shell tentará localizar arquivos com nomes que
respondem com os caracteres que você digitou. Seexatamente um arquivo
sim existir, o shell preenche o nome parcialmente digitado com os ca:ra(:telres.·.··. Comandos e argumentos
adequados. Você então pode pressionar Enter para executar o comando ou Como você já sabe, a forma geral de uma linha de comando de shell é essa:
tinuar digitando outras opções e argumentos. Esse recurso, chamado conclusã6
de nome de arquivo ou conclusão de comando, torna o shell muito :mais fácíl command options arguments
utilizar.
Além dos atalhos de teclado para editar a linha de comando, o shell inter- O comando determina a operação que o shell realizará e as ?pções e argu-
preta vários atalhos de teclado que controlam a operação do programa atual- mentos que personalizarão ou farão o ajuste fino da operação. As vezes, o co-
mente executando. A Tabela 13-3 resume esses atalhos de teclado. Por exem- mando especifica um arquivo de programa que será carregado. e executado; esse
plo, digitar Ctrl-C geralmente cancela a execução de um programa. Esse co:mim~ comando é denominado comando externo. O Linux geralmente armazena.esses
do de teclado é útil, por exemplo, quando um programa está levando muito arquivos em /bin, /usr/bin ou /usr/local/bin. Os comandos de administração de
tempo para executar e você quer fazer outra coisa. sistema geralmente são armazenados em /sbin ou /usr/sbin. Quando um coman-
do especifica um arquivo de programa, o shell paSsa quaisquer argumentos es-
pecificados para o programa, que os varre e os interprete, ajustando sua 9pera-
Tabela 13-3. Atalhos de teclado úteis para controle
ção de acordo.
Atalhos de teclado Função Entretanto, alguns comandos não são arquivos de programa; em vez disso
são comandos predefinidos interpretados pelo próprio shell. Uma maneira im-
Ctrl-C Envia um sinal de interrupção para o comando atualmente
executando,.que geralmente responde terminando-se.
portante em que os shells diferem é os comandos predefinidos que eles supor-
tam. Mais tarde nesta seção, você aprenderá sobre alguns comandos construídos
Ctrl-D Envia um fim de arquivo para o comando atualmente
no shell BASH.
executando. Utilize esse pressionamento de tecla para
terminar a entrada de console.
Ctrl-Z . Suspende o programa atualmente executando. Globbing de nome de arquivo
Antes de o shell passar os argumentos para um comando externo ou interpretar
um comando predefinido, ele varre a linha de comando em busca de certos ca-
276 1 racteres especiais e realiza uma operação conhecida como globbing de nome de 1 277
arqui~~. Globbing de nome de arquivo assemelha-se ao processamento de
gasutihzado em comandos do MS-DOS, mas é muito mais sofisticado. A
o metacaractere de nome de arquivo? pode corresponder com apenas um
~caractere. Portanto, arquivo04 não apareceria na saída do comando.
13-5 descr~ve os caracteres especiais utilizados em globbing de nome de
" ..'l-' ..., ...

vo, conhecido como metacaracteres de nome de arquivo. De maneira semelhante, o comando:


fil e[2-3]

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.

U~a vez ,qu~ o alias éest~bel,e~ido, se equivocadamentedigitarDir,


d~voce obteraahstageIndedlfetoflO que quer. Se quiser,você pode
alIases semelhantes para outros comandos. script de shelL é simplesmente um arquivo queçOntémçolllandos.Armaze-
nar comandos como um script de shell torna fácil executá-los repetidas vezes.
Sua configuração ~adrão do Linux provavelmente define vários aliases Como um exemplo, considere um arquivo identificado deleter, que contém as
seu nome. Para ver quaIs eles são, emita o comando: .. .. s_eguintes linhas:
alias echo ~n Deleting the temporary files •.
rm -f *.tmp
echo Done.
Se tiver efetuado login como root, você pode ver os seguintes aliases:
Os comandos echo simplesmente imprimem texto no console. A opção -n
alias cp='cp -i'
a1; as di r=' 1s -1'
d() primeirQ comando eeho provoca omissão do caracter e de nova linha final,
alias ls='ls -color' normalmente escrito pelo comando eeho, então ambos os comandos eeho escre-
alias mv='mv -i' vem seu texto em uma única linha. O comando rm remove do diretório de tra-
alias rm='rm -i' balho atual todos os arquivos que têm nomes que terminam com .tmp.

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}

.. se.LI··fÍIo.l:'e ,. 'Para-tornar'ovalorde umavariável-deshelldisponívelnãosó para o shell,


. mas também para programas invocados utilizando o shell, você deve exportar a
PressÍ<me a Barra de espaço para ve~ cada página sucessiva da saída. V variável de shell. Para fazer isso, utilize o comando de exportação, que tem a
provavelmente verá muitas das variáveis de shell descritas na Tabela 13-8, forma:
aquelas impressas pelo comando set. Os valores dessas variáveis de shell
mente são configurados por um ou outro dos scripts de inicialização cte:scrlto export variável
anteriormente neste capítulo.
onde variável especifica o nome da variável a ser exportada. Uma forma abrevia-
da do comando permite atribuir um valor a uma variável de shell e exportar a
Tabela 13-8. Variáveis de ambiente importantes
variável em um único comando:
Variável Função
export variável=valor
DISPLAY' A tela do X a ser utilizada; por exemplo, localhost:O
HOME O caminho absoluto do diretório inicial do usuário Você pode remover o valor associado com uma variável de shell dando à
HOSTNAME O nome Internet do host variável um valor vazio:
LOGNAME O nOme delogin do usuário
variável=
MAIL O caminho absoluto do arquivo de correio do usuário
PATH O caminho de pesquisa (veja a próxima subseção) Entretanto, uma variável de shell com um valor vazio permanece uma va-
SHELL O caminho absoluto do shell atual riável de shell e aparece na saída do comando set. Para eliminar uma variável de
TERM O tipo de terminal shell, você pode emitir o comando unset:
USER O nome de usuário atual do usuário; pode diferir do nome de
login se o usuário executa o comando su unset variável
Uma vez que você desconfigura o valor de uma variável, a variável não apa-
286/ rece mais na saída do comando set. 287
o caminho de pesquisa Os caracteres para citação literal, descritos na Tabela 13-9; po~em aju-
A variável especial de shell PATH armazena uma série de caminhos conhecidos . .:10 a fazer isso, controlando a operação do shell. Por exempl~, mclumdo um
letivamente como caminho de pesquisa. Sempre que você emite um -~ ..." •.u de comando dentro de aspas simples, você pode eVitar que o shell
externo, o shell pesquisa os caminhos que abrangem o caminho de cal;<.uUseHHo'·gHlo~bbing do argumento, ou substitua o argumento pelo valor de uma va-
buscando o arquivo do programa que corresponde com o comando. Os riá.vel de shell.
de inicialização estabelecem o valor inicial da variável de shell PATH, mas
pode modificar seu valor para incluir quaisquer séries desejadas de .-~..... u.,,,, '~']:(lbela 13-9 Caracteres entre aspas
Você deve utilizar dois-pontos {:} para separar cada caminho do caminho
pesquisa. Função
Por exemplo, suponha que PATH tem o seguinte valor: Caracteres dentro de um par de aspas simples são interpretados
literalmente; isto é, os significados de seus metacaracltler~s (sebh~uv~r
/usr/bin:/bin:/usr/local/bin:/usr/bin/Xll:/usr/XIIR6/bin
a1gum ) sa-o ignorados. De maneira semelhante,
. o1 she1 nao
d su .stltUl
, 1 as
referências ao shell ou variáveis de amblente pe o va or a vanave
Você pode adicionar um novo diretório de pesquisa, digamos /Y1()"""~'fY" referenciada.
emitindo o seguinte comando: Caracteres dentro de um par de aspas duplas são interpretados
literalmente; isto é, os significados de seus met~c~racteres ~se ~ouver
PATH=${PATH}:/home/bill 1 m) são ignorados. Entretanto, o shell substltUl as referen~las ao
:h~l ou variáveis de ambiente pelo valor da variável referenCiada.
Agora, o shell procurará programas externos em /home/bill bem como Texto dentro de um par de aspas de abertura é interpretad? como um
diretórios padrão. Entretanto, ele examinará essa localização por último. Se' comando que o shell executa antes de executar o r~s~o da hnha de
preferir verificar /home/bill primeiro, emita o seguinte comando, em vez do an; comando. A saída do comando substitui o texto ongmal entre as
terior: aspas de abertura.
\ O caractere seguinte é interpretado literalmente; isto é, o significado de
PATH=/home/bill:${PATH}
seu metacaractere (se houver algum) é ignorado. O caractere de ~arra _
. t'da tem uma utilização especial como um caractere de contmuaçao
mver 1 . 'd l' h
O comando which ajuda a trabalhar com a variável de shell PATH. Ele verifi- 1· h Quando uma linha termina com uma barra .mvertl
d elna. l"h a, essa ln a
ca no caminho de pesquisa o arquivo especificado como seu argumento e impri- e a linha seguinte são consideradas partes de uma úmca ln a.
me o nome do caminho correspondente, se houver um. Por exemplo, suponha,
que você queira saber onde o arquivo do programa para o comando wc reside,
O comando:
Para ver isso em ação, considere a maneira como você pod~ .fazer com que
which wc o comando echo produza a saída $PATH. Se você simplesmente emitir o comando:

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.

troe das aspas de abertura:

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.

Processando os argumentos Códigos de saída .


., atus numérico de saída do comando maIS re-
A vanavel de shell $1 armazena o st _ status de saída de zero denotàc()n-
Você pode escrever facilmente scripts que processam argumentos, porque um
centemente comp~etado. Por cOlnvenàao, ~mm condições de erro de vários tipos.l"1
290 Iconjunto de variáveis de shell especiais armazenam os valores de argumentos es-
. clusão bem-sucedIda; outros va ores eno a
Você pode configurar o código de erro em um script emitindo o rro'n.", ..
exit, que termina o script e envia o status especificado de saída. O " __LI"",."" 13-11. Continuação
comando é:
A função

exit status o inteiro n1 é maior que o inteiro n2.


-le n2 O inteiro n1 é menor que o inteiro n2.
onde status é um inteiro não negativo que especifica o status de saída. -lt n2 O inteiro n1 é menor que ()u igual ao inteiro n2.
-ne n2 O inteiro n1 não é igual ao inteiro n2.
Lógica condicional O operador not, que inverte o valor da condição seguinte.
O operador and, que une duas condições. Ambas ~s condições devem
Um script de shell pode empregar lógica condicional, que permite o script
ser verdadeiras para o resultado total ser verdadeIro. . ~
ação diferente baseado nos valores de argumentos, em variáveis de shell ou
outras condições. O comando test permite especificar uma condição, que O operador or, que une duas condiçõe~. Se qualquer condIçao for
ser tanto verdadeira como falsa. Os comandos condicionais (induindoo s verdadeira, o resultado total é verdadeIro.
mand()s ir, case, white e until) utilizam o comando test para avaliar as LUUUH,;c'es; Você pode agruparas expressões d.entro do comandotest
incluindo-os dentro de \ ( e \).
o comando test
A Tabela 13-11 descreve algumas formas de argumentocomumente ~ ..,.."'uu".;" Para ver o comando test em ação, considere o seguinte script:
com o comando testo O comando test avalia seus argumentos e configura o test -d $1
tus de saída como 0, que indica que a condição especificada era verdadeira, echo $?
um valor não zero, que indica que a condição especificada era falsa.

Tabela 13-11. Formas de argumento comumente utilizadas do comando test


o stat::s~:~:~~:t:::~l~:~;:' ~~~:~~~ ~:~~~:n~~e~ft:~~~~: ~~z~:~~:~~:flee~~b~
Forma A função resul~do ~~:es~:. o script foi armazenado no arquivo tester, que permite. acesso
-d arquivo
O arquivo especificado existe e é um diretório.
de lei;::a~ Exec~tar o script pode produzir resultados semelhantes aos segullltes:
-e arquivo O arquivo especificado existe. $ .jtester j
-r arquivo O
O arquivo especificado existe e é legível. $
-s arquivo .jtester jmissing
O arquivo especificado existe e tem tamanho diferente de zero.
-w arquivo 1
O arquivo especificado existe e é gravável.
-x arquivo Esses resultados indicam que o diretório / existe e que o diretório /missing
O arquivo especificado existe e é executável.
-L arquivo não existe.
O arquivo especificado existe e é um link simbólico.
fi -nt f2
O arquiv<,> (1 é mais novo que o arquivo (2.
fi -ot f2
O arquivo (1 é mais antigo que o arquivo (2. o comando if
-n si
A string sl tem comprimento diferente de zero. O comando test não é de muita valia por si só, mas.combinado com comandos
-z si como ir, é realmente útil. O comando i( tem a segulllte forma:
A string sl tem comprimento zero.
si = s2
A string sl é a mesma que a string s2. if comando
si != s2 then
A string sl não é a mesma que a string s2.
nl -eq n2 comandos
O inteiro n1 é igual ao inteiro n2. else
292) nl -ge n2 comandos
O inteiro n1 é maior que ou igual ao inteiro n2.
fi
1293
Normalmente o comando que imediatamente segue a palavra if é umco- case value in
padrãol) comandos ;;
mando~test;-Entretanto;isso~nâo ~ precisa. set~assim:O comandoif ml:!ra,mc~nt;e.
padrão2) comandos ••
executa o comando especificado e testa seu status de s<Íída. Se o status de saída
for 0, o primeiro conjunto de comandos é executado; caso contrário o segundo esac
conjunto de comandos é executado. Uma forma abreviada do comando if não
faz nada se a condição especificada for falsa: . O comando case tenta corresponder o valor especificado comuma série de
padrões. Os comandos associados com o p!'ime!ro padrão. de co~r.espondência,
if comando ~ ~ houver algum,sãó executados. Os padroes sao constrUl1?s utlhzandocarac-
then emetacaracteres; 'como.aqueles.utilizados para especlhcar argumentos de
=.c,,",a .."'''''
~comandos
fi comando. Como um exemplo, eis um comando case que interpreta o valor do
primeiro argumento de seu script:
Quando você digita um. coman.do ir, ele ocupa várias linhas; contudo é
considerado um único comando. Para destacar isto, o shell fornece um prompt case $1 in
-r) echo Force deletion without confirmation ;;
especial (chamado promptsecundário) depois que você insere cada linha. Fre- -i) echo Confirm before deleting ••
qüentemente, os scripts são inseridos utilizando um editor de texto; ao inserir *) echo Unknown argument ;;
um script utilizando um editor de texto você não vê o prompt secundário, nem esac
qualquer outro prompt de shell nesse sentido.
Como um exemplo, ~llRol1ha_ qlle~YQCê~qJl~ir~aJ;:~xduir um~arquivo chamado . O comando ecoa uma linha diferente de texto, dependendo do valor do
arquivoI se ele for mais antigo que outro arquivo chamado arquivo2. O seguinte primeiro argumento do script. Como feito aqui, é boa prática incluir um padrão
comando daria o resultado desejado: final que corresponde com qualquer valor.

if test arquivol -ot arquivo2


then o comando white
rm arquivol
fi O comando while permite executar uma série de comandos iterativamente ~isto
é, repetidamente) contanto que uma condição seja avaliada como verdadeIra:
Você pode incorporar esse comando em um script que aceita os argumen-
tos especificando os nomes de arquivo: while comando
do
comandos
if test $1 -ot $2 done'
then
rm $1 Eis um script que utiliza um comando while para imprimir seus argumen-
echo Deleted the old file. tos nas linhas sucessivas:
fi
echo $1
Se você atribuir ao script o nome de riddancee invocá-lo como segue: while shift 2> /dev/null
do
riddance thursday wednesday echo $1
done
o stript exduirá o arquivo thursday se esse arquivo for mais antigo que oatqui- Os comandos que abrangem a parte dode umwhile (ou outro comando de
vo wednesday. loop) podem íncluir comandos ir, comandos cas.e ,e ~té outros comandos w~ile.
Entretanto, os scripts rapidamente tornam-se dlhcels de ~~ten~er quando ISSO
ocorre freqüentemente. Você deve incluir comandos condICIonaIs dentro de ou-
o comando case tros comandos condicionais somente com a devida consideração para a clareza'
O comando case fornece uma forma mais sofisticada de processamento condi- do resultado. Inclua um comando de comentário (#) para esclarecer as constru-
_fcional: ções difíceis. 1296
o comando until Por exemplo, o seguinte script imprime seus argumentos em linhas sucessivas:
o comando until permite executar uma série de comandos iterativamente for i
é, repetidamente) contanto que uma condição seja avaliada como falsa: do
until comando echo $i
do done
comandos
done
Os comandos break e continue
Eis um script que utiliza um comando until paraimprimir seus Os comandos break e continue são comandos simples que não aceitam atgumen-
em linhas sucessivas, até encontrar um argumento que tem o valor red: tos. Quando o shell encontra um comando break, ele imediatamente sai do cor-
until test $1 = red do echo $1 shift done po do loop envolvente (while, until ou for). Quando o shell encontra um co-
mando continue, ele imediatamente descontinua a atual iteração do loop. Se a
Por exemplo, se o script foi nomeado como stopandgo e armazenado condição do loop permitir, outras iterações podem ocorrer; caso contrário o
diretório de trabalho atual, o comando: loop é encerrado .
. jstopandgo green yellow red blue
Periscope: um script de rede útil
imprimiria as linhas:
Suponha que você tem uma conta de correio eletrônico gratuita como a forneci-
green da pela Yahoo! Você está viajando e encontra-se em uma localidade remota com
yellow
acesso à Web. Entretanto, você é incapaz de acessar arquivos em sua máquina de
casa ou verificar correio eletrônico que chegou lá. Essa é uma circunstância co-
o comando for mum, especialmente se seu negócio requer que você viaje.
Se seu cOJ:nputador decasa executa Microsoft Windows, você está sem sor-
O comando for itera sobre os elementos de uma lista especificada: te. Você achará extraordinariamente difícil acessar seu computador doméstico
for variável in lista remotamente. Entretanto, se seu computador doméstico executa Linux, ganhar
do . acesso é moleza.
comandos A fim de mostrar o poder dos scripts de shell, essa subseção explica um
done script de shell mais complexo, o periscope. Todo dia, numa hora agendada, o pe-
riscope faz com que seu computador (você deve deixá-lo ligado) estabeleça uma
Dentro dos comandos, você pode referenciar o elemento atual da lista conexão PPP com seu ISP, que é mantida por aproximadamente uma hora. Isso
meio da variável de shell $variable, onde variável é o nome especificado após lhe dá tempo suficiente para se conectar a um ISP do quarto de seu hotel ou ou-
for. A lista geralmente assume a forma de uma série de argumentos, que pode tra localização remota e então se conectar via Internet com o sistema Linux em
corporar metacaracteres. Por exemplo, o seguinte comando for: casa, evitando taxas de longa distância. Uma vez conectado, você tem apro-
for i in 2 4 6 8 ximadamente uma hora para ver ou descarregar o correio e realizar outros tra-
do balhos. Então, o periscope derruba sua conexão PPP, que se restabelecerá no
echo $i tempo agendado no dia seguinte.
done O exemplo 13-1 mostra o arquivo de script do periscope, que é considera-
imprime os números 2, 4, 6 e 8 em linhas sucessivas. velmente maior que qualquer script que você até agora encontrou neste capítu-
Uma forma especial do comando for itera sobre os argumentos de lo. Portanto, quebraremos o script, explicando-o linha a linha. Como verá, iso-
script: .ladamente cada linha é relativamente simples e as elas trabalham juntas de uma
forma simples e direta.
for variable
do Exemplo 13-1. Periscope
comandos
done PATH=${PATH}:/usr/local/bin
296 1 route del default
o comando until
Por exemplo, o seguinte script imprime seus argumentos em linhas sucessivas:
O
, comando o unt OlO, o
1 permIte executar uma sene de comandos iterativamente (isso
e, repetIdamente) contanto que uma condição seja avaliada como falsa: for i
do
until comando
do echo $i
done
comandos
done
Os comandos break e continue
loEis umstri~t que ll,tiliza um comaildo until para imprimir seus argumentos Os comandos break e continue são comandos simples que não aceitam argumen-
em mhas sucessIvas, ate encontrar um argumento que tem o valor red: . ..
tos. Quando o shell encontra um comando break, ele imediatamente sai do cor-
until test $1 = red do echo $1 shift done po do loop envolvente (while, until ou for). Quando o shell encontra um co-
dO :~r exemplo, se o script foi nomeado como stopandgo e armazenado no mando continue, ele imediatamente descontinua a atual iteração do loop. Se a
Iretono de trabalho atual, o comando: condição do loop permitir, outras iterações podem ocorrer; caso contrário o
loop é encerrado .
. jstopandgo green yellow red blue

imprimíriaas linhas: Periscope: um script de rede útil


green Suponha que você tem uma conta de correio eletrônico gratuita como a forneci-
yellow da pela Yahoo! Você está viajando e encontra-se em uma localidade remota com
acesso à Web. Entretanto, você é incapaz de acessar arquivos em sua máquina de
casa ou verificar correio eletrônico que chegou lá. Essa é uma circunstância co-
o comando for mum, especialmente se seu negócio requer que você viaje.
O comando for itera sobre os elementos de uma lista especificada: Se seu computador de casa executa Microsoft Wiridows, você está sem sor-
te. Você achará extraordinariamente difícil acessar seu computador doméstico
for variável in lista remotamente. Entretanto, se seu computador doméstico executa Linux, ganhar
do
comandos
acesso é moleza.
done A fim de mostrar o poder dos scripts de shell, essa subseção explica um
script de shell mais complexo, o periscope. Todo dia, numa hora agendada, o pe-
o ~entr~ ?OS comandos, você pode referenciar o elemento atual da lista por riscope faz com que seu computador (você deve deixá-lo ligado) estabeleça uma
~elO oa vanavel de shell $variable, onde variável é o nome especificado após o conexão PPP com seu ISP, que é mantida por aproximadamente uma hora. Isso
for. A lIsta geralmente assume a forma de uma série de argumentos, que pode in- lhe dá tempo suficiente para se conectar a um ISP do quarto de seu hotel ou ou-
corporar metacaracteres. Por exemplo, o seguinte comando for: tra localização remota e então se conectar via Internet com o sistema Linux em
sua casa, evitando taxas de longa distância. Uma vez conectado, você tem apro-
for i in 2 4 6 8
do ximadamente uma hora para ver ou descarregar o correio e realizar outros tra-
echo $i balhos. Então, o periscope derruba sua conexão PPP, que se restabelecerá no
done tempo agendado no dia seguinte.
O exemplo 13-1 mostra o arquivo de script do periscope, que é considera-
imprime os números 2, 4, 6 e 8 em linhas sucessivas. velmente maior que qualquer script que você até agora encontrou neste capítu-
o Uma forma especial do comando for itera sobre os argumentos de um lo. Portanto, quebraremos o script, explicando-o linha a linha. Como verá, iso-
scnpt: ladamente cada linha é relativamente simples e as elas trabalham juntas de uma
for variable forma simples e direta.
do
comandos Exemplo 13-1. Periscope
done
296 1 PATH=${PATH}:jusrjlocaljbin
route del default
wvdial &
sleep1m o comando ifconfig produz uma saída parecida com esta:
ifconfig I mail userid@mail.com
sleep 1h pppO Linkencap:Point-Point Protocol
ki11a11 wvdia1 inet addr:10.144.153.105 P-t-P:IO.144.153.52 Mask:255.255.255.0
sl eep 2s UP POINTOPOINT RUNNING MTU:552 Metric:l
ki1lall -9 wvdia1 RX packets:Oerrors:Odropped:Ooverruns:O
kil1an pppd TX packets:Oerrors:Odropped:O overruns:O
sleep 2s
ki11all -9 pppd Você provavelmente verá outras seções descrevendo sua interface Ethernet
echo "/root/periscope" lat 10:00
e um dispositivo de loopback (lo). O i net addr dado na saída do comando
(10.144.153.105) é o endereço de IP do seu computador. Remetendo a saída
A primeira linha do script aumenta o caminho de pesquisa para o ____.><,•.• para você mesmo, você fornece uma maneira simples de descobrir o endereço
cluir /usr/local/bin, o diretório que contém o comando externo wvdial. de IP do seu computador, que provavelmente será diferente toda vez que você se
versões dos scripts de inicialização não podem incluir esse caminho no __,....,.., conectar ao seu ISP.
de pesquisa, então colocá-lo explicitamente aí evita possíveis problemas. A próxima linha faz com que o script pause por um intervalo de uma hora:
PATH=${PATH}:/usr/1oca1/bin
sleep 1h

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 ARVORE DE DIRETÓRIOS PRINCIPAIS ARQUIVOS


DO LINUX DO LINUX

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

Nome Versão Release Arquitetura

Figura C-l: A estrutura de um nome de pacote.

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