Escolar Documentos
Profissional Documentos
Cultura Documentos
Papo de Botequim
Você não agüenta mais aquele seu porque, em inglês, Shell significa con-
cha, carapaça, isto é, fica entre o u-
amigo usuário de Linux enchendo o suário e o sistema operacional, de
forma que tudo que interage com
seu saco com aquela história de que o o sistema operacional, tem que
passar pelo seu crivo.
sistema é fantástico e o Shell é uma
D
iálogo entreouvido em uma mesa O Linux, por definição, é um sistema
de um botequim, entre um multiusuário – não podemos nunca nos
usuário de Linux e um empur- esquecer disto – e para permitir o acesso
rador de mouse: O ambiente Linux de determinados usuários e barrar a en-
• Quem é o Bash? Para você entender o que é e como fun- trada de outros, existe um arquivo cha-
• É o filho caçula da família Shell. ciona o Shell, primeiro vou te mostrar mado /etc/passwd, que além de fornecer
• Pô cara! Estás a fim de me deixar como funciona o ambiente em camadas dados para esta função de “leão-de-chá-
maluco? Eu tinha uma dúvida e você do Linux. Dê uma olhada no gráfico cara” do Linux, também provê informa-
me deixa com duas! mostrado na Figura 1. ções para o início de uma sessão (ou
• Não, maluco você já é há muito tem- Neste gráfico podemos ver que a ca- “login”, para os íntimos) daqueles que
po: desde que decidiu usar aquele sis- mada de hardware é a mais profunda e é passaram por esta primeira barreira. O
tema operacional que você precisa formada pelos componentes físicos do último campo de seus registros informa
reiniciar dez vezes por dia e ainda por seu computador. Em torno dela, vem a ao sistema qual é o Shell que a pessoa
cima não tem domínio nenhum sobre camada do kernel que é o cerne do vai receber ao iniciar sua sessão.
o que esta acontecendo no seu com- Linux, seu núcleo, e é quem põe o hard- Lembra que eu te falei de Shell, fa-
putador. Mas deixa isso prá lá, pois ware para funcionar, fazendo seu geren- mília, irmão? Pois é, vamos começar a
vou te explicar o que é Shell e os com- ciamento e controle. Os programas e entender isto: o Shell é a conceituação
ponentes de sua família e ao final da comandos que envolvem o kernel, dele de concha envolvendo o sistema opera-
nossa conversa você dirá: “Meu Deus se utilizam para realizar as tarefas para cional propriamente dito, é o nome
do Shell! Porque eu não optei pelo que foram desenvolvidos. Fechando tudo genérico para tratar os filhos desta idéia
Linux antes?”. isso vem o Shell, que leva este nome que, ao longo dos muitos anos de exis-
maiores galhos. Seu nome é “pipe” (que $ echo "Existem who | wc -l U $ (pwd ; cd /etc ; pwd)
em inglês significa tubo, já que ele cana- usuarios conectados" /home/meudir
liza a saída de um comando para a Existem who | wc -l usuarios U /etc
entrada de outro) e sua representação é a conectados $ pwd
| (barra vertical). /home/meudir
Hi! Olha só, não funcionou! É mesmo,
$ ls | wc -l não funcionou e não foi por causa das “Quequeiiisso” minha gente? Eu estava
21 aspas que eu coloquei, mas sim por que no /home/meudir, mudei para o /etc,
eu teria que ter executado o who | wc -l constatei que estava neste diretório com
O comando ls passou a lista de arquivos antes do echo. Para resolver este proble- o pwd seguinte e quando o agrupamento
para o comando wc, que quando está ma, tenho que priorizar a segunda parte de comandos terminou, eu vi que conti-
com a opção -l conta a quantidade de li- do comando com o uso de crases: nuava no /etc/meudir!
nhas que recebeu. Desta forma, pode- Hi! Será que tem coisa do mágico
mos afirmar categoricamente que no $ echo "Existem `who | wc -l` U Mandrake por aí? Nada disso. O interes-
meu diretório existiam 21 arquivos. usuarios conectados" sante do uso de parênteses é que eles
Existem 8 usuarios U invocam um novo Shell para executar os
$ cat /etc/passwd | sort | lp conectados comandos que estão em seu interior.
Desta forma, fomos realmente para o
A linha de comandos acima manda a Para eliminar esse monte de brancos diretório /etc, porém após a execução de
listagem do arquivo /etc/passwd para a antes do 8 que o wc -l produziu, basta todos os comandos, o novo Shell que
entrada do comando sort. Este a classi- retirar as aspas. Assim: estava no diretório /etc morreu e retor-
fica e envia para o lp que é o gerenciador namos ao Shell anterior que estava em
da fila de impressão. $ echo Existem `who | wc -l` U /home/meudir.
usuarios conectados Que tal usar nossos novos conceitos?
Caracteres de ambiente Existem 8 usuarios conectados
Quando queremos priorizar uma expres- $ mail suporte@linux.br << FIM
são, nós a colocamos entre parênteses, As aspas protegem da interpretação do Ola suporte, hoje as `date U
não é? Pois é, por causa da aritmética é Shell tudo que está dentro dos seus lim- “+%hh:mm”` ocorreu novamente U
normal pensarmos deste jeito. Mas em ites. Como para o Shell basta um espaço aquele problema que eu havia U
Shell o que prioriza mesmo são as crases em branco como separador, o monte de reportado por telefone. De U
(`) e não os parênteses. Vou dar exemp- espaços será trocado por um único após acordo com seu pedido segue a U
los para você entender melhor. a retirada das aspas. listagem do diretorio:
Eu quero saber quantos usuários estão Outra coisa interessante é o uso do `ls -l`
“logados” no computador que eu admi- ponto-e-vírgula. Quando estiver no Shell, Abracos a todos.
nistro. Eu posso fazer: você deve sempre dar um comando em FIM
cada linha. Para agrupar comandos em
$ who | wc -l uma mesma linha, temos que separá-los Finalmente agora podemos demonstrar o
8 por ponto-e-vírgula. Então: que conversamos anteriormente sobre
“here document”. Os comandos entre
O comando who passa a lista de usuários $ pwd ; cd /etc; pwd ;cd -;pwd crases tem prioridade, portanto o Shell
conectados ao sistema para o comando /home/meudir os executará antes do redirecionamento
wc -l, que conta quantas linhas recebeu e /etc do “here document”. Quando o suporte
mostra a resposta na tela. Muito bem, /home/meudir receber a mensagem, verá que os
mas ao invés de ter um número oito comandos date e ls foram executados
solto na tela, o que eu quero mesmo é Neste exemplo, listei o nome do diretório antes do comando mail, recebendo então
que ele esteja no meio de uma frase. Ora, corrente com o comando pwd, mudei um instantâneo do ambiente no
para mandar frases para a tela eu só pre- para o diretório /etc, novamente listei o momento de envio do email.
ciso usar o comando echo; então vamos nome do diretório e finalmente voltei pa- - Garçom, passa a régua! ■
ver como é que fica: ra o diretório onde estava anteriormente
(cd -), listando seu nome. Repare que Julio Cezar Neves é Analista de Su-
SOBRE O AUTOR
Buraco Negro coloquei o ponto-e-vírgula de todas as porte de Sistemas desde 1969 e tra-
Em Unix existe um arquivo fantasma. formas possíveis, para mostrar que não balha com Unix desde 1980, quando
Chama-se /dev/null.Tudo que é enviado importa se existem espaços em branco fez parte da equipe que desenvolveu
para este arquivo some. Assemelha-se a um antes ou após este caracter. o SOX, sistema operacional, similar
Buraco Negro. No caso do exemplo, como ao Unix, da Cobra Computadores. É
Finalmente, vamos ver o caso dos
não me interessava guardar a possível men- professor do curso de Mestrado em
parênteses. No exemplo a seguir, colo-
sagem de erro oriunda do comando rm, redi- Software Livre das Faculdades Estácio
camos diversos comandos separados por
recionei-a para este arquivo. de Sá, no Rio de Janeiro.
ponto-e-vírgula entre parênteses: