You are on page 1of 55

O ambiente Linux

Para voc entender o que e como fun-


ciona o Shell, primeiro vou te mostrar
como funciona o ambiente em camadas
do Linux. D uma olhada no grfico
mostrado na Figura 1.
Neste grfico podemos ver que a ca-
mada de hardware a mais profunda e
formada pelos componentes fsicos do
seu computador. Em torno dela, vem a
camada do kernel que o cerne do
Linux, seu ncleo, e quem pe o hard-
ware para funcionar, fazendo seu geren-
ciamento e controle. Os programas e
comandos que envolvem o kernel, dele
se utilizam para realizar as tarefas para
que foram desenvolvidos. Fechando tudo
isso vem o Shell, que leva este nome
porque, em ingls, Shell significa con-
cha, carapaa, isto , fica entre o u-
surio e o sistema operacional, de
forma que tudo que interage com
o sistema operacional, tem que
passar pelo seu crivo.
O ambiente Shell
Bom j que para chegar ao
ncleo do Linux, no seu ker-
nel que o que interessa a
todo aplicativo, necessria a
filtragem do Shell, vamos enten-
der como ele funciona de forma a
tirar o mximo proveito das in-
meras facilidades que ele nos oferece.
O Linux, por definio, um sistema
multiusurio no podemos nunca nos
esquecer disto e para permitir o acesso
de determinados usurios e barrar a en-
trada de outros, existe um arquivo cha-
mado /etc/passwd, que alm de fornecer
dados para esta funo de leo-de-ch-
cara do Linux, tambm prov informa-
es para o incio de uma sesso (ou
login, para os ntimos) daqueles que
passaram por esta primeira barreira. O
ltimo campo de seus registros informa
ao sistema qual o Shell que a pessoa
vai receber ao iniciar sua sesso.
Lembra que eu te falei de Shell, fa-
mlia, irmo? Pois , vamos comear a
entender isto: o Shell a conceituao
de concha envolvendo o sistema opera-
cional propriamente dito, o nome
genrico para tratar os filhos desta idia
que, ao longo dos muitos anos de exis-
D
ilogo entreouvido em uma mesa
de um botequim, entre um
usurio de Linux e um empur-
rador de mouse:
Quem o Bash?
o filho caula da famlia Shell.
P cara! Ests a fim de me deixar
maluco? Eu tinha uma dvida e voc
me deixa com duas!
No, maluco voc j h muito tem-
po: desde que decidiu usar aquele sis-
tema operacional que voc precisa
reiniciar dez vezes por dia e ainda por
cima no tem domnio nenhum sobre
o que esta acontecendo no seu com-
putador. Mas deixa isso pr l, pois
vou te explicar o que Shell e os com-
ponentes de sua famlia e ao final da
nossa conversa voc dir: Meu Deus
do Shell! Porque eu no optei pelo
Linux antes?.
82 Agosto 2004 www.linuxmagazine.com.br
Papo de Botequim LI NUX USER
Voc no agenta mais aquele seu
amigo usurio de Linux enchendo o
seu saco com aquela histria de que o
sistema fantstico e o Shell uma
ferramenta maravilhosa? A partir
desta edio vai ficar mais fcil en-
tender o porqu deste entusiasmo...
POR JULIO CEZAR NEVES
Curso de Shell Script
Papo de Botequim
Bourne Shell (sh): Desenvolvido por Stephen
Bourne do Bell Labs (da AT&T, onde tambm
foi desenvolvido o Unix), foi durante muitos
anos o Shell padro do sistema operacional
Unix. tambm chamado de Standard Shell
por ter sido durante vrios anos o nico, e
at hoje o mais utilizado. Foi portado para
praticamente todos os ambientes Unix e dis-
tribuies Linux.
Korn Shell (ksh): Desenvolvido por David
Korn, tambm do Bell Labs, um supercon-
junto do sh, isto , possui todas as facilidades
do sh e a elas agregou muitas outras. A com-
patibilidade total com o sh vem trazendo
muitos usurios e programadores de Shell
para este ambiente.
Boune Again Shell (bash): Desenvolvido ini-
cialmente por Brian Fox e Chet Ramey, este
o Shell do projeto GNU. O nmero de seus
adeptos o que mais cresce em todo o
mundo, seja por que ele o Shell padro do
Linux, seja por sua grande diversidade de
comandos, que incorpora inclusive diversos
comandos caractersticos do C Shell.
C Shell (csh): Desenvolvido por Bill Joy, da
Universidade de Berkley, o Shell mais uti-
lizado em ambientes BSD. Foi ele quem intro-
duziu o histrico de comandos. A
estruturao de seus comandos bem simi-
lar da linguagem C. Seu grande pecado foi
ignorar a compatibilidade com o sh, partindo
por um caminho prprio.
Alm destes Shells existem outros, mas irei
falar somente sobre os trs primeiros, tratan-
do-os genericamente por Shell e assinalando
as especificidades de cada um.
Quadro 1: Uma rapidinha nos principais sabores de Shell
tncia do sistema operacional Unix,
foram aparecendo. Atualmente existem
diversos sabores de Shell (veja Quadro 1
na pgina anterior).
Como funciona o Shell
O Shell o primeiro programa que voc
ganha ao iniciar sua sesso (se quiser-
mos assassinar a lngua portuguesa
podemos tambm dizer ao se logar) no
Linux. ele quem vai resolver um monte
de coisas de forma a no onerar o kernel
com tarefas repetitivas, poupando-o para
tratar assuntos mais nobres. Como cada
usurio possui o seu prprio Shell inter-
pondo-se entre ele e o Linux, o Shell
quem interpreta os comandos digitados e
examina as suas sintaxes, passando-os
esmiuados para execuo.
pa! Esse negcio de interpretar co-
mando no tem nada a ver com inter-
pretador no, n?
Tem sim: na verdade o Shell um in-
terpretador que traz consigo uma po-
derosa linguagem com comandos de
alto nvel, que permite construo de
loops, de tomadas de deciso e de ar-
mazenamento de valores em variveis,
como vou te mostrar.
Vou explicar as principais tarefas que o
Shell cumpre, na sua ordem de exe-
cuo. Preste ateno, porque esta
ordem fundamental para o entendi-
mento do resto do nosso bate papo.
Anlise da linha de comando
Neste exame o Shell identifica os carac-
teres especiais (reservados) que tm sig-
nificado para a interpretao da linha e
logo em seguida verifica se a linha pas-
sada um comando ou uma atribuio
de valores, que so os tens que vou
descrever a seguir.
Comando
Quando um comando digi-
tado no prompt (ou linha de
comando) do Linux, ele divi-
dido em partes, separadas por
espaos em branco: a primeira
parte o nome do programa,
cuja existncia ser verificada;
em seguida, nesta ordem, vm
as opes/parmetros, redire-
cionamentos e variveis.
Quando o programa identifi-
cado existe, o Shell verifica as
permisses dos arquivos en-
volvidos (inclusive o prprio programa),
e retorna um erro caso o usurio que
chamou o programa no esteja autor-
izado a executar esta tarefa.
$ ls linux
linux
Neste exemplo o Shell identificou o ls co-
mo um programa e o linux como um pa-
rmetro passado para o programa ls.
Atribuio
Se o Shell encontra dois campos separa-
dos por um sinal de igual (=) sem espa-
os em branco entre eles, ele identifica
esta seqncia como uma atribuio.
$ valor=1000
Neste caso, por no haver espaos em
branco (que um dos caracteres reserva-
dos), o Shell identificou uma atribuio e
colocou 1000 na varivel valor.
Resoluo de
Redirecionamentos
Aps identificar os componentes da li-
nha que voc digitou, o Shell parte para
a resoluo de redirecionamentos.
O Shell tem incorporado ao seu elenco
de habilidades o que chamamos de
redirecionamento, que pode ser de
entrada (stdin), de sada (stdout) ou dos
erros (stderr), conforme vou explicar a
seguir. Mas antes precisamos falar de...
Substituio de Variveis
Neste ponto, o Shell verifica se as even-
tuais variveis (parmetros comeados
por $), encontradas no escopo do
comando, esto definidas e as substitui
por seus valores atuais.
Substituio de Meta-
Caracteres
Se algum meta-caracter (ou coringa,
como *, ? ou []) for encontrado na linha
de comando, ele ser substitudo por
seus possveis valores.
Supondo que o nico item no seu
diretrio corrente cujo nome comea
com a letra n seja um diretrio chamado
nomegrandeprachuchu, se voc fizer:
$ cd n*
como at aqui quem est manipulando a
linha de comando ainda o Shell e o
programa cd ainda no foi executado, o
Shell expande o n* para nomegrandepra-
chuchu (a nica possibilidade vlida) e
executa o comando cd com sucesso.
Entrega da linha de comando
para o kernel
Completadas todas as tarefas anteriores,
o Shell monta a linha de comando, j
com todas as substituies feitas e
chama o kernel para execut-la em um
novo Shell (Shell filho), que ganha um
nmero de processo (PID ou Process
IDentification) e fica inativo, tirando
uma soneca durante a execuo do pro-
grama. Uma vez encerrado este processo
(e o Shell filho), o Shell pai recebe
novamente o controle e exibe um
prompt, mostrando que est pronto
para executar outros comandos.
83 www.linuxmagazine.com.br Agosto 2004
LI NUX USER Papo de Botequim
Figura 1: Ambiente em camadas de um sistema Linux
Shell
Programas e Comandos
Ncleo ou Kernel
Hardware
Quando digo que o ltimo campo do arqui-
vo /etc/passwdinforma ao sistema qual o
Shell que o usurio vai usar ao se logar, isto
deve ser interpretado ao p-da-letra. Se este
campo do seu registro contm o termo prog,
ao acessar o sistema o usurio executar o
programa prog. Ao trmino da execuo, a
sesso do usurio se encerra automatica-
mente. Imagine quanto se pode incremen-
tar a segurana com este simples artifcio.
Com que Shell eu vou?
Jamais faa:
$ valor = 1000
bash: valor: not found
Neste caso, o Bash achou a palavra valor iso-
lada por espaos e julgou que voc estivesse
mandando executar um programa chama-
do valor, para o qual estaria passando dois
parmetros: =e 1000.
Cuidado na Atribuio
$ echo \*
$ echo *
Viu a diferena?
Aspas (): exatamente iguais ao aps-
trofo, exceto que, se a cadeia entre
aspas contiver um cifro ($), uma
crase (`), ou uma barra invertida (\),
estes caracteres sero interpretados
pelo Shell.
No precisa se estressar, eu no te dei
exemplos do uso das aspas por que
voc ainda no conhece o cifro ($)
nem a crase (`). Daqui para frente -
veremos com muita constncia o uso
destes caracteres especiais; o mais
importante entender seu significado.
Caracteres de
redirecionamento
A maioria dos comandos tem uma entra-
da, uma sada e pode gerar erros. Esta
entrada chamada Entrada Padro ou
stdin e seu dispositivo padro o teclado
do terminal. Analogamente, a sada do
comando chamada Sada Padro ou
stdout e seu dispositivo padro a tela
do terminal. Para a tela tambm so
enviadas normalmente as mensagens de
erro oriundas dos comandos, chamada
neste caso de Sada de Erro Padro ou
stderr. Veremos agora como alterar este
estado de coisas.
Vamos fazer um programa gago. Para
isto digite (tecle Enter ao final de cada
linha comandos do usurio so ilus-
trados em negrito):
$ cat
E-e-eu sou gago. Vai encarar?
E-e-eu sou gago. Vai encarar?
O cat um comando que lista o con-
tedo do arquivo especificado para a
Sada Padro (stdout). Caso a entrada
no seja definida, ele espera os dados da
stdin (a entrada padro). Ora como eu
no especifiquei a entrada, ele a est
esperando pelo teclado (Entrada Padro)
e como tambm no citei a sada, o que
eu teclar ir para a tela (Sada Padro),
criando desta forma como eu havia
proposto um programa gago. Experi-
mente!
Redirecionamentop da Sada
Padro
Para especificarmos a sada de um pro-
grama usamos o smbolo > ou o
>>, seguido do nome do arquivo pa-
ra o qual se deseja mandar a sada.
Vamos transformar o programa ante-
rior em um editor de textos:
$ cat > Arq
O cat continua sem ter a entrada especi-
ficada, portanto est aguardando que os
dados sejam teclados, porm a sua sada
est sendo desviada para o arquivo Arq.
Assim sendo, tudo que esta sendo tecla-
do esta indo para dentro de Arq, de for-
ma que fizemos o editor de textos mais
curto e ruim do planeta.
Se eu fizer novamente:
$ cat > Arq
Os dados contidos em Arq sero perdi-
dos, j que antes do redirecionamento o
Shell criar um Arq vazio. Para colocar
mais informaes no final do arquivo eu
deveria ter feito:
$ cat >> Arq
Redirecionamento da Sada
de Erro Padro
Assim como por padro o Shell recebe os
dados do teclado e envia a sada para a
tela, os erros tambm vo para a tela se
voc no especificar para onde eles de-
vem ser enviados. Para redirecionar os
erros, use 2> SaidaDeErro. Note que en-
tre o nmero 2 e o sinal de maior (>)
no existe espao em branco.
Vamos supor que durante a execuo
de um script voc pode, ou no (depen-
dendo do rumo tomado pela execuo
do programa), ter criado um arquivo
chamado /tmp/seraqueexiste$$. Como
no quer ficar com sujeira no disco
rgido, ao final do script voc coloca a
linha a seguir:
rm /tmp/seraqueexiste$$
Decifrando a Pedra de Roseta
Para tirar aquela sensao que voc tem
quando v um script Shell, que mais
parece uma sopa de letrinhas ou um con-
junto de hierglifos, vou lhe mostrar os
principais caracteres especiais para que
voc saia por a como Champollion deci-
frando a Pedra de Roseta.
Caracteres para remoo do
significado.
isso mesmo, quando no desejamos
que o Shell interprete um caractere
especfico, devemos escond-lo dele.
Isso pode ser feito de trs maneiras difer-
entes, cada uma com sua peculiaridade:
Apstrofo (): quando o Shell v uma
cadeia de caracteres entre apstrofos,
ele retira os apstrofos da cadeia e no
interpreta seu contedo.
$ ls linuxm*
linuxmagazine
$ ls 'linuxm*'
bash: linuxm* no such file U
or directory
No primeiro caso o Shell expandiu o
asterisco e descobriu o arquivo linux-
magazine para listar. No segundo, os
apstrofos inibiram a interpretao do
Shell e veio a resposta que no existe o
arquivo linuxm*.
Contrabarra ou Barra Invertida (\): i-
dntico aos apstrofos exceto que a
barra invertida inibe a interpretao
somente do caractere que a segue.
Suponha que voc, acidentalmente,
tenha criado um arquivo chamado *
(asterisco) o que alguns sabores de
Unix permitem e deseja remov-lo.
Se voc fizesse:
$ rm *
Voc estaria na maior encrenca, pois o
rm removeria todos os arquivos do
diretrio corrente. A melhor forma de
fazer o servio :
$ rm \*
Desta forma, o Shell no interpreta o
asterisco, evitando a sua expanso.
Faa a seguinte experincia cientfica:
$ cd /etc
$ echo '*'
84 Agosto 2004 www.linuxmagazine.com.br
Papo de Botequim LI NUX USER
Como j havia dito, o Shell resolve a linha e
depois manda o comando para a execuo.
Assim, se voc redirecionar a sada de um
arquivo para ele prprio, primeiramente o
Shell esvaziaeste arquivo e depois manda
o comando para execuo! Desta forma,
para sua alegria, voc acabou de perder o
contedo de seu querido arquivo.
Redirecionamento Perigoso
Caso o arquivo no existisse seria envi-
ado para a tela uma mensagem de erro.
Para que isso no acontea faa:
rm /tmp/seraqueexiste$$ 2> U
/dev/null
Para que voc teste a Sada de Erro Pa-
dro direto no prompt do seu Shell, vou
dar mais um exemplo. Faa:
$ ls naoexiste
bash: naoexiste no such file U
or directory
$ ls naoexiste 2> arquivodeerros
$
$ cat arquivodeerros
bash: naoexiste no such file U
or directory
Neste exemplo, vimos que quando fize-
mos um ls em naoexiste, ganhamos uma
mensagem de erro. Aps redirecionar a
Sada de Erro Padro para arquivodeerros
e executar o mesmo comando, recebe-
mos somente o prompt na tela. Quan-
do listamos o contedo do arquivo para
o qual foi redirecionada a Sada de Erro
Padro, vimos que a mensagem de erro
tinha sido armazenada nele.
interessante notar que estes carac-
teres de redirecionamento so cumula-
tivos, isto , se no exemplo anterior
fizssemos o seguinte:
$ ls naoexiste 2>> U
arquivodeerros
a mensagem de erro oriunda do ls seria
anexada ao final de arquivodeerros.
Redirecionamento da
Entrada Padro
Para fazermos o redirecionamento da En-
trada Padro usamos o < (menor que).
E pra que serve isso?, voc vai me per-
guntar. Deixa eu dar um exemplo, que
voc vai entender rapidinho.
Suponha que voc queira mandar um
mail para o seu chefe. Para o chefe ns
caprichamos, n? Ento ao invs de sair
redigindo o mail direto no prompt, de
forma a tornar impossvel a correo de
uma frase anterior onde, sem querer,
voc escreveu um ns vai, voc edita
um arquivo com o contedo da mensa-
gem e aps umas quinze verificaes
sem constatar nenhum erro, decide
envi-lo e para tal faz:
$ mail chefe@chefia.com.br < U
arquivocommailparaochefe
e o chefe receber uma mensagem com o
contedo do arquivocommailparaochefe.
Outro tipo de redirecionamento muito
louco que o Shell permite o chamado
here document. Ele representado por
<< e serve para indicar ao Shell que o
escopo de um comando comea na linha
seguinte e termina quando encontra uma
linha cujo contedo seja unicamente o
label que segue o sinal <<.
Veja o fragmento de script a seguir,
com uma rotina de ftp:
ftp -ivn hostremoto << fimftp
user $Usuario $Senha
binary
get arquivoremoto
fimftp
neste pedacinho de programa temos um
monte de detalhes interessantes:
As opes usadas para o ftp (-ivn)
servem para ele listar tudo que est
acontecendo (opo -v de verbose),
para no ficar perguntando se voc
tem certeza que deseja transmitir cada
arquivo (opo -i de interactive) e
finalmente a opo -n serve para dizer
ao ftp para ele no solicitar o usurio e
sua senha, pois estes sero informados
pela instruo especfica (user);
Quando eu usei o << fimftp, estava
dizendo o seguinte para o interpreta-
dor: Olha aqui Shell, no se meta em
nada a partir deste ponto at encontrar
o label fimftp. Voc no entenderia
droga nenhuma, j que so instrues
especficas do ftp.
Se fosse s isso seria simples, mas
pelo prprio exemplo d para ver que
existem duas variveis ($Usuario e
$Senha), que o Shell vai resolver antes
do redirecionamento. Mas a grande
vantagem deste tipo de construo
que ela permite que comandos tam-
bm sejam interpretados dentro do
escopo do here document, o que,
alis, contraria o que acabei de dizer.
Logo a seguir te explico como esse
negcio funciona. Agora ainda no d,
esto faltando ferramentas.
O comando user do repertrio de
instrues do ftp e serve para passar o
usurio e a senha que haviam sido
lidos em uma rotina anterior a este
fragmento de cdigo e colocados res-
pectivamente nas duas variveis:
$Usuario e $Senha.
O binary outra instruo do ftp, que
serve para indicar que a transferncia
de arquivoremoto ser feita em modo
binrio, isto o contedo do arquivo
no ser inteerpretado para saber se
est em ASCII, EBCDIC,
O comando get arquivoremoto diz ao
cliente ftp para pegar este arquivo no
servidor hostremoto e traz-lo para a
nossa mquina local. Se quisssemos
enviar um arquivo, bastaria usar, por
exemplo, o comando put arquivolocal.
Redirecionamento de
comandos
Os redirecionamentos de que falamos at
agora sempre se referiam a arquivos, isto
, mandavam para arquivo, recebiam de
arquivo, simulavam arquivo local, O
que veremos a partir de agora, redirecio-
na a sada de um comando para a entra-
da de outro. utilssimo e, apesar de no
ser macaco gordo, sempre quebra os
85 www.linuxmagazine.com.br Agosto 2004
LI NUX USER Papo de Botequim
Preste ateno! No confunda >> com 2>. O
primeiro anexa dados ao final de um arqui-
vo, e o segundo redireciona a Sada de Erro
Padro (stderr) para um arquivo que est
sendo designado. Isto importante!
Dados ou Erros?
O $$ contm o PID, isto , o nmero do seu
processo. Como o Linux multiusurio,
bom anexar sempre o $$ ao nome dos seus
arquivos para no haver problema de propri-
edade, isto , caso voc batizasse o seu ar-
quivo simplesmente como seraqueexiste, a
primeira pessoa que o usasse (criando-o
ento) seria o seu dono e a segunda ganharia
um erro quando tentasse gravar algo nele.
Direito de Posse
Um erro comum no uso de labels (como o
fimftp do exemplo anterior) causado pela
presena de espaos em branco antes ou
aps o mesmo. Fique muito atento quanto a
isso, por que este tipo de erro costuma dar
uma boa surra no programador, at que seja
detectado. Lembre-se: um label que se preze
tem que ter uma linha inteira s para ele.
Etiquetas Erradas
$ echo "Existem who | wc -l U
usuarios conectados"
Existem who | wc -l usuarios U
conectados
Hi! Olha s, no funcionou! mesmo,
no funcionou e no foi por causa das
aspas que eu coloquei, mas sim por que
eu teria que ter executado o who | wc -l
antes do echo. Para resolver este proble-
ma, tenho que priorizar a segunda parte
do comando com o uso de crases:
$ echo "Existem `who | wc -l` U
usuarios conectados"
Existem 8 usuarios U
conectados
Para eliminar esse monte de brancos
antes do 8 que o wc -l produziu, basta
retirar as aspas. Assim:
$ echo Existem `who | wc -l` U
usuarios conectados
Existem 8 usuarios conectados
As aspas protegem da interpretao do
Shell tudo que est dentro dos seus lim-
ites. Como para o Shell basta um espao
em branco como separador, o monte de
espaos ser trocado por um nico aps
a retirada das aspas.
Outra coisa interessante o uso do
ponto-e-vrgula. Quando estiver no Shell,
voc deve sempre dar um comando em
cada linha. Para agrupar comandos em
uma mesma linha, temos que separ-los
por ponto-e-vrgula. Ento:
$ pwd ; cd /etc; pwd ;cd -;pwd
/home/meudir
/etc
/home/meudir
Neste exemplo, listei o nome do diretrio
corrente com o comando pwd, mudei
para o diretrio /etc, novamente listei o
nome do diretrio e finalmente voltei pa-
ra o diretrio onde estava anteriormente
(cd -), listando seu nome. Repare que
coloquei o ponto-e-vrgula de todas as
formas possveis, para mostrar que no
importa se existem espaos em branco
antes ou aps este caracter.
Finalmente, vamos ver o caso dos
parnteses. No exemplo a seguir, colo-
camos diversos comandos separados por
ponto-e-vrgula entre parnteses:
$ (pwd ; cd /etc ; pwd)
/home/meudir
/etc
$ pwd
/home/meudir
Quequeiiisso minha gente? Eu estava
no /home/meudir, mudei para o /etc,
constatei que estava neste diretrio com
o pwd seguinte e quando o agrupamento
de comandos terminou, eu vi que conti-
nuava no /etc/meudir!
Hi! Ser que tem coisa do mgico
Mandrake por a? Nada disso. O interes-
sante do uso de parnteses que eles
invocam um novo Shell para executar os
comandos que esto em seu interior.
Desta forma, fomos realmente para o
diretrio /etc, porm aps a execuo de
todos os comandos, o novo Shell que
estava no diretrio /etc morreu e retor-
namos ao Shell anterior que estava em
/home/meudir.
Que tal usar nossos novos conceitos?
$ mail suporte@linux.br << FIM
Ola suporte, hoje as `date U
+%hh:mm` ocorreu novamente U
aquele problema que eu havia U
reportado por telefone. De U
acordo com seu pedido segue a U
listagem do diretorio:
`ls -l`
Abracos a todos.
FIM
Finalmente agora podemos demonstrar o
que conversamos anteriormente sobre
here document. Os comandos entre
crases tem prioridade, portanto o Shell
os executar antes do redirecionamento
do here document. Quando o suporte
receber a mensagem, ver que os
comandos date e ls foram executados
antes do comando mail, recebendo ento
um instantneo do ambiente no
momento de envio do email.
- Garom, passa a rgua!
maiores galhos. Seu nome pipe (que
em ingls significa tubo, j que ele cana-
liza a sada de um comando para a
entrada de outro) e sua representao a
| (barra vertical).
$ ls | wc -l
21
O comando ls passou a lista de arquivos
para o comando wc, que quando est
com a opo -l conta a quantidade de li-
nhas que recebeu. Desta forma, pode-
mos afirmar categoricamente que no
meu diretrio existiam 21 arquivos.
$ cat /etc/passwd | sort | lp
A linha de comandos acima manda a
listagem do arquivo /etc/passwd para a
entrada do comando sort. Este a classi-
fica e envia para o lp que o gerenciador
da fila de impresso.
Caracteres de ambiente
Quando queremos priorizar uma expres-
so, ns a colocamos entre parnteses,
no ? Pois , por causa da aritmtica
normal pensarmos deste jeito. Mas em
Shell o que prioriza mesmo so as crases
(`) e no os parnteses. Vou dar exemp-
los para voc entender melhor.
Eu quero saber quantos usurios esto
logados no computador que eu admi-
nistro. Eu posso fazer:
$ who | wc -l
8
O comando who passa a lista de usurios
conectados ao sistema para o comando
wc -l, que conta quantas linhas recebeu e
mostra a resposta na tela. Muito bem,
mas ao invs de ter um nmero oito
solto na tela, o que eu quero mesmo
que ele esteja no meio de uma frase. Ora,
para mandar frases para a tela eu s pre-
ciso usar o comando echo; ento vamos
ver como que fica:
86 Agosto 2004 www.linuxmagazine.com.br
Papo de Botequim LI NUX USER
Julio Cezar Neves Analista de Su-
porte de Sistemas desde 1969 e tra-
balha com Unix desde 1980, quando
fez parte da equipe que desenvolveu
o SOX, sistema operacional, similar
ao Unix, da Cobra Computadores.
professor do curso de Mestrado em
Software Livre das Faculdades Estcio
de S, no Rio de Janeiro.
S
O
B
R
E
O
A
U
T
O
R
Em Unix existe um arquivo fantasma.
Chama-se /dev/null. Tudo que enviado
para este arquivo some. Assemelha-se a um
Buraco Negro. No caso do exemplo, como
no me interessava guardar a possvel men-
sagem de erro oriunda do comando rm, redi-
recionei-a para este arquivo.
Buraco Negro
LI NUX USER Papo de Botequim
87 Setembro 2004 www.linuxmagazine.com.br
$ grep franklin /etc/passwd
Pesquisando em vrios arquivos:
$ grep grep *.sh
Pesquisando na sada de um comando:
$ who | grep carvalho
No 1 exemplo, procurei a palavra
franklin em qualquer lugar do arquivo
/etc/passwd. Se quisesse procurar um
nome de usurio, isto , somente no in-
cio dos registros desse arquivo, poderia
digitar $ grep ^franklin /etc/passwd.
E para que servem o circunflexo e os
apstrofos?, voc vai me perguntar. Se
tivesse lido os artigos que mencionei,
saberia que o circunflexo serve para limi-
tar a pesquisa ao incio de cada linha e
os apstrofos servem para o Shell no
interpretar esse circunflexo, deixando-o
passar inclume para o comando grep.
No 2 exemplo mandei listar todas as
linhas que usavam a palavra grep, em
todos os arquivos terminados em .sh.
Como uso essa extenso para definir
meus arquivos com programas em Shell,
malandramente, o que fiz foi listar as lin-
has dos programas que poderia usar
como exemplo do comando grep.
Olha que legal! O grep aceita como
entrada a sada de outro comando, redi-
recionado por um pipe (isso muito
comum em Shell e um tremendo
acelerador da execuo de coman-
dos). Dessa forma, no 3 exemplo,
o comando who listou as pessoas
logadas na mesma mquina que
voc (no se esquea jamais: o
Linux multiusurio) e o grep foi
usado para verificar se o Carvalho
estava trabalhando ou coando.
O grep um comando muito con-
hecido, pois usado com muita fre-
qncia. O que muitas pessoas no
sabem que existem trs comandos na
famlia grep: grep, egrep e fgrep. A princi-
pais diferenas entre os 3 so:
grep - Pode ou no usar expresses
regulares simples, porm no caso de
no us-las, o fgrep melhor, por ser
mais rpido.
egrep (e de extended, estendido) -
muito poderoso no uso de expresses
regulares. Por ser o mais poderoso dos
trs, s deve ser usado quando for
necessria a elaborao de uma
expresso regular no aceita pelo grep.
fgrep (f de fast, rpido) - Como o
nome diz, o ligeirinho da famlia,
executando o servio de forma muito
veloz (por vezes cerca de 30% mais
rpido que o grep e 50% mais que o
egrep), porm no permite o uso de
expresses regulares na pesquisa.
Agora que voc j conhece as difer-
enas entre os membros da famlia, me
diga: o que voc acha dos trs exemplos
que eu dei antes das explicaes?
Achei que o fgrep resolveria o teu prob-
lema mais rapidamente que o grep.
Perfeito! T vendo que voc est
atento, entendendo tudo que estou te
explicando! Vamos ver mais exemplos
G
arom! Traz um chops e dois
pastel. O meu amigo hoje no
vai beber porque est finalmente
sendo apresentado a um verdadeiro sis-
tema operacional, e ainda tem muita
coisa a aprender!
E ento, amigo, t entendendo
tudo que te expliquei at agora?
Entendendo eu t, mas no vi
nada prtico nisso
Calma rapaz, o que te falei at
agora serve como base ao que h
de vir daqui pra frente. Vamos usar
essas ferramentas que vimos para
montar programas estruturados. Voc
ver porque at na TV j teve pro-
grama chamado O Shell o Limite.
Para comear vamos falar dos coman-
dos da famlia grep
Grep? No conheo nenhum termo em
ingls com este nome
claro, grep um acrnimo (sigla)
para Global Regular Expression Print,
que usa expresses regulares para
pesquisar a ocorrncia de cadeias de
caracteres na entrada definida.
Por falar em expresses regulares (ou
regexp), o Aurlio Marinho Jargas es-
creveu dois artigos [1 e 2] imperdveis
para a Revista do Linux sobre esse
assunto e tambm publicou um livro [3]
pela Editora Novatec. Acho bom voc ler
esses artigos, eles vo te ajudar no que
est para vir.
Eu fico com grep, voc com gripe
Esse negcio de gripe brincadeira, s
um pretexto para pedir umas caipirinhas.
Eu te falei que o grep procura cadeias de
caracteres dentro de uma entrada defi-
nida, mas o que vem a ser uma entrada
definida? Bem, existem vrias formas
de definir a entrada do comando grep.
Veja s. Para pesquisar em um arquivo:
Nossos personagens voltam mesa do bar para discutir expresses regulares e
colocar a mo na massapela primeira vez, construindo um aplicativo simples
para catalogar uma coleo de CDs. POR JLIO CSAR NEVES
Curso de Shell Script
Papo de Botequim - Parte II
Papo de Botequim LI NUX USER
88 Setembro 2004 www.linuxmagazine.com.br
para clarear de vez as diferenas de
uso entre os membros da famlia.
Eu sei que em um arquivo qualquer
existe um texto falando sobre Linux, s
no tenho certeza se est escrito com L
maisculo ou minsculo. Posso fazer
uma busca de duas formas:
egrep (Linux | linux) arquivo.txt
ou ento:
grep [Ll]inux arquivo.txt
No primeiro caso, a expresso regular
complexa (Linux | linux) usa os parnte-
ses para agrupar as opes e a barra ver-
tical (|) usada como um ou (or, em
ingls) lgico, isto , estou procurando
Linux ou linux.
No segundo, a expresso regular
[Ll]inux significa: comeado por L ou l
seguido de inux. Como esta uma
expresso simples, o grep consegue
resolv-la, por isso melhor usar a
segunda forma, j que o egrep tornaria a
pesquisa mais lenta.
Outro exemplo. Para listar todos os
subdiretrios do diretrio corrente, basta
usar o comando $ ls -l | grep ^d. Veja o
resultado no Quadro 1.
No exemplo, o circunflexo (^) serviu
para limitar a pesquisa primeira
posio da sada do ls longo (parmetro
-l). Os apstrofos foram usados para o
Shell no ver o circunflexo. Vamos ver
mais um. Veja na Tabela 1 as quatro
primeiras posies possveis da sada de
um ls -l em um arquivo comum (no
diretrio, nem link, nem ).
Para descobrir todos os arquivos exe-
cutveis em um determinado diretrio
eu poderia fazer:
$ ls -la | egrep ^-..(x|s)
novamente usamos o circunflexo para
limitar a pesquisa ao incio de cada
linha, ou seja, listamos as linhas que
comeam por um trao (-), seguido de
qualquer coisa (o ponto), novamente
seguido de qualquer coisa, e por fim um
x ou um s. Obteramos o mesmo resul-
tado se usssemos o comando:
$ ls -la | grep ^-..[xs]
e alm disso, agilizaramos a pesquisa.
A CDteca
Vamos comear a desenvolver progra-
mas! Creio que a montagem de um
banco de dados de msicas bacana
para efeito didtico (e til nestes tempos
de downloads de arquivos MP3 e
queimadores de CDs). No se esquea
que, da mesma forma que vamos desen-
volver um monte de programas para
organizar os seus CDs de msica, com
pequenas adaptaes voc pode fazer o
mesmo para organizar os CDs de soft-
ware que vm com a Linux Magazine e
outros que voc compra ou queima, e
disponibilizar esse banco de software
para todos os que trabalham com voc
(o Linux multiusurio, e como tal deve
ser explorado).
Pra a! De onde eu vou receber os
dados dos CDs?
Vou mostrar como o programa pode
receber parmetros de quem o estiver
executando e, em breve, ensinarei a ler
os dados da tela ou de um arquivo.
Passando parmetros
Veja abaixo a estrutura do arquivo con-
tendo a lista das msicas:
nomedolbum^intrprete1~nomeU
damsica1:...:intrpreten~nomeU
damsican
Isto , o nome do lbum ser separado
por um circunflexo do resto do registro,
formado por diversos grupos compostos
pelo intrprete de cada msica do CD e a
msica interpretada. Estes grupos so
separados entre si por dois pontos (:) e,
internamente, o intrprete ser separado
por um til (~) do nome da msica.
Quero escrever um programa chamado
musinc, que incluir registros no meu
arquivo msicas. Passarei cada lbum
como parmetro para o programa:
$ musinc lbum^interprete~U
musica:interprete~musica:...
Desta forma, musinc estar recebendo os
dados de cada lbum como se fosse uma
varivel. A nica diferena entre um
parmetro recebido e uma varivel que
os primeiros recebem nomes numricos
(o que quis dizer que seus nomes so
formados somente por um algarismo,
isto , $1, $2, $3, , $9). Vamos, fazer
mais alguns testes:
$ cat teste
#!/bin/bash
#Teste de passagem de parametros
echo 1o. parm -> $1
echo 2o. parm -> $2
echo 3o. parm -> $3
Agora vamos rodar esse programinha:
$ teste passando parametros para U
testar
bash: teste: cannot execute
Ops! Esqueci-me de tornar o script exe-
cutvel. Vou fazer isso e testar nova-
mente o programa:
$ ls -l | grep ^d
drwxr-xr-x 3 root root 4096 Dec 18 2000 doc
drwxr-xr-x 11 root root 4096 Jul 13 18:58 freeciv
drwxr-xr-x 3 root root 4096 Oct 17 2000 gimp
drwxr-xr-x 3 root root 4096 Aug 8 2000 gnome
drwxr-xr-x 2 root root 4096 Aug 8 2000 idl
drwxrwxr-x 14 root root 4096 Jul 13 18:58 locale
drwxrwxr-x 12 root root 4096 Jan 14 2000 lyx
drwxrwxr-x 3 root root 4096 Jan 17 2000 pixmaps
drwxr-xr-x 3 root root 4096 Jul 2 20:30 scribus
drwxrwxr-x 3 root root 4096 Jan 17 2000 sounds
drwxr-xr-x 3 root root 4096 Dec 18 2000 xine
drwxr-xr-x 3 root root 4096 Jun 19 2000 xplns
Quadro 1 - Listando subdiretrios
Posio Valores possveis
1 -
2 r ou -
3 w ou -
4 x, s(suid) ou -
Tabela 1
LI NUX USER Papo de Botequim
89 Setembro 2004 www.linuxmagazine.com.br
Execute o programa:
$ teste passando parametros para testar
O programa teste recebeu 4 U
parametros
1o. parm -> passando
2o. parm -> parametros
3o. parm -> para
Para listar todos de uma U
tacada eu faco passando U
parametros para testar
Repare que antes das aspas usei uma
barra invertida, para escond-las da
interpretao do Shell (se no usasse as
contrabarras as aspas no apareceriam).
Como disse, os parmetros recebem
nmeros de 1 a 9, mas isso no significa
que no posso usar mais de nove
parmetros. Significa que s posso
enderear nove. Vamos testar isso:
$ cat teste
#!/bin/bash
# Programa para testar passagem U
de parametros (3a. Versao)
echo O programa $0 recebeu $# U
parametros
echo 11o. parm -> $11
shift
echo 2o. parm -> $1
shift 2
echo 4o. parm -> $1
Execute o programa:
$ teste passando parametros para U
testar
O programa teste recebeu 4 U
parametros que so:
11o. parm -> passando1
2o. parm -> parametros
4o. parm -> testar
Duas coisas muito interessantes aconte-
ceram neste script. Para mostrar que os
nomes dos parmetros variam de $1 a $9
digitei echo $11 e o que aconteceu? O
Shell interpretou como sendo $1 seguido
do algarismo 1 e listou passando1;
O comando shift, cuja sintaxe shift n,
podendo o n assumir qualquer valor
numrico, despreza os n primeiros
parmetros, tornando o parmetro de
ordem n+1.
Bem, agora que voc j sabe sobre
passagem de parmetros, vamos voltar
nossa cdteca para fazer o script de
incluso de CDs no meu banco chamado
musicas. O programa muito simples
(como tudo em Shell). Veja a Listagem 1.
O script simples e funcional; limito-
me a anexar ao fim do arquivo musicas o
parmetro recebido. Vamos cadastrar 3
lbuns para ver se funciona (para no
ficar enchendo lingia, suponho que
em cada CD s existem duas msicas):
$ musinc album3^Artista5U
~Musica5:Artista6~Musica5
$ musinc album1^Artista1U
~Musica1:Artista2~Musica2
$ musinc album 2^Artista3U
~Musica3:Artista4~Musica4
Listando o contedo do arquivo musicas:
$ cat musicas
album3^Artista5~Musica5:Artista6U
~Musica6
album1^Artista1~Musica1:Artista2U
~Musica2
album2^Artista3~Musica3:Artista4U
~Musica4
Podia ter ficado melhor. Os lbuns esto
fora de ordem, dificultando a pesquisa.
Vamos alterar nosso script e depois test-
lo novamente. Veja a listagem 2. Sim-
plesmente inseri uma linha que classifica
o arquivo musicas, redirecionando a
sada para ele mesmo (para isso serve a
opo -o), aps cada lbum ser anexado.
$ cat musicas
album1^Artista1~Musica1:Artista2U
~Musica2
albu2^Artista3~Musica3:Artista4U
~Musica4
album3^Artista5~Musica5:Artista6U
~Musica6
Oba! Agora o programa est legal e
quase funcional. Ficar muito melhor em
uma nova verso, que desenvolveremos
aps aprender a adquirir os dados da tela
e formatar a entrada.
$ chmod 755 teste
$ teste passando parametros para U
testar
1o. parm -> passando
2o. parm -> parametros
3o. parm -> para
Repare que a palavra testar, que seria o
quarto parmetro, no foi listada. Isso
ocorreu porque o programa teste s lista
os trs primeiros parmetros recebidos.
Vamos execut-lo de outra forma:
$ teste passando parametros U
para testar
1o. parm -> passando parametros
2o. parm -> para
3o. parm -> testar
As aspas no deixaram o Shell ver o
espao em branco entre as duas
primeiras palavras, e elas foram consid-
eradas como um nico parmetro. E
falando em passagem de parmetros,
uma dica: veja na Tabela 2 algumas var-
iveis especiais. Vamos alterar o pro-
grama teste para usar as novas variveis:
$ cat teste
#!/bin/bash
# Programa para testar passagem U
de parametros (2a. Versao)
echo O programa $0 recebeu $# U
parametros
echo 1o. parm -> $1
echo 2o. parm -> $2
echo 3o. parm -> $3
echo Para listar todos de uma U
\tacada\ eu faco $*
Varivel Significado
$0 Contm o nome do programa
$# Contm a quantidade de
parmetros passados
$* Contm o conjunto de todos os
parmetros (muito parecido com $@)
Tabela 2: Variveis especiais
$ cat musinc
#!/bin/bash
# Cadastra CDs (versao 2)
#
echo $1 >> musicas
sort -o musicas musicas
Listagem 2
$ cat musinc
#!/bin/bash
# Cadastra CDs (versao 1)
#
echo $1 >> musicas
Listagem 1: Incluindo CDs
na CDTeca
mando. Estamos ento prontos para
desenvolver o script para remover CDs
empenados da sua CDteca. Veja o
cdigo da Listagem 5.
Na primeira linha mandei para
/tmp/mus$$ o arquivo musicas, sem os
registros que atendessem a consulta feita
pelo comando grep. Em seguida, movi
/tmp/mus$$ por cima do antigo musicas.
Usei o arquivo /tmp/mus$$ como arqui-
vo de trabalho porque, como j havia
citado no artigo anterior, o $$ contm o
PID (identificao do processo) e, dessa
forma, cada um que editar o arquivo
musicas o far em um arquivo de tra-
balho diferente, evitando colises.
Os programas que fizemos at aqui
ainda so muito simples, devido falta
de ferramentas que ainda temos. Mas
bom praticar os exemplos dados porque,
eu prometo, chegaremos a desenvolver
um sistema bacana para controle dos
seus CDs. Na prxima vez que nos
encontrarmos, vou te ensinar como fun-
cionam os comandos condicionais e
aprimoraremos mais um pouco esses
scripts. Por hoje chega! J falei demais e
estou de goela seca! Garom! Mais um
sem colarinho!
Papo de Botequim LI NUX USER
90 Setembro 2004 www.linuxmagazine.com.br
Julio Cezar Neves
Analista de Suporte de
Sistemas desde 1969 e
trabalha com Unix
desde 1980, quando
fez parte da equipe
que desenvolveu o
SOX, um sistema
operacional similar ao Unix, produzido
pela Cobra Computadores.
S
O
B
R
E
O
A
U
T
O
R
Ficar listando arquivos com o
comando cat no est com nada, vamos
fazer um programa chamado muslist
para listar um lbum, cujo nome ser
passado como parmetro. Veja o cdigo
na Listagem 3:
Vamos execut-lo, procurando pelo
album 2. Como j vimos antes, para pas-
sar a string album 2 necessrio pro-
teg-la da interpretao do Shell, para
que ele no a interprete como dois
parmetros. Exemplo:
$ muslist album 2
grep: cant open 2
musicas: album1^Artista1~Musica1U
:Artista2~Musica2
musicas: album2^Artista3~Musica3U
:Artista4~Musica4
musicas:album3^Artista5~Musica5U
:Artista6~Musica6
Que lambana! Onde est o erro? Eu tive
o cuidado de colocar o parmetro pas-
sado entre aspas para o Shell no o
dividir em dois! , mas repare como o
grep est sendo executado:
grep $1 musicas
Mesmo colocando lbum 2 entre aspas,
para que fosse encarado como um nico
parmetro, quando o $1 foi passado pelo
Shell para o comando grep, transformou-
se em dois argumentos. Dessa forma, o
contedo da linha que o grep executou
foi o seguinte:
grep album 2 musicas
Como a sintaxe do grep :
grep <cadeia de caracteres> U
[arq1, arq2, ..., arqn]
O grep entendeu que deveria procurar a
cadeia de caracteres album nos arquivos
2 e musicas. Como o arquivo 2 no
existe, grep gerou o erro e, por encontrar
a palavra album em todos os registros de
musicas, listou a todos.
melhor ignorarmos maisculas e
minsculas na pesquisa. Resolveremos
os dois problemas com a Listagem 4.
Nesse caso, usamos a opo -i do grep
que, como j vimos, serve para ignorar
maisculas e minsculas, e colocamos o
$1 entre aspas, para que o grep continu-
asse a ver a cadeia de caracteres resul-
tante da expanso da linha pelo Shell
como um nico argumento de pesquisa.
$ muslist album 2
album2^Artista3~Musica3:Artista4U
~Musica4
Agora repare que o grep localiza a
cadeia pesquisada em qualquer lugar do
registro; ento, da forma que estamos
fazendo, podemos pesquisar por lbum,
por msica, por intrprete e mais.
Quando conhecermos os comandos
condicionais, montaremos uma nova
verso de muslist que permitir especi-
ficar por qual campo pesquisar.
Ah! Em um dia de vero voc foi
praia, esqueceu os CDs no carro, aquele
solzinho de 40 graus empenou seu
disco favorito e agora voc precisa de
uma ferramenta para remov-lo do
banco de dados? No tem problema,
vamos desenvolver um script chamado
musexc, para excluir estes CDs.
Antes de desenvolver o bacalho,
quero te apresentar a uma opo bas-
tante til da famlia de comandos grep.
a opo -v, que quando usada lista todos
os registros da entrada, exceto o(s) local-
izado(s) pelo comando. Exemplos:
$ grep -v album 2 musicas
album1^Artista1~Musica1:Artista2U
~Musica2
album3^Artista5~Musica5:Artista6U
~Musica6
Conforme expliquei antes, o grep do
exemplo listou todos os registros de
musicas exceto o referente a album 2,
porque atendia ao argumento do co-
$ cat muslist
#!/bin/bash
# Consulta CDs (versao 1)
#
grep $1 musicas
Listagem 3 - muslist
$ cat muslist
#!/bin/bash
# Consulta CDs (versao 2)
#
grep -i $1 musicas
Listagem 4
muslist melhorado
$ cat musexc
#!/bin/bash
# Exclui CDs (versao 1)
#
grep -v $1 musicas > /tmp/mus$$
mv -f /tmp/mus$$ musicas
Listagem 5 - musexc
[1] http://www.revistadolinux.com.br/ed/003/
ferramentas.php3
[2] http://www.revistadolinux.com.br/ed/007/
ereg.php3
[3] http://www.aurelio.net/er/livro/
INFORMAES
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
llNUX USk Papo de 8oIequim
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
0utubre 2004 www.linuxmagazine.com.br
C
uicn! tiugu dcis chcpes pci
uvci que hc}e eu vcu tei que
ului muitc. Piimeiic queic
mcstiui uns picgiuminhus simples
de usui e muitc uteis, ccmc c c0t, que
e usudc puiu ccitui um deteiminudc
peduc de um uiquivc. A sintuxe e
ulguns exemplcs de usc pcdem sei vis-
tcs nc Quudic 1:
Ccmc du puiu vei, existem quutic
sintuxes distintus: nu piimeiiu (c 15)
especiiquei umu uixu, nu segundu
(c ) especiiquei tcdc c textc ute
umu pcsiuc, nu teiceiiu (c 4) tudc de
umu deteiminudu pcsiuc em diunte e
nu quuitu (c 1,3,5,7,9), sc us pcsies
deteiminudus. A ultimu pcssihilidude
(c 3,5,8) ci sc puiu mcstiui que pcde-
mcs mistuiui tudc.
Mus nuc pense que ucuhcu pci ui!
Ccmc vcc deve tei peicehidc, estu
cimu de cut e muitc util puiu lidui ccm
uiquivcs ccm cumpcs de tumunhc xc,
mus utuulmente c que muis existe suc
uiquivcs ccm cumpcs de tumunhc vuii-
uvel, cnde cudu cumpc teiminu ccm um
delimitudci. Vumcs dui umu clhudu nc
uiquivc m0sicos que ccmeumcs u pie-
puiui nu ultimu vez que viemcs uqui nc
hctequim. Ve}u c Quudic 2.
Entuc, iecupitulundc, c luycut
dc uiquivc e c seguinte: nomc Jo
olh0m^intcrprctc1nomc Jo m0sico1.....
intcrprctcnnomc Jo m0sicon, istc e, c
ncme dc ulhum seiu sepuiudc pci um
ciicunexc (^) dc iestc dc iegistic, que
e cimudc pci diveiscs giupcs ccmpcs-
tcs pelc inteipiete de cudu musicu dc
CD e u iespectivu musicu inteipietudu.
Estes giupcs suc sepuiudcs entie si pci
dcis-pcntcs (:) e c inteipiete seiu sepu-
iudc dc ncme du musicu pci um til ().
Entuc, puiu pegui cs dudcs ieeientes
u tcdus us segundus musicus dc uiquivc
musicus, devemcs digitui:
| ul f. o: mu+
^l+l.~|u+.
^l+l4~|u+4
^l+lh~|u+'
^l+lo~|u+o~1!:
Ou se}u, ccitumcs c segundc cumpc
z(j de jclJ, cumpc em ingls) delimi-
tudc (J) pci dcis-pcntcs (.). Mus, se
quiseimcs scmente cs inteipietes, deve-
mcs digitui:
| ul f. o: mu+ [ ul
f1 o~
^l+l.
^l+l4
^l+lh
^l+lo
Puiu entendei melhci issc, vumcs unuli-
sui u piimeiiu linhu de musicus:
| r-o 1 mu+
!Lum 1^^l+l1~|u+1:
^l+l.~|u+.
Entuc chseive c que ci eitc:
!Lum 1^^l+l1~|u+1:
^l+l.~|u+.
Destu cimu, nc piimeiic cut c piimeiic
cumpc dc delimitudci (J) dcis-pcn-
tcs (.) e olh0m 1^rtisto1M0sico1 e c
segundc, que e c que ncs inteiessu, e
rtisto2M0sico2. Vumcs entuc vei c
que uccnteceu nc segundc cut:
^l+l.~|u+.
Agciu, piimeiic cumpc dc delimitudci
(J) til (), que e c que ncs inteiessu,
e rtisto2 e c segundc e M0sico2. Se
c iuciccinic que izemcs puiu u pii-
Um chopinho, um aperiIivo e o papo conIinua. DesIa vez vamos aprender
alguns comandos de manipulao de cadeias de caracIeres, que sero muiIo
Ieis na hora de incremenIar nossa "CDIeca". PDk IULID CZAk NV5
Curso de 5heII 5cript
Pape de
betequim lll
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
0utubre 2004 www.linuxmagazine.com.br
Papo de 8oIequim llNUX USk
meiiu linhu ci uplicudc uc iestunte dc
uiquivc, cheguiemcs u iespcstu unte-
iicimente dudu. Outic ccmundc muitc
inteiessunte e c tr que seive puiu suhs-
tituii, ccmpiimii cu iemcvei cuiucteies.
Suu sintuxe segue c seguinte pudiuc:
l {00- o-+1 {o-+.
O ccmundc ccpiu c textc du entiudu
pudiuc (stJin), ticcu us ccciinciu dcs
cuiucteies de coJcio1 pelc seu cciies-
pcndente nu coJcio2 cu ticcu multiplus
ccciincius dcs cuiucteies de coJcio1
pci scmente um cuiuctei, cu uindu
cuiucteies du coJcio1. As piincipuis
cpes dc ccmundc suc mcstiudus nu
Tuhelu 1.
Piimeiic ve}u um exemplc hem hchc:
| -r0 L0L0 [ l 0
LL
lstc e, ticquei tcdus us ccciincius du
letiu o pelu letiu o. Supcnhu que em
deteiminudc pcntc dc meu sciipt eu
peu uc cpeiudci puiu digitui s cu n
(sim cu nuc), e guuidc suu iespcstu
nu vuiiuvel $Rcsp. Oiu, c ccnteudc de
$Rcsp pcde ccntei letius muiusculus
cu minusculus, e destu cimu eu teiiu
que uzei diveiscs testes puiu suhei se
u iespcstu dudu ci S, s, N cu n. Entuc c
melhci e uzei:
| -|-r0 |- [ l 'H r
e upcs este ccmundc eu teiiu ceitezu
de que c ccnteudc de $Rcsp seiiu um
s cu um n. Se c meu uiquivc rqLnt
estu tcdc em letius muiusculus e dese}c
pussu-lus puiu minusculus eu uc:
| l ^. z ^q!rl lm||
| m. f lm|| ^q!rl
Ncte que neste cusc usei u nctuuc A-
Z puiu nuc escievei ABCD.YZ. Outic
tipc de nctuuc que pcde sei usudu suc
us cscopc scq0cnccs (ccmc eu tiuduzi-
iiu' Seqncius de escupe' Meic sem
sentidc, ne' Mus vu lu.) que tumhem
suc ieccnhecidus pci cutics ccmundcs
e tumhem nu linguugem C, e cu}c signi-
cudc vcc veiu nu Tuhelu 2:
Deixu eu te ccntui um cuusc: um
ulunc que estuvu dunudc ccmigc iescl-
veu ccmplicui minhu vidu e ccmc ies-
pcstu u um exeicicic piuticc, vulendc
nctu, que pussei ele me entiegcu um
sciipt ccm tcdcs cs ccmundcs sepu-
iudcs pci pcntc-e-viigulu (lemhie-se
que c pcntc-e-viigulu seive puiu sepu-
iui diveiscs ccmundcs em umu mesmu
linhu). Vcu dui um exemplc simpli-
cudc, e idictu, de um sciipt ussim:
| l 0rfu0
-r0 !-+ 0_m0 'r-!!
!+ruX o0 Ju!+0 -z H-.-
!+.0:l !+.0:wo:!:m
f !+.0.o-.ru!!:o ~
Eu executei c picgiumu e ele uncicncu:
| 0rfu0
!-+ 0_m0 'r-!! !+ruX
o0 Ju!+0 -z H-.-
r0m-r-.-!|
0rfu0 !+.0 mu-X mu+
mu+r mu!+l rum-0
Mus nctu de picvu e ccisu seiiu (e nctu
de dclui e muis uindu) entuc, puiu
entendei c que c ulunc huviu eitc, c
chumei e em suu iente digitei:
| l : `r 0rfu0
-r0 !-+ 0_m0 'r-!!
!+ruX o0 Ju!+0 -z H-.-
wo
o ~
! !
m f !+X0 .o-.ru!!
O cuiu ccu muitc desupcntudc, pcique
em dcis cu tis segundcs eu desz u
gczuuc que ele peideu hcius puiu uzei.
Mus pieste utenuc! Se eu estivesse em
umu muquinu Unix, eu teiiu digitudc:
| l : `1. 0rfu0
Agciu ve}u u dieienu entie c iesultudc
de um ccmundc dute executudc hc}e e
cutic executudc hu duus semunus:
'ur '- 1 14:':'4 .4
'ur '- ' 1:1.: .4
Nctcu c espuc extiu upcs c Sep nu
segundu linhu' Puiu pegui u hciu eu
deveiiu digitui:
| ol- [ ul f 4 o ` `
14:':'4
A sinIaxe do cuI : rut -r Pcslni-Pcslim
[crquivc], onde Pcslni a posio inicial, e
Pcslim a posio hnal. ve|a os exemplos:
| l rum-0
1.4'h/o
o/h'4.1
1.4''4.1
o/h''h/o
| ul 1' rum-0
1.4'
o/h
1.4'
o/h'
| ul h rum-0
1.4'h
o/h'
1.4''
o/h''
| ul 4 rum-0
4'h/o
/h'4.1
4''4.1
h''h/o
| ul 1..'./. rum-0
1'/
oh4.
1'4.
/'ho
| ul .'.o rum-0
1.'o
oh.1
1.'.1
o/'/o
Quadro - D comando cut
| l mu+
!Lum 1^^l+l1~|u+1:
^l+l.~|u+.
!Lum .^^l+l~|u+:
^l+l4~|u+4
!Lum ^^l+l'~|u+':
^l+lh~|u+'
!Lum 4^^l+l/~|u+/:
^l+lo~|u+o
Quadro z - D arquivo

LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
llNUX USk Papo de 8oIequim
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
0utubre 2004 www.linuxmagazine.com.br
Mus hu duus semunus ccciieiiu c
seguinte:
| ol- [ ul f 4 o ` `
'
lstc pcique existem 2 cuiucteies em
hiuncc untes dc 5 (diu). Entuc c ideul
seiiu tiunscimui cs espucs em hiuncc
ccnsecutivcs em scmente um espuc
puiu pcdei tiutui cs dcis iesultudcs dc
ccmundc Jotc du mesmu cimu, e issc
se uz ussim:
| ol- [ l
'ur '- ' 1:1.: .4
E ugciu eu pcssc ccitui:
| ol- [ l [ ul f 4
o
1:1.:
Olhu sc ccmc c Shell estu quehiundc c
gulhc. Ve}u c ccnteudc de um uiquivc
huixudc de umu muquinu Vindcvs:
| l .- ^qU0U'.lXl
!l- qu+.0^||
f0+ _-o0 -!0^||
U'U+r - f0+^||
L+Xo0 0 um^||
fl m! f-+l0.^||
Dicu: u cpuc v dc cut mcstiu cs cuiuc-
teies de ccnticle invisiveis, ccm u nctu-
uc ^L, cnde ^ e u teclu Control e L e
u iespectivu letiu. A cpuc c mcstiu c
nul du linhu ccmc um ciiuc ($).
lstc ccciie pcique nc DOS c m dcs
iegistics e indicudc pci um Corrioc
Rct0rn (\i - Retcinc de Cuiic, CR) e
um Linc IccJ (\ - Avunc de Linhu, cu
LF). Nc Linux pciem c nul dc iegis-
tic e indicudc scmente pelc Linc IccJ.
Vumcs limpui este uiquivc:
| l o ``` ^qU0U'.lXl lm||
| m. f lm|| ^qU0U'.lXl
Agciu vumcs vei c que uccnteceu:
| l .- ^qU0U'.lXl
!l- qu+.0|
f0+ _-o0 -!0|
U'w+r - f0+|
L+Xo0 0 um|
fl m! f-+l0.|
Bem u cpuc J dc tr iemcve dc uiquivc
tcdus us ccciincius dc cuiucteie espe-
ciicudc. Destu cimu eu iemcvi cs
cuiucteies indese}udcs, sulvei c textc
em um uiquivc tempciuiic e pcsteiici-
mente iencmeei-c puiu c ncme ciiginul.
Umu chseivuuc: em um sistemu Unix
eu deveiiu digitui:
| l o ``1'` ^qU0U'.
lXl lm||
Umu dicu: c pichlemu ccm cs teiminu-
dcies de linhu (CR,LF) sc uccnteceu
pcique u tiunseinciu dc uiquivc ci
eitu nc mcdc hinuiic (cu imuge), Se
untes du tiunsmissuc dc uiquivc tivesse
sidc estipuludu u cpuc oscii dc tp, istc
nuc teiiu ccciiidc.
- Olhu, depcis destu dicu t ccmeundc u
gcstui deste tul de shell, mus uindu tem
muitu ccisu que nuc ccnsigc uzei.
- Pcis e, uindu nuc te ulei quuse nudu
schie picgiumuuc em shell, uindu
tem muitu ccisu puiu upiendei, mus
ccm c que upiendeu, }u du puiu iescl-
vei muitcs pichlemus, desde que vcc
udquiiu c mcdc shell de pensui. Vcc
seiiu cupuz de uzei um sciipt que digu
quuis pesscus estuc lcgudus hu muis
de um diu nc seu seividci'
- Cluic que nuc! Puiu issc seiiu necessu-
iic eu ccnhecei cs ccmundcs ccndicic-
nuis que vcc uindu nuc me expliccu
ccmc uncicnum. - Deixu eu tentui
mudui um pcucc u suu lcgicu e tiuz-
lu puiu c mcdc shell de pensui, mus
untes e melhci tcmuimcs um chcpe.
Agciu que }u mclhei u puluviu, vumcs
iesclvei c pichlemu que te picpus. Ve}u
ccmc uncicnu c ccmundc uho:
| wr0
r-.- l
1 '- 1o 1:4
l0- l
'- . /:1
!-_+ l
1 '- . o:1
!!0 l
'- . 1:1
E ve}u tumhem c dute:
| ol-
|0r '- . 1:4/:1 h| .4
Repuie que c ms e c diu estuc nc
mesmc cimutc em umhcs cs ccmun-
dcs. Oiu, se em ulgum iegistic dc uho
eu nuc enccntiui u dutu de hc}e, e sinul
que c usuuiic estu lcgudc hu muis
de um diu, }u que ele nuc pcde tei se
lcgudc umunhu. Entuc vumcs guui-
dui c peduc que impcitu du dutu de
hc}e puiu depcis piccuiu-lu nu suidu dc
ccmundc uho:
| Ul|ol- [ ul f .
o` `
Eu usei u ccnstiuuc $(...), puiu piic-
iizui u execuuc dcs ccmundcs untes
de utiihuii u suu suidu u vuiiuvel Doto.
Vumcs vei se uncicncu:
| -r0 |Ul
'- .
Belezu! Agciu, c que temcs que uzei e
piccuiui nc ccmundc vhc cs iegistics
que nuc pcssuem estu dutu.
- Ah! Eu uchc que estcu entendendc!
Vcc ulcu em piccuiui e me ccciieu c
ccmundc giep, estcu ceitc'
- Ceitissimc! Sc que eu tenhc que usui c
giep ccm uquelu cpuc que ele sc listu
cs iegistics ncs quuis ele nuc enccn-
ticu u cudeiu. Vcc se lemhiu que
cpuc e essu'
- Cluic, u v.
- lssc! Tu cundc hcm! Vumcs vei:
| wr0 [ _- . |Ul
r-.- l
1 '- 1o 1:4
Se eu quisesse um pcucc muis de peiu-
muiiu eu uiiu ussim:
| wr0 [ _- . |Ul [
ul f1 o ` `
r-.-
Viu' Nuc ci necessuiic usui ccmundc
ccndicicnul, ute pcique c ncssc
ccmundc ccndicicnul, c umcsc i, nuc
testu ccndiuc, mus sim instiues.
Mus untes ve}u issc:
Opo Signihcado
-s Comprime n ocorrncias de
cadeia em apenas uma
-d kemove os caracIeres de cadeia
1abeIa - D comando tr
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
0utubre 2004 www.linuxmagazine.com.br
Papo de 8oIequim llNUX USk
| ! mu+
mu+
| -r0 |.

| ! ^q1r-X+l-rl-
!: ^q1r-X+l-rl-: H0 ur
! !- 0 o+-l0,
| -r0 |.
1
| wr0 [ _- r-.-
r-.- l1 '- 1o
1:4 1...4.144
| -r0 |.

| wr0 [ _- u!+r
| -r0 |.
1
O que e que esse $. uz ui' Algc ccme-
udc pci ciiuc ($) puiece sei umu vuii-
uvel, ceitc' Sim e umu vuiiuvel que
ccntem c ccdigc de ietcinc du ultimu
instiuuc executudu. Pcssc te guiun-
tii que se estu instiuuc ci hem suce-
didu, $. teiu c vulci zeic, cusc ccntiuiic
seu vulci seiu dieiente de zeic. O que
ncssc ccmundc ccndicicnul (i) uz e
testui estu vuiiuvel. Entuc vumcs vei u
suu sintuxe:
+f mo
lr-r
mo1
mo.
mor
-!-
mo
mo4
mom
!
Ou se}u, cusc ccmundc cmJ tenhu sidc
executudc ccm sucessc, cs ccmundcs
dc hlccc Jo thcn (cmJ1, cmJ2 c cmJn)
seiuc executudcs, cusc ccntiuiic, cs
ccmundcs dc hlccc cpcicnul Jo clsc
(cmJ3, cmJ4 c cmJm) seiuc executudcs.
O hlccc dc ij e teiminundc ccm um j.
Vumcs vei nu piuticu ccmc issc un-
cicnu, usundc um sciipt que inclui usu-
uiics nc uiquivc /ctc/possuJ:
| l +ruu
}!L+rLr
} !-0 1
+f _- ^|1 -lwo
lr-r
-r0 Uu+0 ``|1``
-X+l-
-!-
+f u-oo |1
lr-r
-r0 Uu+0 ``|1``
+r!uo0 -m -lwo
-!-
-r0 0L!-m r0
olm-rl0. !0- - 00l.
!
!
Repuie que c ij estu testundc diietc c
ccmundc rcp e estu e u suu nulidude.
Cusc c ij se}u hem sucedidc, cu se}u, c
usuuiic (cu}c ncme estu em $1) ci
enccntiudc em /ctc/possuJ, cs ccmun-
dcs dc hlccc Jo thcn seiuc executudcs
(neste exemplc, upenus c echc). Cusc
ccntiuiic, us instiues dc hlccc Jo clsc
seiuc executudus, quundc um ncvc ij
testu se c ccmundc 0scroJJ ci execu-
tudc u ccntentc, ciiundc c iegistic dc
usuuiic em /ctc/possuJ, cu exihindc
umu mensugem de eiic, cusc ccntiuiic.
Executui c picgiumu e pusse ccmc
puiumetic um usuuiic }u cudustiudc:
| +ruu r-.-
r-.-:X:'4.:11:Ju!+0 H-.-:
r0m-r-.-:L+r
Lr
Uu+0 `r-.-` -X+l-
Nc exemplc dudc, suigiu umu linhu
indese}udu, elu e u suidu dc ccmundc
giep. Puiu evitui que issc uccnteu,
devemcs desviui u suidu puiu /Jcv/n0ll.
O picgiumu cu ussim:
| l +ruu
}!L+rLr
} !-0 .
+f _- ^|1 -lwo
o-.ru!!
lr-r
-r0 Uu+0 ``|1``
-X+l-
-!-
+f u-oo |1
lr-r
-r0 Uu+0 ``|1``
+r!uo0 -m -lwo
-!-
-r0 0L!-m r0
olm-rl0. !0- - 00l.
!
!
Vumcs testu-lc ccmc um usuuiic ncimul :
| +ruu .-H+r_u-m
.+ruu{h: u-oo: r0l f0uro
0L!-m r0 olm-rl0.
!0- - 00l.
Aquelu mensugem de eiic nuc deveiiu
upuiecei! Puiu evitui issc, devemcs
iediiecicnui u suidu de eiic (stJcrr) dc
ccmundc 0scroJJ puiu /Jcv/n0ll. A vei-
suc nul cu ussim:
| l +ruu
}!L+rLr
} !-0
+f _- ^|1 -lwo
o-.ru!!
lr-r
-r0 Uu+0 ``|1``
-X+l-
-!-
+f u-oo |1 . o-.ru!!
lr-r
-r0 Uu+0 ``|1``
+r!uo0 -m -lwo
-!-
-r0 0L!-m r0
olm-rl0. !0- - 00l.
!
!
Depcis dissc, ve}umcs c ccmpcitumentc
dc picgiumu, se executudc pelc icct:
| +ruu L0l-!r0
Uu+0 `L0l-!r0` +r!u+o0 -m
-lwo
E ncvumente:
| +ruu L0l-!r0
Uu+0 `L0l-!r0` -X+l-
5eqncia 5ignicado DctaI
\I 1abulao \o
\n Nova linha
LN1Lk:
\oz
\v 1abulao
verIical
\o
\I Nova
Pagina
\oq
\r lncio da
linha ^M:
\o
\\ Uma barra
inverIida
\oq
1abeIa z
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
llNUX USk Papo de 8oIequim
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
0utubre 2004 www.linuxmagazine.com.br
Lemhiu que eu ulei que uc lcngc dcs
ncsscs pupcs e chcpes cs ncsscs pic-
giumus iiium se upiimciundc' Entuc
ve}umcs ugciu ccmc pcdemcs melhciui
c ncssc picgiumu puiu incluii musicus
nu 'CDTecu':
| l mu+r
}!L+rLr
} ol U .-0
}
+f _- ^|1| mu+
o-.ru!!
lr-r
-r0 !l- !Lum -l
olo0
-!-
-r0 |1 mu+
0l mu+ 0 mu+
!
Ccmc vcc viu, e umu pequenu evclu-
uc em ieluuc u veisuc unteiici. Antes
de incluii um iegistic (que nu veisuc
unteiici pcdeiiu sei duplicudc), testu-
mcs se c iegistic ccmeu (^) e teiminu
($) de cimu idnticu uc puiumetic
olh0m pussudc ($1). O ciicunexc (^)
nc inicic du cudeiu e ciiuc ($) nc m,
seivem puiu testui se c puiumetic (c
ulhum e seus dudcs) e exutumente iguul
u ulgum iegistic }u existente. Vumcs
executui ncssc picgiumu ncvumente,
mus destu vez pussumcs ccmc puiume-
tic um ulhum }u cudustiudc, piu vei c
que uccntece:
| mu+r !Lum 4^^l+l/~
|u+/:^l+lo~|u+o
!l- !Lum -l olo0
E ugciu um nuc cudustiudc:
| mu+r !Lum '^^l+l~
|u+:^l+l1~|u+1
| l mu+
!Lum 1^^l+l1~|u+1:
^l+l.~|u+.
!Lum .^^l+l~|u+:
^l+l4~|u+4
!Lum ^^l+l'~|u+':
^l+lh~|u+'
!Lum 4^^l+l/~|u+/:
^l+lo~|u+o
!Lum '^^l+l~|u+:
^l+l1~|u+1
Ccmc vcc viu, c picgiumu melhc-
icu um pcuquinhc, mus uindu nuc estu
picntc. medidu que eu te ensinui u
picgiumui em shell, ncssu CDtecu vui
cui cudu vez melhci.
- Entendi tudc que vcc me expliccu,
mus uindu nuc sei ccmc uzei um i
puiu testui ccndies, cu se}u c usc
ncimul dc ccmundc.
- Puiu issc existe c ccmundc test, que
testu ccndies. O ccmundc i testu
c ccmundc test. Ccmc }u ulei muitc,
piecisc de uns chcpes puiu mclhui u
puluviu. Vumcs puiui pci uqui e nu
picximu vez te explicc diieitinhc c
usc dc test e de diveisus cutius sintu-
xes dc i.
- Fulcu! Achc hcm mesmc pcique eu
tumhem }u t cundc zcnzc e ussim
tenhc tempc puiu piuticui esse mcnte
de ccisus que vcc me ulcu hc}e.
Puiu xui c que vcc upiendeu, tente
uzei um sciiptizinhc puiu incimui se
um deteiminudc usuuiic, cu}c ncme
seiu pussudc ccmc puiumetic, estu
lcgudc nc sistemu cu nuc.
- A Chicc! tiuz muis dcis chcpes piu
mim pci uvci.
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
edie oq www.linuxmagazine.com.br
Papo de 8oIequim

ui cuiu, tentcu uzei c exeicicic
que te pedi em ncssc ultimc
enccntic'
- Cluic que sim! Em picgiumuuc, se
vcc nuc tieinui nuc upiende. Vcc
me pediu um sciipt puiu incimui se
um deteiminudc usuuiic, cu}c ncme
seiu pussudc ccmc puiumetic puiu c
sciipt, estu lcgudc (uighh!) cu nuc.
Fiz c seguinte:
| l !0_o0
}!L+rLr
} -qu+ - um uu+0 -l
} !0_o0 0u r0
+f wr0 [ _- |1
lr-r
-r0 |1 -l !0_o0
-!-
-r0 |1 r0 -l r0 -o0
!
- Culmu iupuz! 1u vi que vcc chegcu
cheic de tesuc. Piimeiic vumcs pedii
cs ncsscs chcpes de piuxe e depcis
vumcs uc Shell. Chicc, tiuz dcis chc-
pes, um sem ccluiinhc!
- Auuh! Agciu que }u mclhumcs cs ncs-
scs hiccs, vumcs dui umu clhudu ncs
iesultudcs dc seu picgiumu:
| !0_o0 r-.-
r-.- l l 1o
1.:. 1...4.144
r-.- -l !0_o0
Reulmente uncicncu. Pussei meu
ncme de usuuiic ccmc puiumetic e
ele disse que eu estuvu lcgudc, pciem
ele impiimiu umu linhu extiu, que eu
nuc pedi, que e u suidu dc ccmundc
uho. Puiu evitui que issc uccnteu, e
sc mundu-lu puiu c huiucc negic dc
mundc UNlX, c /Jcv/n0ll. Ve}umcs
entuc ccmc cuiiu:
| l !0_o0
}!L+rLr
} -qu+ - um -0 -l
} !0_o 0u r0 .-0 .
+f wr0 [ _- |1 o-.ru!!
lr-r
-r0 |1 -l !0_o0
-!-
-r0 |1 r0 -l r0 -o0
!
Agciu vumcs ucs testes:
| !0_o0 r-.-
r-.- -l !0_o0
| !0_o0 r+0
r+0 r0 -l r0 -o0
Ah, ugciu sim! Lemhie-se dessu pegu-
dinhu: u muici puite dcs ccmundcs tem
umu suidu pudiuc e umu suidu de eiics
(c rcp e umu dus pcucus excees:
ele nuc exihe umu mensugem de eiic
quundc nuc uchu umu cudeiu de cuiuc-
teies) e devemcs iediiecicnu-lus puiu c
huiucc negic quundc necessuiic.
Bem, ugciu vumcs mudui de ussuntc:
nu ultimu vez que ncs enccntiumcs
uqui nc hctequim, quundc }u estuvumcs
de gcelu secu, vcc me peiguntcu ccmc
se testum ccndies. Puiu issc, usumcs
c ccmundc tcst
1estes
Tcdcs estumcs uccstumudcs u usui c
ij puiu testui ccndies, e estus suc
sempie moior q0c, mcnor q0c, moior
o0 i0ol o, mcnor o0 i0ol o, i0ol o e
O garon |a perdeu a conIa das cerve|as, e o assunIo no acaba. DesIa
vez vamos aprender a IesIar os mais variados Iipos de condies,
para podermos conIrolar a execuo de nosso programa de acordo
com a enIrada Iornecida pelo usuario. PDk IULID CZAk NV5
Curso de 5heII 5cript
Pape de
betequim lV
Dpo Verdadeiro se
-e crq crq exisIe
-s crq crq exisIe e Iem Iamanho maior que zero
-[ crq crq exisIe e um arquivo regular
-J crq crq exisIe e um direIrio
-r crq crq exisIe e com direiIo de leiIura
-w crq crq exisIe e com direiIo de escriIa
-x crq crq exisIe e com direiIo de execuo
1abeIa - Dpes do
para arquivos
D
a
v
e

H
a
m
i
I
t
o
n

-

w
w
w
.
s
x
c
.
h
u
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
Papo de 8oIequim
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
edie oq www.linuxmagazine.com.br
Jijcrcntc Jc. Puiu testui ccndies em
Shell Sciipt usumcs c ccmundc tcst, sc
que ele e muitc muis pcdeicsc dc que
uquilc ccm que estumcs uccstumu-
dcs. Piimeiiumente, ve}u nu Tuhelu 1
us piincipuis cpes (existem muitus
cutius) puiu testui uiquivcs em discc
e nu Tuhelu 2 us piincipuis cpes puiu
teste de cudeius de cuiucteies.
Pensu que ucuhcu' Engunc seu! Agciu
e hciu de ulgc muis umiliui, us umcsus
ccmpuiues ccm vulcies numeiiccs.
Ve}u u Tuhelu 3, e scme us cpes }u
upiesentudus cs cpeiudcies du Tuhelu 4.
Uu! Ccmc vcc viu, tem ccisu piu
chuchu, e c ncssc ij e muitc muis pcde-
icsc que c dcs cutics. Vumcs vei em
uns exemplcs ccmc issc tudc uncicnu.
Testumcs u existnciu de um diietciic:
+f l-l o !mL
lr-r
o !mL
-!-
mo+ !mL
o !mL
!
Nc exemplc, testei u existnciu dc
diietciic lmh. Se nuc existisse (clsc), ele
seiiu ciiudc. 1u sei, vcc vui ciiticui u
minhu lcgicu dizendc que c sciipt nuc
estu ctimizudc. Eu sei, mus queiiu que
vcc c entendesse ussim, puiu entuc
pcdei usui c pcntc-de-espuntuuc (!)
ccmc um negudci dc test. Ve}u sc:
+f l-l ! o !mL
lr-r
mo+ !mL
!
o !mL
Destu cimu c diietciic lmh seiiu
ciiudc scmente se ele uindu nuc exis-
tisse, e estu negutivu deve-se uc pcntc
de exclumuuc (!) piecedendc u cpuc
J. Ac m du execuuc desse iugmentc
de sciipt, ccm ceitezu c picgiumu estu-
iiu dentic dc diietciic lmh. Vumcs vei
dcis exemplcs puiu entendei u dieienu
nu ccmpuiuuc entie numeics e entie
cudeius de cuiucteies.
o11
o.1
+f l-l |o1 |o.
lr-r
-r0 ^ .+.-+ 0 +_u+.
-!-
-r0 ^ .+.-+ 0 o+f--rl-.
!
Executundc c iugmentc de picgiumu
ucimu, teiemcs ccmc iesultudc:
^ .+.-+ 0 o+f--rl-.
Vumcs ugciu ulteiu-lc um pcucc puiu
que u ccmpuiuuc se}u numeiicu:
o11
o.1
+f l-l |o1 -q |o.
lr-r
-r0 ^ .+.-+ 0 +_u+.
-!-
-r0 ^ .+.-+ 0 o+f--rl-.
!
E vumcs executu-lc ncvumente:
^ .+.-+ 0 +_u+.
Ccmc vcc viu, nus duus execues
chtive iesultudcs dieientes, pcique u
cudeiu de cuiucteies u1 e ieulmente
dieiente de 1. Pciem, u ccisu mudu
de guiu quundc us vuiiuveis suc testu-
dus numeiicumente, }u que c numeic 1
e iguul uc numeic u1.
Puiu mcstiui c usc dcs ccnectcies o
(cu) e o (e), ve}u um exemplc unimul,
picgiumudc diietc nc picmpt dc Bush.
Me desculpem cs zcclcgcs, mus eu
nuc entendc nudu de ieinc, lc, clusse,
cidem, umiliu, gneic, especie e cutius
ccisus dc tipc, destu cimu c que estcu
chumundc de umiliu cu de gneic tem
giunde chunce de estui tctul e ccmple-
tumente incciietc:
| !m+!+f-!+r-
| -r-0_l0
| +f l-l |!m+!+ r+o-
|-r-0 !0L0 0 |!m+!+
f-!+r |-r-0 !-0
lr-r
-r0 u+oo0
-!-
-r0 0o- m0
!
0o- m0
Neste exemplc, cusc c unimul csse
du umiliu cunideu e (o) dc gneic lchc,
cu (o) du umiliu elinu e (o) dc gneic
leuc, seiiu dudc um uleitu, cusc ccntiu-
iic u mensugem seiiu de incentivc.
Atenuc: Os sinuis de muici (:) nc
inicic dus linhus inteinus uc i suc cs
picmpts de ccntinuuuc (que estuc
denidcs nu vuiiuvel $PS2). Quundc c
shell identicu que um ccmundc ccn-
tinuuiu nu linhu seguinte, uutcmuticu-
mente ele cclccu este cuiucteie, ute que
c ccmundc se}u enceiiudc.
Vumcs mudui c exemplc puiu vei se c
picgiumu ccntinuu uncicnundc:
| !m+!+f-!+r0
| -r-0_l0
| +f l-l |!m+!+ f-!+r0 0
|!m+!+ r+o-0 |-r-0
0r 0 |-r-0 !0L0
lr-r
-r0 u+oo0
-!-
-r0 0o- m0
!
u+oo0
Ohviumente u cpeiuuc iesultcu em
eiic, pcique u cpuc o tem piecednciu
Dpo Verdadeiro se:
-z rcJeic 1amanho de cadeia zero
-n rcJeic 1amanho de cadeia maior que zero
rcJeic A cadeia cadeia Iem Iamanho maior que zero
r = rz Cadeia r e rz so idnIicas
1abeIa z - Dpes do
para cadeias de caracteres
Dpo Verdadeiro se 5ignicado
n -eq nz n e nz so iguais equal
n -ne nz n e nz no so iguais noI equal
n -qt nz n maior que nz greaIer Ihan
n -qe nz n maior ou igual a nz greaIer or equal
n -lt nz n menor que nz less Ihan
n -le nz n menor ou igual a nz less or equal
1abeIa j - Dpes do
para nmeros
Dperador finaIidade
ParnIeses {) o
Lxclamao ! o
-c o
-c o
1abeIa q
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
edie oq www.linuxmagazine.com.br
Papo de 8oIequim
schie u o e, dessu, cimu c que ci uvu-
liudc piimeiic ci u expiessuc:
|!m+!+ r+o-0 |-r-0
0r
Que ci uvuliudu ccmc ulsu, ietci-
nundc c seguinte:
|!m+!+ f-!+r0 0 !^!' 0
|-r-0 !0L0
Que iesclvidu iesultu em:
!!U^U!1 0 !^!' 0 !^!'
Ccmc ugciu tcdcs cs ccnectcies suc
o, e puiu que umu seiie de expiesses
ccnectudus entie si pci diveiscs cu
lcgiccs se}u veidudeiiu, hustu que umu
delus c se}u. A expiessuc nul iesultcu
ccmc VERDADElRO e c thcn ci exe-
cutudc de cimu eiiudu. Puiu que issc
vclte u uncicnui uumcs c seguinte:
| +f l-l `|!m+!+ f-!+r0
0 |!m+!+ r+o-0`
`|-r-0 0r 0 |-r-0
!0L0`
lr-r
-r0 u+oo0
-!-
-r0 0o- m0
!
0o- m0
Destu cimu, ccm c usc dcs puin-
teses ugiupumcs us expiesses ccm c
ccnectci o, piiciizundc u execuuc e
iesultundc em VLRDDLIRO o ILSO.
Puiu que se}u VLRDDLIRO c iesul-
tudc de duus expiesses ligudus pelc
ccnectci o, e necessuiic que umhus
se}um veidudeiius, c que nuc e c cusc
dc exemplc ucimu. Assim, c iesultudc
nul ci ILSO, sendc entuc c else cci-
ietumente executudc.
Se quiseimcs escclhei um CD que
tenhu uixus de 2 uitistus dieientes, ncs
sentimcs tentudcs u usui um ij ccm c
ccnectci o, mus e sempie hcm lemhiui
que c hush ncs ceiece muitcs iecuiscs
e issc pcdeiiu sei eitc de cimu muitc
muis simples ccm um unicc ccmundc
rcp, du seguinte cimu:
| _- ^l+l1 mu+ [ _-
^l+l.
Du mesmu cimu, puiu escclheimcs
CDs que tenhum u puiticipuuc dc
rtisto1 e dc rtisto2, nuc e necessu-
iic mcntui um ij ccm c ccnectci o. O
egiep tumhem iesclve issc puiu ncs.
Ve}u ccmc:
| -_- ^l+l1[^l+l.
mu+
Ou (nesse cusc especicc) c picpiic
giep pcdeiiu ncs quehiui c gulhc:
|_- ^l+l{1. mu+
Nc egiep ucimu, ci usudu umu
expiessuc iegului, nu quul u huiiu vei-
ticul (]) tiuhulhu ccmc um cu lcgicc e
cs puinteses suc usudcs puiu limitui
u umplitude deste cu. 1u nc giep du
linhu seguinte, u puluviu rtisto deve
sei seguidu pci um dcs vulcies du listu
cimudu pelcs cclchetes (j]), istc e, 1 cu 2.
- Tu legul, eu uceitc c uigumentc, c ij
dc shell e muitc muis pcdeicsc que
cs cutics cuietus - mus, cu entie ncs,
essu ccnstiuuc de ij tcst ... e muitc
esquisitu, e pcucc legivel.
- , vcc tem iuzuc, eu tumhem nuc
gcstc dissc e uchc que ninguem gcstu.
Achc que ci pci issc que c shell
inccipcicu cutiu sintuxe, que suhsti-
tui c ccmundc test.
Puiu issc vumcs pegui uquele exem-
plc puiu uzei umu ticcu de diietciics,
que eiu ussim:
+f l-l ! o !mL
lr-r
mo+ !mL
!
o !mL
e utilizundc u ncvu sintuxe, vumcs uz-
lc ussim:
+f { ! o !mL
lr-r
mo+ !mL
!
o !mL
Ou se}u, c ccmundc test pcde sei
suhstituidc pci um pui de cclchetes (j]),
sepuiudcs pci espucs em hiuncc dcs
uigumentcs, c que uumentuiu encime-
mente u legihilidude, pcis c ccmundc i
iiu cui ccm u sintuxe semelhunte u dus
cutius linguugens, pci issc, esse seiu c
mcdc ccmc c ccmundc test seiu usudc
duqui puiu u iente.
Se vcc pensu que ucuhcu, estu muitc
engunudc. Pieste utenuc u Tuhelu Vei-
dude nu Tuhelu 5.
Ou se}u, quundc c ccnectci e c e u
piimeiiu ccndiuc e veidudeiiu, c iesul-
tudc nul pcde sei veidudeiic cu ulsc,
dependendc du segundu ccndiuc, }u nc
ccnectci o0, cusc u piimeiiu ccndiuc
se}u veidudeiiu, c iesultudc sempie seiu
veidudeiic. Se u piimeiiu ci ulsu, c iesul-
tudc dependeiu du segundu ccndiuc.
Oiu, cs cuius que desenvclveium c
inteipietudci nuc suc hchcs e estuc
sempie tentundc ctimizui uc muximc
cs ulgciitmcs. Pcituntc, nc cusc dc
ccnectci c, u segundu ccndiuc nuc seiu
uvuliudu, cusc u piimeiiu se}u ulsu, }u
que c iesultudc seiu sempie ulsc. 1u
ccm c o0, u segundu seiu executudu
scmente cusc u piimeiiu se}u ulsu.
Apicveitundc-se dissc, umu cimu
uhieviudu de uzei testes ci ciiudu. O
ccnectci c ci hutizudc de && e c o0 de
]]. Puiu vei ccmc issc uncicnu, vumcs
usu-lcs ccmc teste nc ncssc velhc
exemplc de ticcu de diietciic, que em
suu ultimu veisuc estuvu ussim:
+f { ! o !mL
lr-r
mo+ !mL
!
o !mL
O ccdigc ucimu tumhem pcdeiiu sei
esciitc de muneiiu uhieviudu:
{ ! o !mL mo+ !mL
o o+
Tumhem pcdemcs ietiiui u neguuc (!):
{ o !mL [[ mo+ !mL
o o+
Combinao DU
vLkDADLlkO-vLkDADLlkO 1kUL 1kUL
vLkDADLlkO-lALSO lALSL 1kUL
lALSO-vLkDADLlkO lALSL 1kUL
lALSO-lALSO lALSL lALSL
1abeIa y - 1abeIa Verdade
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
Papo de 8oIequim
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
edie oq www.linuxmagazine.com.br
Nc piimeiic cusc, se c piimeiic
ccmundc (c tcst, que estu iepiesen-
tudc pelcs cclchetes) ci hem sucedidc,
istc e, se c diietciic lmh nuc existii, c
ccmundc mkJir seiu executudc pcique
u piimeiiu ccndiuc eiu veidudeiiu e c
ccnectci eiu c.
Nc exemplc seguinte, testumcs se c
diietciic lmh existiu (nc unteiici testu-
mcs se ele nuc existiu) e, cusc issc csse
veidude, c mkJir nuc seiiu executudc
pcique c ccnectci eiu o0. Outiu cimu
de escievei c picgiumu:
o !mL [[ mo+ !mL
Nesse cusc, se c ccmundc cd csse
mul sucedidc, c diietciic lmh seiiu
ciiudc mus nuc seiiu eitu u mudunu de
diietciic puiu dentic dele. Puiu execu-
tui muis de um ccmundc dessu cimu,
e necessuiic uzei um giupumentc de
ccmundcs, c que se ccnsegue ccm c
usc de chuves (). Ve}u ccmc seiiu c
mcdc cciietc:
o !mL [[
|
mo+ !mL
o !mL
|
Aindu nuc estu legul pcique, cusc c
diietciic nuc existu, c cJ exihiiu umu
mensugem de eiic. Ve}u c mcdc ceitc:
o !mL . o-.ru!! [[
|
mo+ !mL
o !mL
|
Ccmc vcc viu, c ccmundc ij ncs pei-
mitiu uzei um cJ seguic de diveisus
muneiius. sempie hcm lemhiui que c
seguic u que me ieic diz iespeitc uc
utc de que uc nul du execuuc vcc
sempie estuiu dentic de lmh, desde que
tenhu peimissuc puiu entiui neste diie-
tciic, peimissuc puiu ciiui um suhdiie-
tciic dentic de ../lmh, que hu}u espuc
em discc suciente...
Ve}umcs um exemplc diduticc: depen-
dendc dc vulci du vuiiuvel $opc c sciipt
deveiu executui umu dus cpes u
seguii: inclusuc, exclusuc, ulteiuuc cu
enceiiui suu execuuc. Ve}u ccmc cu-
iiu c ccdigc:
+f { |0 -q 1
lr-r
+r!u0
-!+f { |0 -q .
lr-r
-X!u0
-!+f { |0 -q
lr-r
!l-0
-!+f { |0 -q 4
lr-r
-X+l
-!-
-r0 U+_+l- um 00 -rl-
1 - 4
!
Caractere 5ignicado
' Qualquer caracIere ocorrendo zero ou
mais vezes
? Qualquer caracIere ocorrendo uma vez
|...j LisIa de caracIeres
| "ou" lgico
1abeIa 6
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
edie oq www.linuxmagazine.com.br
Papo de 8oIequim
Neste exemplc vcc viu c usc dc
ccmundc clij ccmc um suhstitutc cu
cimu muis cuitu de clsc ij. Essu e umu
sintuxe vulidu e uceitu, mus pcdeiiumcs
uzei uindu melhci. Puiu issc usumcs c
ccmundc cosc, cu}u sintuxe mcstiumcs
u seguii:
- |. +r
o01 mo1
mo.
mor ::
o0. mo1
mo.
mor ::
o0r mo1
mo.
mor ::
-
Onde u vuiiuvel $vor e ccmpuiudu ucs
pudies poJroo1, ..., poJroon. Cusc um
dcs pudies cciiespcndu u vuiiuvel, c
hlccc de ccmundcs cmJ1, ..., cmJn cci-
iespcndente e executudc ute enccntiui
um duplc pcntc-e-viigulu (,,), quundc
c uxc dc picgiumu seiu inteiicmpidc
e desviudc puiu instiuuc imediutu-
mente upcs c ccmundc csoc (que, cusc
nuc tenhum nctudc, e cosc uc ccntiuiic.
Ele indicu c m dc hlccc de ccdigc, du
mesmu cimu que ct ccmundc j indicu
c m de um ij ).
Nu cimuuc dcs pudies, suc uceitcs
cs cuiucteies mcstiudcs nu Tuhelu 6.
Puiu mcstiui ccmc c ccdigc icu
melhci, vumcs iepetii c exemplc unte-
iici, sc que destu vez usuiemcs c cosc
em vez dc tiudicicnul hlccc de ccdigc
ccm ij ... clij ... clsc ... j.
- |0 +r
1 +r!u0 ::
. -X!u0 ::
!l-0 ::
4 -X+l ::
-r0 U+_+l- um 00
-rl- 1 - 4
-
Ccmc vcc deve tei peicehidc, eu
usei c usteiiscc ccmc ultimu cpuc, istc
e, se c usteiiscc utende u quulquei ccisu,
entuc seiviiu puiu quulquei ccisu que
nuc este}u nc inteivulc de 1 u 4. Outiu
ccisu u sei nctudu e que c duplc pcntc-e-
viigulu nuc e necessuiic untes dc csoc.
Vumcs ugciu uzei um sciipt muis
iudicul. Ele te duiu hcm diu, hcu tuide
cu hcu ncite dependendc du hciu em
que ci executudc, mus piimeiiumente
ve}u estes ccmundcs:
| ol-
|u- H0. 1:/: h'| .4
| ol- h
1
O ccmundc Jotc incimu u dutu ccm-
pletu dc sistemu e tem diveisus cpes
de muscuiumentc dc iesultudc. Neste
ccmundc, u cimutuuc ccmeu ccm
um sinul de muis () e cs cuiucteies de
cimutuuc vm upcs um sinul de pei-
centugem (%), ussim c %H signicu u
hciu dc sistemu. Ditc issc, ve}u c exem-
plc nc Quudic 1.
Peguei pesudc, ne' Que nudu, vumcs
esmiuui u iescluuc:
o! [ : [o:] - Zeic seguidc de quulquei
ccisu (.), cu (]) um seguidc de zeic
cu um (j01]), cu se}u, estu linhu 'cusu'
ccm 01, 02, ... 09, 10 c 11,
: [z-] - Signicu um seguidc du listu
de cuiucteies entie dcis e sete, cu se}u,
estu linhu pegu 12, 13, ... 17,
* - Signicu tudc c que nuc cuscu ccm
nenhum dcs pudies unteiicies.
- Cuiu, ute ugciu eu ulei muitc e hehi
pcucc. Agciu eu vcu te pussui um
exeicicic puiu vcc uzei em cusu e
me dui u iespcstu du picximu vez em
que ncs enccntiuimcs uqui nc hcte-
quim, tu legul'
- Belezu!
- c seguinte: uu um picgiumu que
iecehu ccmc puiumetic c ncme de
um uiquivc e que quundc executudc
sulve esse uiquivc ccm c ncme ciigi-
nul seguidc de um til () e uhiu esse
uiquivc dentic dc vi puiu sei editudc.
lssc e puiu tei sempie umu ccpiu
de huckup dc uiquivc cusc ulguem
uu ulteiues indevidus. Ohviu-
mente, vcc uiu us ciiticus neces-
suiius, ccmc veiicui se ci pussudc
um puiumetic, se c uiquivc indicudc
existe... Enm, c que te dei nu telhu e
vcc uchui que devu ccnstui dc sciipt.
Deu piu entendei'
- Hum, hum...
- Chicc, tiuz muis um, sem ccluiinhc!
Iulic Cezcr Neves e
Anclistc Je 5upcrte
Je 5istemcs JesJe
e trcbclhc rcm
Unix JesJe 8o,
qucnJc pcrtiripcu
Jc Jesenvclvimentc
Jc 5OX, um sistemc
cpercricncl similcr cc Unix prc-
JuziJc pelc Ccbrc rcmputcJcres.
PcJe ser rcntctcJc nc e-mcil |ulio.
nevesgmail.com

}!L+rLr
} 0_m L-m -ouo0 qu-
} o L0mo+. L0lo- 0u
} L0r0+l- 0rf0m- r0
h0|ol- h
- |h0 +r
. [ 1{1 -r0 h0m U+
::
1{./ -r0 h0 |o-
::
-r0 h0 H0+l-
::
-
-X+l
Quadro - 5cript
bem-educado
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
Papo de 8oIequim
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
edie oy www.linuxmagazine.com.br
f
ulu cuiu! E us ideius estuc em
cidem' 1u undiu u cucu cu vcc
uindu ugentu muis Shell'
- Centc! T gcstundc muitc! Ccstei
tuntc que ute cupiichei nc exeicicic
que vcc pusscu. Lemhiu que vcc
me pediu puiu uzei um picgiumu
que iecehe ccmc puiumetic c ncme
de um uiquivc e que quundc execu-
tudc sulvu esse uiquivc ccm c ncme
ciiginul seguidc de um til () e c
uhie dentic dc vi'
- Cluic que lemhic, me mcstie e expli-
que ccmc vcc ez.
- Belezu, du umu clhudu nc quudic 1
- , helezu! Mus me diz umu ccisu: pci
que vcc teimincu c picgiumu ccm
um cxit 0'
- Eu descchii que c numeic upcs c
exit indicu c ccdigc de ietcinc dc
picgiumu (c $., lemhiu') e ussim,
ccmc u execuuc ci hem sucedidu,
ele enceiiu ccm c $.-0. Pciem, se
vcc chseivui, veiu que cusc c pic-
giumu nuc tenhu iecehidc c ncme dc
uiquivc cu cusc c cpeiudci nuc tenhu
peimissuc de giuvuuc nesse uiquivc,
c ccdigc de ietcinc ($.) seiiu die-
iente dc zeic.
- Ciunde guictc, upiendeu legul, mus e
hcm deixui cluic que cxit 0, simples-
mente cxit cu nuc cclccui cxit picdu-
zem iguulmente um ccdigc de ietcinc
($.) iguul u zeic. Agciu vumcs ului
schie us instiues de lccp cu luc,
mus untes vcu pussui c ccnceitc de
hlccc de ccdigc.
Ate ugciu }u vimcs ulguns hlcccs de
ccdigc, ccmc quundc te mcstiei um
exemplc puiu uzei um cJ puiu dentic
de um diietciic:
o !mL . o-.ru!! [[
|
mo+ !mL
o !mL
|
O iugmentc ccntidc entie us duus
chuves () cimu um hlccc de ccdigc.
Tumhem nesse exeicicic que ucuhumcs
de vei, em que sulvumcs c uiquivc untes
de editu-lc, existem vuiics hlcccs de
ccdigc ccmpieendidcs entie cs ccmun-
dcs thcn e j dc ij. Um hlccc de ccdigc
tumhem pcde estui dentic de um cuse
cu entie um Jo e um Jonc.
- Peiui, 1ulic, que dc e dcne suc esses'
Nuc me lemhic de vcc tei uludc
nissc, e clhu que estcu piestundc
muitu utenuc...
- Pcis e, uindu nuc tinhu uludc pcique
nuc huviu chegudc u hciu ceitu.
Tcdus us instiues de lccp cu luc
executum cs ccmundcs dc hlccc ccm-
pieendidcs entie um Jo e um Jonc. As
instiues de lccp cu luc suc jor, uhilc
e 0ntil , que seiuc explicudus umu u
umu u puitii de hc}e.
D comando
Se vcc estu huhituudc u picgiumui,
ceitumente }u ccnhece c ccmundc jor,
mus c que vcc nuc suhe e que c jor,
8locos de cdigo e laos (ou lccps, como preIerem alguns)
so o Iema do ms em mais uma lio de nosso curso de Shell
ScripI. Garom, salIa uma boa redondinha, que I a hm de
reIrescar o pensamenIoI PDk IULID CZAk NV5
Curso de 5heII 5cript
Pape de
8etequim V
| l .+.r
}!L+rLr
}
} .+ .+ -_uoro0
} qu+.0 rl-+0
} !-+! - !_um m-l0 f0+
} o0
+f { |} r- 1
lr-r
-r0 !0 U0: |
qu+.0
-X+l 1
!
^q|1
} 0 0 qu+.0 r0 -X+l. r0
} r 0+ - !.
+f { ! f |^q
lr-r
.+ |^q
-X+l
!
} '- -u r0 uo- !l- 0
}qu+.0. .0u u 0 .+ qu-.
+f { ! w |^q
lr-r
-r0 !0- r0 l-m -m+0
o- -+l -m |^q
-X+l .
!
} J qu- -l luo0 l. .0u
} !. 0+ - rm 0 .+
f |^q |^q~
.+ |^q
-X+l
Quadro : vira.sh
D
a
v
e

H
a
m
i
I
t
o
n

-

w
w
w
.
s
x
c
.
h
u
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
edie oy www.linuxmagazine.com.br
Papo de 8oIequim
que e umu instiuuc intiinsecu dc Shell
(issc signicu que c ccdigc cnte dc
ccmundc uz puite dc ccdigc cnte dc
Shell, cu se}u, em hcm picgiums e um
h0iltin), e muitc muis pcdeicsc que cs
seus cciielutcs dus cutius linguugens.
Vumcs entendei u suu sintuxe, pii-
meiic em pcitugus e, depcis, ccmc
uncicnu piu vulei. Olhe sc:
. -m .!1 .!. ... .!r
f
mo1
mo.
mor
f-+l0
Onde u vuiiuvel vor ussume cudu um
dcs vulcies du listu vol1 vol2 ... voln e,
puiu cudu um desses vulcies, executu c
hlccc de ccmundcs cimudc pci cmJ1,
cmJ2 e cmJn. Agciu que }u vimcs c
signicudc du instiuuc em pcitugus,
ve}umcs u sintuxe cciietu:
f0 . +r .!1 .!. ... .!r
o0
mo1
mo.
mor
o0r-
Vumcs ucs exemplcs, puiu entendei
diieitc c uncicnumentc deste ccmundc.
Vumcs escievei um sciipt puiu listui
tcdcs cs uiquivcs dc diietciic, sepuiu-
dcs pci dcis-pcntcs, mus untes ve}u issc:
| -r0
^qU0U'.lXl1 0rfu0 +ruu
!0_o0 mu-X mu+ mu+r
mu!+l
lstc e, c Shell viu c usteiiscc ('),
expundiu-c ccm c ncme de tcdcs cs
uiquivcs dc diietciic e c ccmundc ccho
}cgcu-cs puiu u telu sepuiudcs pci espu-
cs em hiuncc. Vistc issc, vumcs iescl-
vei c pichlemu u que ncs picpusemcs:
| l l-l-f01
}!L+rLr
} 10. 0_m o+ol+0
} -rl-ro- 0 f0
f0 ^q +r
o0
-r0 r |^q:
o0r-
Entuc vumcs executu-lc:
| l-l-f01
^qU0U'.lXl1:0rfu0:+ruu:
!0_o0:mu-X:mu+:mu+r:
mu!+l:|
Ccmc vcc viu, c Shell tiunscimcu
c usteiiscc (que cdeiu sei chumudc
de ostcristico) em umu listu de uiqui-
vcs sepuiudcs pci espucs em hiuncc.
Quundc c jor viu uquelu listu, disse:
Opu, listus sepuiudus pci espucs e
ccmigc mesmc!
O hlccc de ccmundcs u sei executudc
eiu scmente c ccho, que ccm u cpuc n
listcu u vuiiuvel $rq seguidu de dcis-
pcntcs (.), sem sultui u linhu. O ciiuc
($) dc nul du linhu du execuuc e c
picmpt, que peimuneceu nu mesmu
linhu tumhem em unuc du cpuc n.
Outic exemplc simples (pci enquuntc):
| l l-l-f0.
}!L+rLr
} .0. 0_m o+ol+0
} -rl-ro- 0 f0
f0 !. +r !+ruX |_z+r-
o0 h+!
o0
-r0 |!.
o0r-
E executundc temcs:
| l-l-f0.
!+ruX
|_z+r-
o0
h+!
Ccmc vcc viu, esse exemplc e
tuc hchc e simples ccmc c unteiici,
mus seive puiu mcstiui c ccmpcitu-
mentc husicc dc jor. Ve}u sc u ciu dc
ccmundc: uindu estumcs nu piimeiiu
pcssihilidude de sintuxe e }u estcu mcs-
tiundc ncvus cimus de usu-lc. Lu utius
eu huviu uludc que c jor usuvu listus
sepuiudus pci espucs em hiuncc, mus
issc e umu meiu-veidude, sc puiu ucili-
tui u ccmpieensuc. Nu veidude, us listus
nuc suc chiigutciiumente sepuiudus pci
espucs. Mus untes de picsseguii, pie-
cisc te mcstiui ccmc se ccmpcitu umu
vuiiuvel dc sistemu chumudu de lFS, cu
Intcr IiclJ Scporotor Ve}u nc exemplc u
seguii seu ccnteudc:
| -r0 |1!' [ 0o r
.
4
lstc e, mundei u vuiiuvel (pictegidu
du inteipietuuc dc Shell pelus uspus)
puiu um dump hexudecimul (oJ h). O
iesultudc pcde sei inteipietudc ccm u
tuhelu uhuixc:
O ultimc 0o ci picveniente dc
ENTER: dudc uc nul dc ccmundc.
Puiu melhciui u explicuuc, vumcs vei
issc de cutiu cimu:
| -r0 :|1!': [ l .-l
: ^1|
:|
Nc ccmundc cot, u cpuc c iepie-
sentu c ENTER: ccmc um ciiuc ($)
e u cpuc t iepiesentu c TAB: ccmc
um ^I. Usei cs dcis-pcntcs (.) puiu mcs-
tiui c inicic e c m dc echc. E dessu
cimu, pudemcs nctui que cs tis cuiuc-
teies estuc piesentes nuquelu vuiiuvel.
Agciu ve}u vcc: tiuduzindc, lFS sig-
nicu scporoJor cntrc compos. Umu vez
entendidc issc, eu pcssc uimui que c
ccmundc jor nuc usu upenus listus sepu-
iudus pci espucs em hiuncc, mus sim
pelc ccnteudc du vuiiuvel $IIS, cu}c
vulci pudiuc suc cs cuiucteies que ucu-
humcs de vei. Puiu ccmpicvuimcs issc,
vumcs ccntinuui mexendc em ncssu
CDTecu, escievendc um sciipt que
iecehe c ncme dc uitistu ccmc puiume-
tic e listu us musicus que ele tccu. Mus
piimeiiumente vumcs vei ccmc estu c
ncssc uiquivc musicus:
| l mu+
!Lum 1^^l+l1~|u+1:
^l+l.~|u+.
!Lum .^^l+l~|u+:
^l+l4~|u+4
!Lum ^^l+l'~|u+':
^l+lh~|u+h
!Lum 4^^l+l/~|u+/:
^l+l1~|u+
VaIor HexadecimaI 5ignicado
og 1A8:
zo LSPAO:
oa LN1Lk:
1abeIa : kesuItado do
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
Papo de 8oIequim
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
edie oy www.linuxmagazine.com.br
!Lum '^^l+l~|u+:
^l+l1~|u+1
Em cimu desse leiuute desenvclve-
mcs c sciipt u seguii:
| l !+ll+l
}!L+rLr
} Uo0 um l+l. m0l
} u mu+
+f { |} r- 1
lr-r
-r0 !0- o-.-+ l-
o0 um m-l0
-X+l 1
!
1!'
:
f0 ^l|u +r |ul f. o^
mu+
o0
-r0 |^l|u [ _- |1
-r0 |^l|u [ ul f. o~
o0r-
O sciipt, ccmc sempie, ccmeu tes-
tundc se cs puiumetics cium pussudcs
cciietumente, em seguidu c lFS ci ccn-
guiudc puiu LNTLR e dcis-pcntcs (.)
(ccmc demcnstium us uspus em linhus
dieientes), pcique e ele quem sepuiu cs
hlcccs rtistonM0sicom. Destu cimu,
u vuiiuvel $rtM0s iiu iecehei cudu um
desses hlcccs dc uiquivc (iepuie que c
jor }u iecehe cs iegistics sem c ulhum
em viitude dc c0t nu suu linhu). Cusc
enccntie c puiumetic ($1) nc hlccc, c
segundc c0t listuiu scmente c ncme du
musicu. Vumcs executui c picgiumu:
| !+ll+l ^l+l1
^l+l1~|u+1
|u+1
^l+l1~|u+
|u+
^l+l1~|u+1
|u+1
pu! Accnteceium duus ccisus inde-
se}uveis: cs hlcccs tumhem cium listu-
dcs, e u Musicu1u idem. Alem dc muis,
c ncssc uiquivc de musicus estu muitc
simples: nu vidu ieul, tuntc u musicu
quuntc c uitistu tm muis de um ncme.
Supcnhu que c uitistu csse umu duplu
seitune}u chumudu Peieiecu & Petelecu
(nuc gcstc nem de dui u ideiu ccm ieceic
que issc se tcine ieulidude). Nesse cusc,
c $1 seiiu Peieiecu e c iestc desse lindc
ncme seiiu ignciudc nu pesquisu.
Puiu que issc nuc ccciiu, eu deveiiu
pussui c ncme dc uitistu entie uspus
() cu ticcui $1 pci $* (que iepiesentu
tcdcs cs puiumetics pussudcs), que e
u melhci scluuc, mus nesse cusc eu
teiiu que mcdicui u ciiticu dcs puiu-
metics e c giep. A ncvu veisuc nuc
seiiu se eu pussei um puiumetic, mus
sim se pussei pelc mencs um puiu-
metic. Quuntc uc giep, ve}u sc c que
uccnteceiiu upcs u suhstituiuc dc $*
pelcs puiumetics:
-r0 |^l|u [ _- ---
-l-!-
lssc geiu um eiic. O cciietc e:
-r0 |^l|u [ _- +
--- -l-!-
Aqui udicicnumcs u cpuc i puiu
que u pesquisu ignciusse muiusculus e
minusculus. As uspus cium inseiidus
puiu que c ncme dc uitistu csse vistc
ccmc umu sc cudeiu de cuiucteies.
Fultu ccnseitui c eiic dele tei listudc c
Aitistu1u. O melhci e dizei uc giep que u
cudeiu de cuiucteies estu nc inicic (^) de
$rtM0s e que lcgc upcs vem um til ().
piecisc iediiecicnui u suidu dc giep puiu /
Jcv/n0ll puiu que cs hlcccs nuc se}um lis-
tudcs. Ve}u u ncvu cuiu dc picgiumu:
| l !+ll+l
}!L+rLr
} Uo0 um l+l. m0l
} u mu+
} !-0 .
+f { |} -q
lr-r
-r0 !0- o-.-+ l-
o0 -!0 m-r0 um m-l0
-X+l 1
!
1!'
:
f0 ^l|u +r |ul f. o^
mu+
o0
-r0 |^l|u [ _- +
^|~ o-.ru!! -r0
|^l|u [ ul f. o~
o0r-
O iesultudc e:
| !+ll+l ^l+l1
|u+1
|u+
Ve}u umu segundu sintuxe puiu c ci:
f0 .
o0
mo1
mo.
mor
o0r-
Ue, sem c in, ccmc ele vui suhei que
vulci ussumii' Pcis e, ne' Estu ccnstiu-
uc, u piimeiiu vistu, puiece esquisitu,
mus e hustunte simples. Neste cusc, vor
ussumiiu um u um cudu puiumetic pus-
sudc puiu c picgiumu. Ccmc exemplc
puiu entendei melhci, vumcs uzei um
sciipt que iecehu ccmc puiumetic um
mcnte de musicus e liste seus uutcies:
| l !+lmu+
}!L+rLr
} --L- l- o0 r0m- o-
} mu+ 0m0 m-l0 -
} !+l 0 +rl--l-. '- 0
} r0m- f0 0m0l0. o-.-
} - o0 -rl- .
} -X. !u r0 0u r00 r0
} ruqu+rr0 o- |-
}
+f { |} -q
lr-r
-r0 U0: | mu+1
{mu+. ... {mu+r
-X+l 1
!
1!'
:
f0 |u+
o0
-r0 ||u+
'l|_- + ||u+
mu+ [[
|
-r0 H0
-r0rlo
0rl+ru-
|
f0 ^l|u +r |-r0 |'l
[ ul f. o^
o0
-r0 |^l|u [
_- + ||u+ [ ul f1 o~
o0r-
o0r-
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
edie oy www.linuxmagazine.com.br
Papo de 8oIequim
Du mesmu cimu que cs cutics, ccme-
umcs c exeicicic ccm umu ciiticu schie
cs puiumetics iecehidcs, em seguidu
izemcs um jor em que u vuiiuvel
$M0sico ieceheiu cudu um dcs puiume-
tics pussudcs, cclccundc em $Str tcdcs
cs ulhuns que ccntm us musicus dese-
}udus. Em seguidu, c cutic ci pegu cudu
hlccc rtistoM0sico ncs iegistics que
estuc em $Str e listu cudu uitistu que
tccu uquelu musicu. Vumcs executui c
picgiumu puiu vei se uncicnu mesmc:
| !+lmu+ mu+ |u+4
!_u+rr 00l0
mu+
^l+l
^l+l1
|u+4
^l+l4
!_u+rr 00l0
H0 -r0rlo
A listugem ccu einhu pcique uindu
nuc suhemcs cimutui u suidu, mus
quulquei diu desses, quundc vcc scu-
hei pcsicicnui c cuisci, tiuhulhui ccm
ccies etc., uiemcs esse picgiumu ncvu-
mente usundc tcdus essus peiumuiius.
A estu ultuiu dcs uccntecimentcs,
vcc deve estui se peiguntundc: E
uquele jor tiudicicnul dus cutius linguu-
gens em que ele sui ccntundc u puitii
de um numeic, ccm um deteiminudc
inciementc, ute ulcunui umu ccndi-
uc'. E e ui que eu te iespcndc: Eu
nuc te disse que c ncssc ci e muis pci-
ietu que c dcs cutics' Puiu uzei issc,
existem duus cimus. Ccm u piimeiiu
sintuxe que vimcs, ccmc nc exemplc:
f0 + +r |-q
o0
-r0 r |+
o0r-
1 . 4 ' h / o
A vuiiuvel i ussumiu cs vulcies intei-
ics entie 1 u 9 geiudcs pelc ccmundc
scq e u cpuc n dc ccho ci usudu puiu
nuc sultui umu linhu u cudu numeic lis-
tudc. Aindu usundc c jor ccm scq:
f0 + +r |-q 4
o0
-r0 r |+
o0r-
4 ' h / o
Ou nu cimu muis ccmpletu dc scq:
f0 + +r |-q
o0
-r0 r |+
o0r-
h
A cutiu cimu de uzei issc e ccm
umu sintuxe muitc semelhunte uc jor du
linguugem C, ccmc vemcs u seguii:
f0 .+r+: 0ro: +r
o0
mo1
mo.
mor
o0r-
Onde vor-ini signicu que u vuiiu-
vel vor ccmeuiu de um vulci iniciul
ini, conJ signicu que c lccp cu luc jor
seiu executudc enquuntc vor nuc utingii
u ccndiuc conJ e incr signicu c incie-
mentc que u vuiiuvel vor scieiu u cudu
pussudu dc lccp. Vumcs ucs exemplcs:
f0 +1: +: +
o0
-r0 r |+
o0r-
1 . 4 ' h / o
A vuiiuvel i puitiu dc vulci iniciul 1, c
hlccc de ccdigc (uqui scmente c ccho)
seiu executudc enquuntc i ci menci cu
iguul (-) u 9 e c inciementc de i seiu
de 1 u cudu pussudu dc lccp.
Repuie que nc jor picpiiumente ditc
(e nuc nc hlccc de ccdigc) nuc cclcquei
um ciiuc ($) untes dc i e u nctuuc
puiu inciementui (i) e dieiente dc
que vimcs ute ugciu. O usc de puinte-
ses duplcs (ussim ccmc c ccmundc lct)
chumu c inteipietudci uiitmeticc dc
Shell, que e muis tcleiunte.
Sc puiu mcstiui ccmc c lct uncicnu
e u veisutilidude dc jor, vumcs uzei u
mesmu ccisu, mus cmitindc u ultimu
puite dc esccpc dc jor, pussundc-u puiu
c hlccc de ccdigc:
f0 : +:
o0
!-l +
-r0 r |+
o0r-
1 . 4 ' h / o
Repuie que c inciementc suiu dc
ccipc dc jor e pusscu puiu c hlccc de
ccdigc, iepuie tumhem que, quundc
usei c lct, nuc ci necessuiic iniciuli-
zui u vuiiuvel $i. Ve}u sc cs ccmundcs u
seguii, digitudcs diietumente nc picmpt,
puiu demcnstiui c que ucuhc de ului:
| -r0 |
| !-l
| -r0 |
1
Ou se}u, u vuiiuvel $j sequei existiu e
nc piimeiic lct ussumiu c vulci u (zeic)
puiu, upcs c inciementc, tei c vulci 1.
Ve}u sc ccmc us ccisus cum simples:
f0 q +r
o0
!-l +
-r0 |+ |^q
o0r-
1 ^qU0U'.lXl1
. 0rfu0
+ruu
4 !+lmu+
' !+ll+l
h !0_o0
/ mu-X
o mu+
mu+r
1 mu!+l
11 l-l-f01
1. l-l-f0.
- Pcis e umigc, tenhc ceitezu que vcc
}u tcmcu um xuicpe dc ccmundc
jor. Pci hc}e chegu, nu picximu vez
em que ncs enccntiuimcs uluiemcs
schie cutius instiues de lccp, mus
eu gcstuiiu que ute lu vcc zesse um
pequenc sciipt puiu ccntui u quunti-
dude de puluvius de um uiquivc textc,
cu}c ncme seiiu iecehidc ccmc puiu-
metic. Essu ccntugem que sei
eitu ccm c ccmundc jor, puiu se huhi-
tuui uc seu usc. Nuc vule usui c uc u.
A Chicc! Tiuz u suideiiu!
Iulic Cezcr Neves e Anclistc Je
5upcrte Je 5istemcs JesJe e trc-
bclhc rcm Unix JesJe 8o, qucnJc
pcrtiripcu Jc Jesenvclvimentc Jc
5OX, um sistemc cpercricncl similcr
cc Unix prcJuziJc pelc Ccbrc Ccm-
putcJcres. PcJe ser rcntctcJc nc
e-mcil |ulio.nevesgmail.com

LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
edie o6 www.linuxmagazine.com.br
Papo de 8oIequim
f
ulu, cuiu! E ui, }u tu suhendc tudc
dc ccmundc jor' Eu te deixei um
exeicicic puiu tieinui, se nuc me
engunc eiu puiu ccntui u quuntidude de
puluvius de um uiquivc... Vcc ez'
- Cluic! T empclguduc ccm essu lin-
guugem! Eu z du cimu que vcc
pediu, clhu sc...
- pu! Peiui que eu t sequinhc piu
tcmui um chcpe. A Chicc, tiuz dcis
pci uvci. Um sem ccluiinhc!
- Ccmc eu iu dizendc, clhu ccmc eu z.
muitc ucil...
| l 0rl!.r
}!L+rLr
} '+l m-m-rl- -o_0_+0
} u fur0 - 0rl
} qurl+oo- o- !. o-
} um qu+.0. 'u0-- qu-
} !. -l0 -o
} -rl- + 0 -0. |^h
} 0u !H|!.
+f { |} r- 1
lr-r
-r0 u0: | m+rr0o0
qu+.0
-X+l .
!
0rl
f0 !. +r |l |1
o0
0rl|0rl1
o0r-
-r0 qu+.0 |1 l-m |0rl
!..
Ou se}u, c picgiumu ccmeu, ccmc
sempie, veiicundc se u pussugem de
puiumetics ci cciietu, em seguidu c
ccmundc jor se incumhe de pegui cudu
umu dus puluvius (lemhie-se que c $IIS
pudiuc e hiuncc, TB e LNTLR, que e
exutumente c que dese}umcs puiu sepu-
iui us puluvius), inciementundc u vuii-
uvel $Cont. Vumcs ielemhiui ccmc e c
uiquivc rqDoDOS.txt.
| l ^qU0U'.lXl
!l- qu+.0
f0+ _-o0 -!0
U'w+r - f0+
L+Xo0 0 um
fl m! f-+l0.
Agciu vumcs testui c picgiumu pus-
sundc esse uiquivc ccmc puiumetic:
| 0rl!.r ^qU0U'.lXl
qu+.0 ^qU0U'.lXl l-m 14
!..
Funcicncu legul!
Se vcc se lemhiu,
em ncssu ultimu
uulu mcstiumcs c
lccp jor u seguii:
f0 : +:
o0
!-l +
-r0 r "|+ "
o0r-
Umu vez que chegumcs neste pcntc,
cieic sei inteiessunte citui que c Shell
tiuhulhu ccm c ccnceitc de Expunsuc
Aiitmeticu (rithmctic Lxponsion),
que e ucicnudu pci umu ccnstiuuc du
cimu $((cxprcssdo)) cu lct cxprcssdo.
Nc ultimc lccp jor usei u expunsuc
uiitmeticu dus duus cimus, mus nuc
pcdemcs seguii udiunte sem suhei que
u expiessuc pcde sei umu dus listudus
nu tuhelu 1.
Mus vcc pensu que c pupc de lccp
(cu luc) se enceiiu nc ccmundc jor'
Ledc engunc, umigc, vumcs u puitii de
ugciu vei muis dcis ccmundcs.
D comando while
Tcdcs cs picgiumudcies ccnhecem este
ccmundc, pcique e ccmum u tcdus us
linguugens. Nelus, c que ncimulmente
ccciie e que um hlccc de ccmundcs e
executudc, enquuntc (enquuntc, em
ingls, e vhile) umu deteiminudu
ccndiuc ci veidudeiiu.
D
a
v
e

H
a
m
i
I
t
o
n

-

w
w
w
.
s
x
c
.
h
u
xpresso kesuItado
iJ++ iJ-- ps-incremenIo e ps-decremenIo de variaveis
++iJ --iJ pr-incremenIo e pr-decremenIo de variaveis
'' exponenciao
' / mulIiplicao, diviso, resIo da diviso (mdulo)
+ - adio, subIrao
= := : comparao
== != igualdade, desigualdade
&& L lgico
|| OU lgico
1abeIa : xpresses no 5heII
8locos de cdigo e laos (ou lccps, como preIerem alguns)
so o Iema do ms em mais uma lio de nosso curso de Shell
ScripI. Garom, salIa uma boa redondinha, que I a hm de
reIrescar o pensamenIoI PDk IULID CZAk NV5
Curso de 5heII 5cript
Pape de
8etequim Vl
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
Papo de 8oIequim
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
edie o6 www.linuxmagazine.com.br
Pcis hem, issc e c que uccntece nus
linguugens cuietus! Em picgiumuuc
Shell, c hlccc de ccmundcs e executudc
enquuntc um ccmundc ci veidudeiic.
E e cluic, se quisei testui umu ccndi-
uc, use c ccmundc uhilc }untc ccm c
ccmundc tcst, exutumente ccmc vcc
upiendeu u uzei nc ij, lemhiu' Entuc u
sintuxe dc ccmundc cu ussim:
wr+!- 0mro0
o0
mo1
mo.
...
mor
o0r-
e dessu cimu, c hlccc cimudc pelus
instiues cmJ1, cmJ2,... e cmJn e exe-
cutudc enquuntc u execuuc du instiu-
uc comonJo ci hem sucedidu.
Supcnhu u seguinte cenu: tinhu
umu tiemendu gutu me espeiundc e
eu estuvu piesc nc tiuhulhc sem pcdei
suii pcique c meu chee, que e um pe
nc succ (ulius chee-chutc e umu iedun-
dunciu, ne'), uindu estuvu nu sulu dele,
que cu hem nu minhu pussugem puiu u
iuu. Ele ccmecu u cui cuhieiic depcis
du quintu vez que pussei pelu suu pcitu
e clhei puiu vei se }u huviu idc emhciu.
Entuc vcltei puiu u minhu mesu e z, nc
seividci, um sciipt ussim:
| l !0_ul-.r
}!L+rLr
} !-0 qu- `uX r0 l-rr
} 0,+_rl o- X-f- - Xl0 :
wr+!- wr0 [ _- X-f-
o0
!--
o0r-
-r0 Xl0 - mro0u. r0
r-+l-. o- -X+l - . !ul
Neste sciiptzinhc, c ccmundc uhilc
testu c pipeline ccmpcstc pelcs ccmun-
dcs uho e rcp, que seiu veidudeiic
enquuntc c rcp lcculizui u puluviu
xcjc nu suidu dc ccmundc uho. Destu
cimu, c sciipt dcimiiu pci 3u segundcs
enquuntc c chee estivei lcgudc (Aigh!).
Assim que ele se desccnectui dc seivi-
dci, c uxc dc sciipt suiiu dc lccp e te
mcstiuiu u tuc unsiudu mensugem de
liheidude. Mus quundc executei c sciipt,
udivinhu c que uccnteceu'
| !0_ul-.r
X-f- l Jr 4 o:4h
1...4.144
X-f- l Jr 4 o:4h
1...4.144
...
X-f- l Jr 4 o:4h
1...4.144
lstc e, u cudu 3u segundcs u suidu dc
ccmundc giep seiiu enviudu puiu u telu,
c que nuc e legul, }u que pcluiiiu u telu
dc meu micic e u mensugem tuc espe-
iudu pcdeiiu pussui despeicehidu. Puiu
evitui issc, }u suhemcs que u suidu dc
pipeline tem que sei iediiecicnudu puiu
c dispcsitivc /Jcv/n0ll.
| l !0_ul-.r
}!L+rLr
} !-0 qu- `uX r0 l-rr
} 0,+_rl o- X-f- - Xl0 :
wr+!- wr0 [ _- X-f- o-.ru!!
o0
!--
o0r-
-r0 Xl0 - mro0u. r0
r-+l-. o- -X+l - . !ul
Agciu queic mcntui um sciipt que
iecehu c ncme (e eventuuis puiume-
tics) de um picgiumu que seiu execu-
tudc em huckgicund e que me incime
dc seu teiminc. Mus, puiu vcc enten-
dei este exemplc, piimeiic tenhc de
mcstiui umu ncvu vuiiuvel dc sistemu.
Ve}u estes ccmundcs executudcs diietu-
mente nc picmpt:
| !-- 1
{1 1h1/
| -r0 |!
1h1/
{1 U0r- !-- 1
| -r0 |!
1h1/
lstc e, ciiei um piccessc em huck-
gicund que dcime pci 1u segundcs,
scmente puiu mcstiui que u vuiiuvel $!
guuidu c PlD (Iroccss ID) dc ultimc pic-
cessc em huckgicund. Mus chseive u
listugem e iepuie, upcs u linhu dc Donc,
que u vuiiuvel ieteve c vulci mesmc
upcs c teiminc desse piccessc.
Bem, suhendc issc, }u cu muis ucil
mcnitciui quulquei piccessc em huck-
gicund. Ve}u sc ccmc:
|l m0rL_.r
}!L+rLr
} !X-ul - m0r+l0 um
} 0-0 -m L_0uro
|1 } 0!0 -m L_0uo
wr+!- [ _- q |!
o0
!-- '
o0r-
-r0 !+m o0 0-0 |1
Esse sciipt e hustunte similui uc unte-
iici, mus tem uns mucetes u muis, ve}u
sc: ele tem que sei executudc em huck-
gicund puiu nuc piendei c picmpt mus
c $! seiu c dc picgiumu pussudc ccmc
puiumetic, }u que ele ci cclccudc em
huckgicund upcs c monh.sh picpiiu-
mente ditc. Repuie tumhem nu cpuc q
(quiet) dc giep, que seive puiu uz-lc
tiuhulhui em silncic. O mesmc iesul-
tudc pcdeiiu sei chtidc ccm u linhu:
uhilc ps ] rcp $! /Jcv/n0ll, ccmc ncs
exemplcs que vimcs ute ugciu.
Vumcs melhciui c ncssc velhc
m0sinc, ncssc picgiumu puiu incluii
iegistics nc uiquivc m0sicos, mus
untes piecisc te ensinui u pegui
um dudc du telu, e }u vcu uvisundc:
sc vcu dui umu pequenu dicu dc
ccmundc ieud (que e quem pegu c
dudc du telu), que se}u c suciente
puiu iesclvei este ncssc pichlemu.
Em umu cutiu icdudu de chcpe vcu
te ensinui tudc schie c ussuntc,
inclusive ccmc cimutui telu, mus
hc}e estumcs ulundc schie lccps. A
sintuxe dc ccmundc ieud que ncs
inteiessu pci hc}e e u seguinte:
| -o "0ml o- !-+lu" .
Onde picmpt de leituiu e c textc
que vcc quei que upuieu esciitc nu
telu. Quundc c cpeiudci teclui tul dudc,
ele seiu uimuzenudc nu vuiiuvel vor.
Pci exemplc:
| -o "|lu!0 o0 ^!Lum: " |+l
Bem, umu vez entendidc issc, vumcs
u especiicuuc dc ncssc pichlemu:
uiemcs um picgiumu que iniciulmente
leiu c ncme dc ulhum e em seguidu uiu
um lccp de leituiu, pegundc c ncme du
musicu e c uitistu. Esse lccp teiminu
quundc ci incimudu umu musicu ccm
ncme vuzic, istc e, quundc c cpeiudci
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
edie o6 www.linuxmagazine.com.br
Papo de 8oIequim
dei um simples ENTER:. Puiu ucili-
tui u vidu dc cpeiudci, vumcs ceiecei
ccmc deuult c mesmc ncme dc uitistu
du musicu unteiici (}u que e ncimul que
c ulhum se}u tcdc dc mesmc uitistu) ute
que ele dese}e ulteiu-lc. Ve}u nu listugem
1 ccmc ccu c picgiumu.
Ncssc exemplc ccmeu ccm u lei-
tuiu dc titulc dc ulhum. Cusc ele nuc
se}u incimudc, teiminumcs u execu-
uc dc picgiumu. Em seguidu um rcp
piccuiu, nc inicic (^) de cudu iegistic
de musicus, c titulc incimudc seguidc
dc sepuiudci (^) (que estu piecedidc de
umu ccntiuhuiiu |] puiu picteg-lc du
inteipietuuc dc Shell).
Puiu lei cs ncmes dcs uitistus e us
musicus dc ulhum, ci mcntudc um lccp
uhilc simples, cu}c unicc destuque e c
utc de ele uimuzenui c ncme dc intei-
piete du musicu unteiici nu vuiiuvel
$ort, que sc teiu c seu ccnteudc ulte-
iudc quundc ulgum dudc ci incimudc
puiu u vuiiuvel $rt, istc e, quundc nuc
ci tecludc um simples LNTLR puiu
muntei c uitistu unteiici.
O que ci vistc ute ugciu schie c uhilc
ci muitc pcucc. Esse ccmundc e muitc
utilizudc, piincipulmente puiu leituiu
de uiquivcs, pciem uindu ncs ultu
hugugem puiu picsseguii. Depcis que
upiendeimcs muis schie issc, veiemcs
essu instiuuc muis u undc.
D comando until
Este ccmundc uncicnu de cimu
idnticu uc uhilc, pciem uc ccntiuiic.
Disse tudc mus nuc disse nudu, ne'
c seguinte: umhcs testum ccmundcs,
umhcs pcssuem u mesmu sintuxe e
umhcs utuum em lccp, pciem, c uhilc
executu c hlccc de instiues dc lccp
enquuntc um ccmundc ci hem suce-
didc, }u c until executu c hlccc dc lccp
ute que c ccmundc se}u hem sucedidc.
Puiece pcucu ccisu, mus u dieienu e
undumentul. A sintuxe dc ccmundc e
piuticumente u mesmu dc vhile. Ve}u:
url+! 0mro0
o0
mo1
mo.
...
mor
o0r-
e dessu cimu c hlccc de ccmundcs ci-
mudc pelus instiues cmJ1, cmJ2,... e
cmJn e executudc ute que u execuuc du
instiuuc comonJo se}u hem sucedidu.
Ccmc eu te disse, uhilc e 0ntil uncic-
num de cimu untugnicu, e issc e muitc
ucil de demcnstiui: em umu gueiiu,
sempie que se inventu umu uimu, c
inimigc huscu umu scluuc puiu neu-
tiulizu-lu. Fci huseudc nesse piincipic
heliccsc que meu chee desenvclveu, nc
mesmc seividci em que eu executuvu c
loo0tc.sh, um sciipt puiu ccnticlui c
meu hciuiic de chegudu.
Um diu tivemcs um pichlemu nu iede.
Ele me pediu puiu dui umu clhudu nc
micic dele e me deixcu sczinhc nu sulu.
Resclvi hishilhctui cs uiquivcs - gueiiu
e gueiiu - e ve}u sc c que descchii:
|l r-_o.r
}!L+rLr
url+! wr0 [ _- u!+0
o0
!--
o0r-
-r0 |ol- " !m om
h:|r" -!0.!0_
Olhu que suudc! O cuiu estuvu mcn-
tundc um lcg ccm cs meus hciuiics de
chegudu, e uindu pci cimu chumcu c
uiquivc de rclopso.lo! O que seiu que
ele quis dizei ccm issc'
Nesse sciipt, c pipeline uho ] rcp
j0lio, seiu hem sucedidc scmente
quundc j0lio ci enccntiudc nu suidu
dc ccmundc uho, istc e, quundc eu
me lcgui nc seividci. Ate que issc
uccnteu, c ccmundc slccp, que cimu
c hlccc de instiues dc 0ntil, cclccuiu
c picgiumu em espeiu pci 3u segun-
dcs. Quundc esse lccp enceiiui-se, seiu
enviudu umu mensugem puiu c uiquivc
rclopso.lo. Supcndc que nc diu 2u,u1
eu me lcguei us 11:23 hcius, u mensu-
gem seiiu u seguinte:
| l mu+r.r
}!L+rLr
} ol U .-0 4
}
!-
-o "|lu!0 o0 ^!Lum: " |+l
{ "||+l" [[ -X+l 1 } !+m o -X-u0 - llu!0 .z+0
+f _- "^||+l`^" mu+ o-.ru!!
lr-r
-r0 "!l- !Lum -l olo0"
-X+l 1
!
-_"||+l^"
0rl1
0^l
wr+!- lu-
o0
-r0 "Uo0 o l+!r |0rl:"
-o "|u+: " |u
{ "||u" [[ L- } '+ - .z+0
-o "^l+l: |0^l " ^l
{ "|^l" 0^l"|^l" } '- .z+0 ^l rl-+0
-_"|-_|0^l~||u:" } |0rlro0 -_+l0
0rl|0rl 1
} ^ !+rr rl-+0 lL 0o-+ - 0rl
o0r-
-r0 "|-_" mu+
0l mu+ 0 mu+
Listagem
LeiIura de arquivo signihca ler um a um
Iodos os regisIros, o que sempre uma
operao lenIa. lique aIenIo para no usar
o while quando Ior desnecessario. O Shell
Iem IerramenIas como o sed e a Iamlia
grep, que vasculham arquivos de Iorma
oIimizada sem que se|a necessario o uso do
while para Iaz-lo regisIro a regisIro.
Dica
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
Papo de 8oIequim
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
edie o6 www.linuxmagazine.com.br
!m .1 11:.r
Vcltundc u ncssu CDtecu, quundc
vumcs cudustiui musicus seiiu ideul
que pudessemcs cudustiui diveiscs
CDs de umu vez sc. Nu ultimu veisuc
dc picgiumu issc nuc ccciie: u cudu CD
cudustiudc c picgiumu teiminu. Ve}u nu
listugem 2 ccmc melhciu-lc.
Nestu veisuc, um lccp muici ci udi-
cicnudc untes du leituiu dc titulc, que
sc teiminuiu quundc u vuiiuvel $Ioro
deixui de sei vuziu. Cusc c titulc dc
ulhum nuc se}u incimudc, u vuiiu-
vel $Ioro ieceheiu um vulci (cclcquei
1, mus pcdeiiu tei cclccudc quulquei
ccisu) puiu suii desse lccp, teiminundc
c picgiumu. Nc iestc, c sciipt e idnticc
u veisuc unteiici.
AtaIhos no
Ioop
Nem sempie um
ciclc de picgiumu,
c c m p i e e n d i d c
entie um Jo e um
Jonc, sui pelu pcitu
du iente. Em ulgu-
mus cpcitunidudes,
temcs que cclccui
um ccmundc que
uhcite de cimu
ccnt icl udu esse
lccp. De muneiiu
inveisu, ulgumus
vezes dese}umcs
que c luxc de
execuuc dc picgiumu vclte untes de
chegui uc Jonc. Puiu issc, temcs ies-
pectivumente cs ccmundcs hrcok (que
}u vimcs iupidumente ncs exemplcs dc
ccmundc uhilc) e contin0c, que uncic-
num du cimu mcstiudu nu guiu 1.
O que eu nuc huviu ditc unteiici-
mente e que nus suus sintuxes geneiicus
eles upuiecem du seguinte cimu:
L- {qlo !00
e tumhem:
0rl+ru- {qlo !00
Onde qtJ loop iepiesentu u quunti-
dude dcs lccps muis inteincs schie cs
quuis cs ccmundcs iiuc utuui. Seu vulci
pci Jcjo0lt e 1.
Duvidc que vcc nuncu tenhu upu-
gudc um uiquivc e lcgc upcs deu um
tuhee nu testu se xingundc pcique
nuc deviu t-lc iemcvidc. Pcis e, nu
decimu vez que z estu hesteiiu, ciiei
um sciipt puiu simului umu lixeiiu,
istc e, quundc mundc iemcvei um (cu
vuiics) uiquivc(s), c picgiumu nge
que deletcu, mus nc duic c que ele ez
ci mundu-lc(s) puiu c diietciic ,tmp,
LcginNume_dc_usuuiic. Chumei esse
picgiumu de crrccmc e nc uiquivc /ctc/
projlc cclcquei u seguinte linhu, que
ciiu um upelidc puiu ele:
!+ m---m-
Ve}u c picgiumu nu listugem 3. Ccmc
vcc pcde vei, u muici puite dc sciipt
e cimudu pci pequenus ciiticus ucs
puiumetics incimudcs, mus ccmc c
sciipt pcde tei iecehidc diveiscs uiqui-
vcs u iemcvei, u cudu uiquivc que nuc
se encuixu dentic dc especicudc hu
| l mu+r.r
}!L+rLr
} ol U .-0 '
}

url+! { "|"
o0
!-
-o "|lu!0 o0 ^!Lum: " |+l
+f { ! "||+l" } '- l+lu!0 .z+0...
lr-r
1 } !+_u-+ ! _ o- o
-!-
+f _- "^||+l`^" mu+ o-.ru!!
lr-r
-r0 "!l- !Lum -l olo0"
-X+l 1
!
-_"||+l^"
0rl1
0^l
wr+!- { "||+l"
o0
-r0 Uo0 o l+!r |0rl:
-o "|u+: " |u
{ "||u" [[ L- } '+ - .z+0
-o "^l+l: |0^l " ^l
{ "|^l" 0^l"|^l" } '- .z+0 ^l rl-+0
-_"|-_|0^l~||u:" } |0rlro0 -_+l0
0rl|0rl 1
} ^ !+rr rl-+0 lL 0o-+ - 0rl
o0r-
-r0 "|-_" mu+
0l mu+ 0 mu+
!
o0r-
Listagem z
figura : A estrutura dos comandos breuk e continue, usados para contro-
Iar o uxo de execuo em Ioops.
dc
ccmundcs
ccmundcs
dcne
breuk ccntinue
teste breuk
dc
ccmundcs
ccmundcs
dcne
teste ccntinue
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k LIN0X 05k
edie o6 www.linuxmagazine.com.br
Papo de 8oIequim
um contin0c, puiu que u seqnciu vclte
puiu c lccp dc jor de cimu u iecehei
cutics uiquivcs.
Quundc vcc estu nc Vindcvs (ccm
peiduc du mu puluviu) e tentu iemcvei
uquele mcnte de lixc ccm ncmes esqui-
sitcs ccmc HDu4TC.TMP, se dei eiic
em um dcs uiquivcs cs cutics nuc suc
iemcvidcs, nuc e' Entuc, c contin0c ci
usudc puiu evitui que umu impicpiie-
dude dessus ccciiu, istc e, mesmc que
d eiic nu iemcuc de um uiquivc, c
picgiumu ccntinuuiu iemcvendc cs
cutics que cium pussudcs.
- Eu uchc que u estu ultuiu vcc deve
estui cuiicsc puiu vei c picgiumu
que iestuuiu c uiquivc iemcvidc, nuc
e' Pcis entuc ui vui vui um desuc:
uu-c em cusu e me tiugu puiu dis-
cutiimcs nc ncssc picximc enccntic
uqui nc hctecc.
- Pcxu, mus nesse eu uchc que vcu dun-
ui, pcis nuc sei nem ccmc ccmeui...
- Cuiu, este picgiumu e ccmc tudc
c que se uz em Shell: extiemu-
mente ucil. puiu sei eitc em, nc
muximc, 1u linhus. Nuc se esqueu
de que c uiquivc estu sulvc em /tmp/
$LOCNML e que suu ultimu linhu e
c diietciic em que ele iesidiu untes
de sei iemcvidc. Tumhem nuc se
esqueu de ciiticui se ci pussudc c
ncme dc uiquivc u sei iemcvidc.
- eu vcu tentui, mus sei nuc...
- Tenhu e, iimuc, eu t te ulundc que
e mcle! Quulquei duvidu e sc pussui
um emuil puiu }ulic.nevesQgmuil.
ccm. Agciu chegu de pupc que eu }u
estcu de gcelu secu de tuntc ului. Me
uccmpunhu nc picximc chcpe cu }u
vui suii cciiendc puiu uzei c sciipt
que pussei'
- Deixu eu pensui um pcucc...
- Chicc, tiuz muis um chcpe enquuntc
ele pensu!
| l ---m-.r
}!L+rLr
}
} '!.ro0 0+ o- um qu+.0 rl- o- -m0.-!0
} |-m o- l- um 0u m+ qu+.0 -m0.-
+f { |} -q
lr-r
-r0 "!0 U0: ---m- q {q ... {q"
-r0 " u0 o- m-ll-- -` -m+l+o0. !X.
---m- q"
-X+l 1
!

} !+.-! o0 +l-m qu- 0rl-m 0 r0m- o0 uu+0.
|-uU+"lm|!H^|!"
} '- r0 -X+l+ 0 m-u o+-l0+0 0L 0 lm...
+f { ! o ||-uU+
lr-r
mo+ ||-uU+ } !0u +!0
!

} '- r0 00 _. r0 o+-l0+0...
+f { ! w ||-uU+
lr-r
-r0 "1m0+.-! !. qu+.0 -m ||-uU+.
|uo- -m+0-..."
-X+l .
!

} !+.-! qu- +ro+ 0 0o. o- -l0r0 o0 0_m
!0
} Um f0 -m 0 +r --L- 0 m-l0 o0
f0 ^q
o0
} '- -l- qu+.0 r0 -X+l+...
+f { ! f |^q
lr-r
-r0 "|^q r0 -X+l-."
!0
0rl+ru- } !0!l 0 0mro0 f0
!

} mo. o+rm- +rf0m r0m- o0 o+ o- |^q
U++_o+rm- |^q
} !-+! -m+0 o- _.0 r0 o+-l0+0
+f { ! w |U++_
lr-r
-r0 "'-m -m+0 r0 o+-l0+0 o- |^q"
!04
0rl+ru- } !0!l 0 0mro0 f0
!

} '- -l0u "-.z+ro0 !+X-+"...
+f { "|U++_" "||-uU+"
lr-r
-r0 "|^q ! -m 0+ o- -_ur"
m + |^q } -_url rl- o- -m0.-
} '- qu- 0 uu+0 -m0.-u.
{ f |^q [[ -r0 "|^qu+.0 -m0.+o0"
0rl+ru-
!
} uo0 r0 ! m o0 qu+.0 0 -u o+-l0+0 0+_+r!
u!0 -m um +l o- uro-!-l-
o |U++_
wo |^q
m. |^q ||-uU+ } '!.0 - -m0.0
-r0 "|^q -m0.+o0"
o0r-
} 0 -.-rlu! rum-0 o0 -0 0 0o+_0
} o- -l0r0
-X+l |!0
Listagem j: erreeme.sh
Iulic Cezcr Neves e Anclistc Je
5upcrte Je 5istemcs JesJe e trc-
bclhc rcm Unix JesJe 8o, qucnJc
pcrtiripcu Jc Jesenvclvimentc Jc
5OX, um sistemc cpercricncl similcr
cc Unix prcJuziJc pelc Ccbrc Ccm-
putcJcres. PcJe ser rcntctcJc nc
e-mcil |ulio.nevesgmail.com

D
a
v
e

H
a
m
i
l
t
o
n


w
w
w
.
s
x
c
.
h
u
e cucc aaiarta ter acessc a irfcrma(ac se ela rac uaer ser aresertaaa
ae fcrma atraerte e que facilite a ccmreersac. 0 ccmarac cae ser
usaac cr shell scrits ara csicicrar caracteres e criar tcacs cs tics ae
efeitc ccm c textc mcstraac ra tela. 0ar(cm, sclta uma elaairhal
ror Iuto Crznr Nrvrs
furse 6e he|| cr|pt
ape de 8etequIm
arte Vll
f
umequie, iupuz! Deiieteu cs pen-
sumentcs puiu uzei c sciiptzinhc
que eu te pedi'
- , eu ieulmente tive de cclccui muitu
pensuuc nu telu pietu, mus uchc que
nulmente ccnsegui! Bem, pelc mencs
ncs testes que z u ccisu uncicncu,
mus vcc tem sempie que hctui chiies
em cuheu de cuchciic!
- Nuc e hem ussim. que picgiumui em
Shell Sciipt e muitc ucil, mus c que e
ieulmente impcitunte suc us dicus e
mucetes que nuc suc tiiviuis. As cci-
iees que uc suc }ustumente puiu
mcstiu-lcs. Mus vumcs pedii dcis chc-
pes enquuntc dcu umu clhudelu nc teu
sciipt lu nu ||staem 1. A Chicc, tiuz
dcis chcpes! E nuc se esqueu que um
deles e sem ccluiinhc!
- Peiui, deixu eu vei se entendi c que vcc
ez: vcc cclccu nu vuiiuvel 1 u ultimu
linhu dc uiquivc u sei iestuuiudc, em
ncssc cusc 1lnp110lAl111 (cnde
10lAl e c ncme dc usuuiic lcgudc,
e 11 e c piimeiic puiumetic que vcc
pusscu uc sciipt), }u que ci lu que uimu-
zenumcs c ncme e cuminhc ciiginuis dc
uiquivc untes de mcv-lc puiu c diietciic
(denidc nu vuiiuvel 1). O ccmundc
ep v upugu essu linhu, iestuuiundc
c uiquivc uc estudc ciiginul, e c mundu
de vcltu piu cnde ele veic. A ultimu linhu
c upugu du lixeiiu. Sensucicnul! lmpe-
cuvel! Nenhum eiic! Viu' Vcc }u estu
pegundc us munhus dc shell!
- Entuc vumcs lu, chegu de lescc-lescc
e hlu-hlu-hlu, schie c qu ncs vumcs
ului hc}e'
- , t vendc que c hichinhc dc shell te
pegcu. Vumcs vei ccmc lei dudcs, mus
untes vcu te mcstiui um ccmundc que
te du tcdus us eiiumentus puiu cimutui
umu telu de entiudu de dudcs.
0 comaa4o tpat
O piincipul usc desse ccmundc e c pcsi-
cicnumentc dc cuisci nu telu. Alguns
puiumetics pcdem nuc uncicnui se c
mcdelc de teiminul denidc pelu vuii-
uvel de umhiente 1TRl nuc supcitu-lcs.
A ta|e|a 1 upiesentu upenus cs piincipuis
puiumetics e cs eeitcs iesultuntes, mus
existem muitc muis deles. Puiu suhei tudc
schie c tp0t, ve}u u ieeinciu [I].
Vumcs uzei um picgiumu hem hestu
e ucil puiu ilustiui melhci c usc desse
ccmundc. umu veisuc dc umigeiudc
Al Mundc, sc que dessu vez u iuse
seiu esciitu nc centic du telu e em videc
ieveisc. Depcis dissc, c cuisci vcltuiu puiu
u pcsiuc ciiginul. Ve}u u ||staem z.
Ccmc c picgiumu }u estu tcdc ccmen-
tudc, uchc que u unicu linhu que piecisu de
explicuuc e u S, cnde ciiumcs u vuiiuvel
Lo!una. O estiunhc uli e uquele numeic
9, que nu veidude indicu c tumunhc du
cudeiu de cuiucteies que vcu escievei nu
telu. Dessu cimu, este picgiumu scmente
ccnseguiiiu centiulizui cudeius de 9 cuiuc-
teies, mus ve}u istc:
| .0
| -r0 ||}.|
4
| ."0 o- h0l-qu+m"
| -r0 ||}.|
1h
||stagem 1 - restaura.sh
01 ]!1b1n1basl
0Z ]
03 ] Reslaua aqu1vos de!elados v1a eeene
04 ]
05
06 11 j 1] eq 0
07 llen
0 eclo "Lso: 10 lone do aqu1vo a se eslauado`"
09 ex1l 1
10 11
11 ] Pea none do aqu1vo1d1el1o o11na! na !l1na !1nla
1Z 1~`la1! 1 1lnp110lAl111`
13 ] 0 ep v exc!u1 a !l1na !1nla e ec1a o aqu1vo con o d1el1o
14 ] e none o11na!nenle usados
15 ep v 11 1lnp110lAl111 ` 11111
16 ] Renove o aqu1vo que a eslava no1bundo
17 n 1lnp110lAl111
LNux Usrr

Pnro or sotrqum
WWW.||ruxaaz|re.co.br
ubril zooy edidc o)
Ahhh, melhcicu! Entuc ugciu suhemcs
que u ccnstiuuc 1|]va1ave!| devclve
u quuntidude de cuiucteies du vuiiuvel.
Assim sendc, vumcs ctimizui c ncssc
picgiumu puiu que ele escievu em videc
ieveisc, nc centic du telu (e indepen-
dente dc numeic de cuiucteies) u cudeiu
de cuiucteies pussudu ccmc puiumetic e
depcis ietcine c cuisci u pcsiuc em que
estuvu untes du execuuc dc sciipt. Ve}u
c iesultudc nu ||staem ].
Este sciipt e iguul uc unteiici, sc que
ticcumcs c vulci xc nu vuiiuvel Cclunu
(9) pci 1|]1|, cnde esse 1 e 11, cu se}u,
essu ccnstiuuc devclve c numeic de
cuiucteies dc piimeiic puiumetic pus-
sudc puiu c picgiumu. Se c puiumetic
tivesse espucs em hiuncc, seiiu piecisc
cclccu-lc entie uspus, senuc c 11 levu-
iiu em ccntu scmente c peduc untes
dc piimeiic espuc. Puiu evitui este
uhciiecimentc, e sc suhstituii c 11 pci
1^, que ccmc suhemcs e c ccn}untc de
tcdcs cs puiumetics. Entuc u linhu S
cuiiu ussim:
} -rl!+zro0 m-r_-m r l-!
0!ur|0!ur ||}| .
e u linhu 12 (eclo 11) pussuiiu u sei:
eclo 1^
|ea4o 4a4os 4a te|a
Bem, u puitii de ugciu vumcs upiendei
tudc schie leituiu. Sc nuc pcssc ensinui
u lei cuitus e huzics pcique se scuhesse
estuiiu iicc, num p0h Lcndiinc tcmundc
um scotch e nuc em um hctecc tcmundc
chcpe. Mus vumcs em iente.
Du ultimu vez em que ncs enccntiumcs
eu dei umu pulhinhu schie c ccmundc
ead. Antes de entiuimcs em detulhes,
ve}u sc issc:
| -o .1 .. .
0 o- h0l-qu+m
| -r0 |.1
0
| -r0 |..
o-
| -r0 |.
h0l-qu+m
| -o .1 ..
0 o- h0l-qu+m
| -r0 |.1
0
| -r0 |..
o- h0l-qu+m
Ccmc vcc viu, c rcoJ iecehe umu
listu de puiumetics sepuiudu pci espu-
cs em hiuncc e cclccu cudu item dessu
listu em umu vuiiuvel. Se u quuntidude
de vuiiuveis ci menci que u quuntidude
de itens, u ultimu vuiiuvel iecehe c ies-
tunte deles. Eu disse listu sepuiudu pci
espucs em hiuncc, mus ugciu que vcc
}u ccnhece tudc schie c 11!S (Intcr IiclJ
Scporotor - Sepuiudci entie cumpcs), que
Iahe|a 1: |armetres 6e tput
|armetre |fe|te
cup !1n co! tJ.c Pc.|||cn - |cs|c|cre c cu|sc| re ||r|e ||n e cc|ure :c| A c||er 0,0} fce rc
certc sue||c| esue|ac ae te|e
bo!d Cc|cce e te|e er rcac re||tc
ev Cc|cce e te|e er rcac ae .|aec |e.e|sc
snso |aert|cc ec erte||c|
snu! :u|||r|e cs ce|ecte|es
b!1nk 0e|ze cs ce|ecte|es |scerac
s0 |esteu|e e te|e e seu rcac rc|re|
esel ||re c te|r|re| e |esteu|e sues aefr|(ces ae ecc|ac ccr |em|njc, cu see, c te|
r|re| .c|te ec ccrc|terertc ea|ec aefr|ac e|e .e||e.e| ae er||erte 1TRl
!1nes |rfc|re e uert|aeae ae ||r|es ue ccrcer e te|e
co!s |rfc|re e uert|aeae ae cc|ures ue ccrcer e te|e
e! fc.e l|ne - Aee e ||r|e e e|t|| ae cs|(ec ac cu|sc|
ed fc.e 0|.|cj - Aee e te|e e e|t|| ae cs|(ec ac cu|sc|
1! n /n.e| l|ne. - |rse|e r ||r|es e e|t|| ae cs|(ec ac cu|sc|
d! n 0e|e|e l|ne. - |erc.e r ||r|es e e|t|| ae cs|(ec ac cu|sc|
dcl n 0e|e|e thcc:|e. - Aee r ce|ecte|es e e|t|| ae cs|(ec ac cu|sc|
sc Ic.e to.c c.|||cn - :e|.e e cs|(ec ac cu|sc|
c ke.|ce to.c c.|||cn - Cc|cce c cu|sc| re cs|(ec re|ceae e|c u|t|rc sc
||stagem z: a|e.sh
01 ]!1b1n1basl
0Z ] Sc1pl bobo paa lesla
03 ] o conando lpul 1vesao 1;
04
05 Lo!unas~`lpul co!s` ] Sa!va a quanl1dade de co!unas na le!a
06 1nlas~`lpul !1nes` ] Sa!va a quanl1dade !1nlas na le!a
07 1nla~1111nlas 1 Z;; ] 0ua! a !1nla cenla! da le!a?
0 Lo!una~1111Lo!unas 9; 1 Z;; ] Lenla!1za a nensaen na le!a
09 lpul sc ] Sa!va a pos1o do cuso
10 lpul cup 11nla 1Lo!una ] Pos1c1ona o cuso anles de esceve
11 lpul ev ] \1deo eveso
1Z eclo A! lundo
13 lpul s0 ] Reslaua o v1deo ao nona!
14 lpul c ] Reslaua o cuso a pos1o o11na!
||stagem ]: a|e.sh me|hera6e
01 ]!1b1n1basl
0Z ] Sc1pl bobo paa lesla
03 ] o conando lpul 1veso Z.0;
04
05 Lo!unas~`lpul co!s` ] Sa!va a quanl1dade de co!unas na le!a
06 1nlas~`lpul !1nes` ] Sa!va a quanl1dade de !1nlas na le!a
07 1nla~1111nlas 1 Z;; ] 0ua! a !1nla cenla! da le!a?
0 Lo!una~1111Lo!unas 1|]1|; 1 Z;; ] Lenla!1za a nensaen na le!a
09 lpul sc ] Sa!va a pos1cao do cuso
10 lpul cup 11nla 1Lo!una ] Pos1c1ona o cuso anles de esceve
11 lpul ev ] \1deo eveso
1Z eclo 11
13 lpul s0 ] Reslaua o v1deo ao nona!
14 lpul c ] evo!ve o cuso a pos1o o11na!
LNux Usrr

Pnro or sotrqum
WWW.||ruxaaz|re.co.br
ubril zooy edidc o)
eu te upiesentei quundc uluvumcs dc
ccmundc 1o, seiu que uindu ucieditu
nissc' Vumcs testui:
| 01!'"|1!'"
| 1!':
| -o .1 .. .
0 o- h0l-qu+m
| -r0 |.1
0 o- h0l-qu+m
| -r0 |..
| -r0 |.
| -o .1 .. .
0:o-:h0l-qu+m
| -r0 |.1
0
| -r0 |..
o-
| -r0 |.
h0l-qu+m
| 1!'"|01!'"
Viu' eu estuvu uiudc! O ead l umu
listu, ussim ccmc c 1o, sepuiudu pelcs
cuiucteies du vuiiuvel 11!S. Ve}u ccmc
issc pcde ucilitui u suu vidu:
| _- u!+0 -lwo
u!+0:X:':'44:Ju!+0 . H-.- //:
r0m-u!+0:L+rLr
| 01!'"|1!'" } '!. 0 1!' rl+_0.
| 1!':
| _- u!+0 -lwo [ -o !rm-
!+X0 u+o _+o 0m-rl r0m- r-!!
| -r0 - "|!rm-`r|u+o`r|_+o`r|0m-rl
`r|r0m-`r|r-!!"
u!+0
'
'44
Ju!+0 . H-.- //
r0m-u!+0
L+rLr
| 1!'"|01!'" } -lu 0 1!'
Ccmc vcc viu, u suidu dc ep ci
iediiecicnudu puiu c ccmundc ead,
que leu tcdcs cs cumpcs de umu sc
tucudu. A cpuc e dc eclo ci usudu
puiu que c \n csse entendidc ccmc
umu quehiu de linhu (ncu linc) e nuc
ccmc um liteiul. Sch c Bush exis-
tem diveisus cpes dc ead que sei-
vem puiu ucilitui u suu vidu. Ve}u
u ta|e|a z.
E ugciu diietc ucs exemplcs cuitcs
puiu demcnstiui estus cpes. Puiu lei
um cumpc Mutiiculu:
} r r0 !l !+rr
| -r0 r "|l+u!: ": -o |l
|l+u!: 1.4'
| -r0 ||l
1.4'
Pcdemcs simplicui us ccisus usundc
u cpuc p:
| -o "|l+u!: " |l
|l+u!: 1.4'
| -r0 ||l
1.4'
E pcdemcs lei upenus umu quuntidude
pie-deteiminudu de cuiucteies:
| -o r' "!: " Hum : -o r
0m!
!: 1.4'h/o|
| -r0 |Hum
1.4'
| -r0 |0m!
h/o
Nc exemplc ucimu executumcs duus
vezes c ccmundc ead: um puiu u pii-
meiiu puite dc CEP e cutiu puiu c seu
ccmplementc, deste mcdc cimutundc
u entiudu de dudcs. O ciiuc (1) lcgc
upcs c ultimc ulguiismc digitudc e
necessuiic pcique c ead nuc inclui
pci pudiuc um cuiucteie ncu linc
implicitc, ccmc c echc.
Puiu lei sc duiunte um deteiminudc
limite de tempc (tumhem ccnhecidc
ccmc timc o0t):
| -o l. "U+_+l- -u r0m- 0m!-l0:
" H0m [[ -r0 `!+l m0!-z!`
U+_+l- -u r0m- 0m!-l0: !+l m0!-z!
| -r0 |H0m
O exemplc ucimu ci umu hiincudeiiu,
pcis eu sc tinhu 2 segundcs puiu digitui c
meu ncme ccmpletc e mul tive tempc de
teclui um 1 (uquele ccludc nc Lito), mus
ele seiviu puiu mcstiui duus ccisus:
1| O ccmundc upcs c pui de huiius veiti-
cuis (c o0 or lcgicc, lemhiu-se') seiu
executudc cusc u digituuc nuc tenhu
sidc ccncluidu nc tempc estipuludc,
z| A vuiiuvel lon peimuneceu vuziu. Elu
sc ieceheiu um vulci quundc c
ci tecludc.
| -o '-rr:
'-rr: | -r0 |!!
-_-o0 :
Apicveitei um eiic nc exemplc unte-
iici puiu mcstiui um mucete. Quundc
escievi u piimeiiu linhu, esqueci de cclc-
cui c ncme du vuiiuvel que iiiu iecehei u
senhu e sc nctei issc quundc iu esciev-
lu. Felizmente u vuiiuvel 1RP\ dc Bush
ccntem u ultimu seqnciu de cuiucteies
digitudu - e me upicveitei dissc puiu nuc
peidei u viugem. Teste vcc mesmc c que
ucuhei de uzei.
O exemplc que dei, nu veidude, eiu puiu
mcstiui que u cpuc s impede que c que
estu sendc digitudc se}u mcstiudc nu telu.
Ccmc nc exemplc unteiici, u ultu dc ncu
linc ez ccm que c picmpt de ccmundc
(1) peimunecesse nu mesmu linhu.
Agciu que suhemcs lei du telu, ve}umcs
ccmc se lem cs dudcs dcs uiquivcs.
|ea4o atqa|vos
Ccmc eu }u huviu lhe ditc, e vcc deve se
lemhiui, c wl1!e testu um ccmundc e exe-
cutu um hlccc de instiues enquuntc esse
ccmundc ci hem sucedidc. Oiu, quundc
vcc estu lendc um uiquivc puiu c quul
vcc tem peimissuc de leituiu, c ead sc
seiu mul sucedidc quundc ulcunui c 0!
(LnJ Oj Iilc - Fim dc Aiquivc). Pcituntc,
pcdemcs lei um uiquivc de duus muneiius.
A piimeiiu e iediiecicnundc u entiudu dc
uiquivc puiu c hlccc wl1!e, ussim:
wr+!- -o !+rr
o0
-r0 |!+rr
o0r- qu+.0
Iahe|a z: 0pes 6e rea6
0pae Aae
p ponpl |sc|e.e |crt re te|e ertes ae fete| e |e|tu|e
n nun |e ete nun ce|ecte|es
l se |se|e se seuracs e|e ue e |e|tu|e see ccrc|u|ae
s |ec ez||e re te|e cs ce|ecte|es a||teacs
Pnro or sotrqum
LNux Usrr
WWW.||ruxaaz|re.co.br
ubril zooy edidc o)
A segundu e iediiecicnundc u suidu
de um cal puiu c wl1!e, du seguinte
muneiiu:
l qu+.0 [
wr+!- -o !+rr
o0
-r0 |!+rr
o0r-
Cudu um dcs piccesscs tem suus vun-
tugens e desvuntugens. O piimeiic e muis
iupidc e nuc necessitu de um suhshell
puiu ussisti-lc mus, em ccntiupuitidu, c
iediiecicnumentc cu pcucc visivel em
um hlccc de instiues giunde, c que
pci vezes pie}udicu u visuulizuuc dc
ccdigc. O segundc piccessc tiuz u vun-
tugem de que, ccmc c ncme dc uiquivc
estu untes dc vhile, u visuulizuuc dc
ccdigc e muis ucil. Entietuntc, c Pipe
(|) chumu um suhshell puiu inteipietu-lc,
tcinundc c piccessc muis lentc e pesudc.
Puiu ilustiui c que ci ditc, ve}u cs exem-
plcs u seguii:
| l -o+-.r
}!L+rLr
} -o+-.r
} !X-m!0 o- -o ro0 um qu+.0
} 0 um +-.
U!l+m0".z+0"
} 0 +l | 0 wr+!-
l | [ wr+!- -o !+rr
o0
U!l+m0"|!+rr"
-r0 "|U!l+m0"
o0r-
-r0 "^L0u. U!l+m0:|U!l+m0:"
Vumcs vei c iesultudc de suu execuuc:
| -o+-.r
}!L+rLr
} -o+-.r
} !X-m!0 o- -o ro0 um qu+.0
} 0 um +-.

U!l+m0".z+0"
} 0 +l | 0 wr+!-
l | [
wr+!- -o !+rr
o0
U!l+m0"|!+rr"
-r0 "|U!l+m0"
o0r-
-r0 "^L0u. U!l+m0:|U!l+m0:"
^L0u. U!l+m0:.z+0:
Ccmc vcc viu, c sciipt listu suus pic-
piius linhus ccm um sinul de mencs ()
untes e cutic depcis de cudu umu e, nc
nul, exihe c ccnteudc du vuiiuvel 1L!l1no.
Repuie, nc entuntc, que c ccnteudc dessu
vuiiuvel peimunece vuzic. Ue, seiu que
u vuiiuvel nuc ci utuulizudu' Fci, e issc
pcde sei ccmpicvudc pcique u linhu eclo
"1L!l1no" listu cciietumente us linhus.
Entuc pci que issc uccnteceu'
Ccmc eu disse, c hlccc de instiues
iediiecicnudc pelc pipe (|) e executudc
em um suhshell e, lu, us vuiiuveis suc
utuulizudus. Quundc esse suhshell tei-
minu, us utuulizues dus vuiiuveis vuc
puiu us picundezus dc ineinc }untc ccm
ele. Repuie que vcu uzei umu pequenu
mudunu nc sciipt, pussundc c uiquivc
pci iediiecicnumentc de entiudu (), e
us ccisus pussuiuc u uncicnui nu muis
peieitu cidem:
| l -o+-o.r
}!L+rLr
} -o+-o.r
} !X-m!0 o- -o ro0 0 qu+.0
} 0 um +-.
U!l+m0".z+0"
} 0 +l | 0 wr+!-
wr+!- -o !+rr
o0
U!l+m0"|!+rr"
-r0 "|U!l+m0"
o0r- |
-r0 "^L0u. U!l+m0:|U!l+m0:"
Ve}u ccmc ele icdu peieitumente:
| -o+-o.r
}!L+rLr
} -o+-o.r
} !X-m!0 o- -o ro0 0 qu+.0
} 0 um +-.

U!l+m0".z+0"
wr+!- -o !+rr
o0
U!l+m0"|!+rr"
-r0 "|U!l+m0"
} 0 +l | 0 wr+!-
o0r- |
-r0 "^L0u. U!l+m0:|U!l+m0:"
^L0u. U!l+m0:-r0 "^L0u.
U!l+m0:|U!l+m0:":
Bem, umigcs du Rede Shell, puiu nuli-
zui u uulu schie c ccmundc ead sc ultu
muis um pequenc e impcitunte mucete
que vcu mcstiui ccm um exemplc piuticc.
Supcnhu que vcc queiiu listui um uiquivc
e quei que u cudu dez iegistics essu listugem
puie puiu que c cpeiudci pcssu lei c ccn-
teudc du telu, e que elu sc ccntinue depcis
de c cpeiudci piessicnui quulquei teclu.
Puiu nuc gustui pupel (du Linux Muguzine),
vcu uzei essu listugem nu hciizcntul. Meu
uiquivc (nuneos) tem 3u iegistics ccm
numeics seqenciuis. Ve}u:
| -q rum-0
| l 10_.r
}!L+rLr
} 0_m o- l-l- --.-
} 1 !+rr - !-
} !-0 1
wr+!- -o Hum
o0
!-l 0rl!+r } 0rlro0...
} r r0 !l !+rr
-r0 r "|Hum "
0rl!+r 1 o-.ru!! [[ -o
o0r- rum-0
Nu tentutivu de uzei um picgiumu
geneiicc ciiumcs u vuiiuvel 1Lonl1n (nu
vidu ieul, cs iegistics nuc suc scmente
numeics seqenciuis) e, quundc testumcs
se c iestc du divisuc eiu zeic, mundumcs
u suidu puiu 1dev1nu!!, piu que elu nuc
upuieu nu telu. Mus quundc ui executui
c picgiumu descchii u seguinte zehiu:
| 10_.r
1 . 4 ' h / o 1 1. 1 14 1' 1h 1/
1o 1 . .1 . .4 .' .h ./ .o .
Repuie que ultcu c numeic 11 e u listu-
gem nuc puicu nc ead. Tcdu u entiudu dc
lccp estuvu iediiecicnudu puiu c uiquivc
nuneos e u leituiu ci eitu em cimu desse
uiquivc, peidendc c numeic 11. Vumcs
mcstiui ccmc deveiiu cui c ccdigc puiu
que ele pusse u uncicnui u ccntentc:
| l 10_.r
}!L+rLr
} 0_m o- l-l- --.-
} 1 !+rr - !- !-0 .
wr+!- -o Hum
o0
!-l 0rl!+r } 0rlro0...
} r r0 !l !+rr
-r0 r "|Hum "
0rl!+r 1 o-.ru!! [[ -o
o-.ll,
o0r- rum-0
LNux Usrr

Pnro or sotrqum
WWW.||ruxaaz|re.co.br
ubril zooy edidc o)
Repuie que ugciu u entiudu dc ead ci
iediiecicnudu puiu 1dev1lly, que nudu
muis e senuc c teiminul cciiente, expli-
citundc destu cimu que uquelu leituiu
seiiu eitu dc tecludc e nuc dc uiquivc
nuneos. hcm ieului que issc nuc
uccntece scmente quundc usumcs c iedi-
iecicnumentc de entiudu, se tivessemcs
usudc c iediiecicnumentc viu pipe (|), c
mesmc teiiu ccciiidc. Ve}u ugciu u exe-
cuuc dc sciipt:
| 10_.r
1 . 4 ' h / o 1
11 1. 1 14 1' 1h 1/ 1o 1 .
.1 .. . .4 .' .h ./ .o .
lssc estu quuse hcm, mus uindu ultu
um pcucc puiu cui excelente. Vumcs
melhciui c exemplc puiu que vcc c
iepicduzu e teste (mus, untes de testui,
uumente c numeic de iegistics em nune
os cu ieduzu c tumunhc du telu, puiu
que hu}u quehiu de linhu).
| l 10_.r
}!L+rLr
} 0_m o- l-l- --.-
} 1 !+rr - !-
} !-0
!-
wr+!- -o Hum
o0
} 0rlro0...
0rl!+r
-r0 "|Hum"
0rl!+r lul !+r- [[
|
} !- qu!qu- l--
-o r1 "|-!- ^!_0 " o-.ll,
} !+m l-! 0 !-+lu
!-
|
o0r- rum-0
A mudunu suhstunciul eitu neste exem-
plc e ccm ieluuc u quehiu de puginu, }u
que elu e eitu u cudu quuntidude-de-linhus-
du-telu (lpul !1nes) mencs () tis, istc
e, se u telu tem 25 linhus, c picgiumu
listuiu 22 iegistics e puiuiu puiu leituiu.
Nc ccmundc ead tumhem ci eitu umu
ulteiuuc, inseiidc c puiumetic n1 puiu
lei scmente um cuiucteie quulquei, nuc
necessuiiumente um , e u cpuc
p puiu exihii umu mensugem.
- Bem meu umigc, pci hc}e e sc pcique
uchc que vcc }u estu de succ cheic.
- Num t nuc, pcde ccntinuui.
- Se vcc nuc estivei eu estcu. Mus }u
que vcc estu tuc empclgudc ccm c shell,
vcu te deixui um seivic hustunte sim-
ples puiu vcc melhciui u suu cdtecu:
Mcnte tcdu u telu ccm um unicc eclo
e depcis pcsicicne c cuisci u iente de
cudu cumpc puiu iecehei c vulci que
seiu digitudc pelc cpeiudci.
Nuc se esqueum que, em cusc de
quulquei duvidu cu ultu de ccmpunhiu
puiu um chcpe e sc mundui um e-muil
puiu ju||o.reves@a||.co. Vcu upicveitui
tumhem puiu uzei umu picpugundu:
digum ucs umigcs que quem estivei u
m de uzei um cuisc pciietu de pic-
giumuuc em shell deve mundui um e-
muil puiu ju||o.reves@tecroba||.co.br puiu
incimui-se. Ate muis!
INrormnrs
[I] |o|ro ohc|o| 1o !ut. bttp://WWW.cs.utab.edu/
dept/o|d/tex|rfo/tput/tput.bt|SLC4
[2] |o|ro ohc|o| 1o bos|. bttp://WWW.ru.or/
softWare/basb/basb.bt|
Pnro or sotrqum
LNux Usrr
WWW.||ruxaaz|re.co.br
ubril zooy edidc o)
Checu a hcra ae fater ccmc lacl e aiviair cs rcramas
em eaacirhcs. Ccm fur(ces e chamaaas exterras
cs scrits 6cam mercres, a maruter(ac mais facil
e airaa cr cima rearcveitamcs ccaic.
ror Ito Crznr Nrvrs
-
|
u, cuiu, tudc hem'
- Tudc helezu! Eu queiiu te mcstiui c que z mus }u sei
que vcc vui queiei mclhui c hicc piimeiic, ne'
- Sc piu te ccntiuiiui, hc}e nuc queic. Vui, mcstiu lcgc ui
c que vcc ez.
- Pcxu, c exeicicic que vcc pusscu e muitc giunde. Du umu
clhudu nu ||staem 1 e v ccmc eu iesclvi:
- , c picgiumu tu legul, tu tcdc estiutuiudinhc, mus gcstu-
iiu de uzei ulguns pcuccs ccmentuiics: sc puiu ielemhiui,
us seguintes ccnstiues: j ! 1A!bun e j 1lus1ca
|| iepiesentum u mesmu ccisu, istc e: nc cusc du piimeiiu,
testumcs se u vuiiuvel 1A!bun nuc (!) tem nudu dentic, entuc
(). Nu segundu, testumcs se 1lus1ca tem ulgum dudc,
senuc (||).
Se vcc ieclumcu dc tumunhc dc picgiumu, e pcique uindu
nuc te dei ulgumus dicus. Repuie que u muici puite dc sciipt
e puiu mcstiui mensugens centiulizu-
dus nu penultimu linhu du telu. Repuie
uindu que ulgumus mensugens pedem
um S cu um l ccmc iespcstu e cutius
suc sc de udveitnciu. lssc e um cusc
tipicc que pede c usc de unes, que
seiium esciitus scmente umu vez e
executudus em diveiscs pcntcs dc
sciipt. Vcu mcntui duus unes puiu
iesclvei esses cuscs e vumcs incci-
pciu-lus uc seu picgiumu puiu vei c
iesultudc nul.
- Chicc! Agciu tiuz dcis chcpes, um
sem ccluiinhc, puiu me dui inspiiu-
uc. E vcc, de clhc nu ||staem z.
Ccmc pcdemcs vei, umu unuc e
denidu quundc digitumcs noneda
1uno 1; e tcdc c seu ccipc estu
entie chuves (||). 1u ccnveisumcs uqui
nc hctecc schie pussugem de puiu-
metics e us unes cs iecehem du
mesmu cimu, istc e, suc puiumetics
pcsicicnuis (11, 1Z, ., 1n). Tcdus us iegius que se uplicum
u pussugem de puiumetics puiu picgiumus tumhem vulem puiu
unes, mus e muitc impcitunte ieului que cs puiumetics
pussudcs puiu um picgiumu nuc se ccnundem ccm uqueles
que suc pussudcs puiu suus unes. lssc signicu, pci exem-
plc, que c 11 de um sciipt e dieiente dc 11 de umu de suus
unes inteinus.
Repuie que us vuiiuveis 1ls, 1Tanls e 1Lo! suc de usc
iestiitc dessu ictinu e, pci issc, cium ciiudus ccmc vuiiuveis
lccuis. A iuzuc e simplesmente u eccncmiu de memciiu, }u que
uc suii du ictinu elus seiuc devidumente detcnudus, ccisu que
nuc uccnteceiiu se eu nuc tivesse usudc esse uitiicic.
A linhu de ccdigc que ciiu u vuiiuvel lccul ls ccncutenu uc
textc iecehidc (11) um puintese, u iespcstu pudiuc (1Z) em
cuixu ultu, umu huiiu, u cutiu iespcstu (13) em cuixu huixu
e nulizu echundc c puintese. Usc essu ccnvenuc puiu, uc
furse 6e he|| cr|pt
ape de 8etequIm
arte Vlll
||stagem 1: mus|ar.s|
01 1 cal nus1nc5.sl
0Z ]!1b1n1basl
03 ] Ladasla Ls 1vesao 5;
04 ]
05 c!ea
06 1nlales~111`lpul !1nes` 3;; ] 1nla onde seo nosladas as nss paa o opeado
07 TolLo!s~11lpul co!s; ] 0ld co!unas da le!a paa enquada nss
0 eclo "
1nc!uso de ls1cas
~~~~~~~~ ~~ ~~~~~~~
T1lu!o do A!bun:
| sle canpo 1o1
!a1xa: c1ado sonenle paa
| o1enla o peencl1nenlo
lone da ls1ca:
1nlpele:" ] Te!a nonlada con un n1co eclo
09 wl1!e lue
10 do
11 lpul cup 5 3, lpul e! ] Pos1c1ona e !1npa !1nla

D
a
v
e

H
a
m
i
l
t
o
n


w
w
w
.
s
x
c
.
h
u
LNux Usrr

Pnro or sotrqum
WWW.||ruxaaz|re.co.br
muic zooy edidc o8
mesmc tempc, mcstiui us cpes dis-
pcniveis e ieului u iespcstu ceiecidu
ccmc pudiuc.
Quuse nc m du ictinu, u iespcstu
iecehidu (1Sl) e ccnveitidu puiu cuixu
huixu (minusculus) de cimu que nc
ccipc dc picgiumu nuc piecisemcs
uzei esse teste. Ve}u nu ||staem ]
ccmc cuiiu u unuc puiu exihii umu
mensugem nu telu.
Essu e umu cutiu cimu de denii
umu unuc: nuc u chumumcs, ccmc
nc exemplc unteiici, usundc umu
ccnstiuuc ccm u sintuxe noneda
1uno 1;, mus sim ccmc 1uncl1on
noneda1uno. Em nudu muis elu
dieie du unteiici, excetc que, ccmc
ccnstu dcs ccmentuiics, usumcs u
vuiiuvel 1^ que, ccmc }u suhemcs,
iepiesentu c ccn}untc de tcdcs cs
puiumetics pussudcs uc sciipt, puiu
que c picgiumudci nuc piecise usui
uspus envclvendc u mensugem que
dese}u pussui u unuc.
Puiu teiminui ccm esse hlu-hlu-hlu,
vumcs vei nu ||staem us ulteiues
nc picgiumu quundc usumcs c ccn-
ceitc de unes:
Repuie que u estiutuiu dc sciipt
segue u cidem Voriovcis Clohois, I0n
ocs e Corpo Jo Iroromo. Estu estiutu-
iuuc se deve uc utc de Shell Sciipt sei
umu linguugem inteipietudu, em que
c picgiumu e lidc du esqueidu puiu
u diieitu e de cimu puiu huixc. Puiu
sei vistu pelc sciipt e suus unes,
umu vuiiuvel deve sei decluiudu (cu
iniciulizudu, ccmc pieeiem ulguns)
untes de quulquei cutiu ccisu. Pci suu
vez, us unes devem sei decluiudus
untes dc ccipc dc picgiumu picpiiu-
mente ditc. A explicuuc e simples: c
inteipietudci de ccmundcs dc shell
deve suhei dc que se tiutu u unuc
untes que elu se}u chumudu nc pic-
giumu piincipul.
Umu ccisu hucunu nu ciiuuc de un-
es e uz-lus tuc geneiicus quuntc
pcssivel, de cimu que pcssum sei
ieutilizudus em cutics sciipts e upli-
cutivcs sem u necessidude de ieinven-
tuimcs u icdu. As duus unes que
ucuhumcs de vei suc hcns exemplcs,
pcis e diicil um sciipt de entiudu de
dudcs que nuc use umu ictinu ccmc
u landals cu que nuc inteiu}u ccm
c cpeiudci pci meic de ulgc seme-
lhunte u Peunla.
1Z ead A!bun
13 j ! "1A!bun" ] 0peado deu lTR`
14 |
15 ls~"esea Ten1na? 1S1n;"
16 Tanls~1|]ls|
17 Lo!~1111TolLo!s Tanls; 1 Z;; ] Lenla!1za ns na !1nla
1 lpul cup 11nlales 1Lo!
19 eclo "1ls"
Z0 lpul cup 11nlales 111Lo! + Tanls + 1;;
Z1 ead n1 Sl
ZZ lpul cup 11nlales 1Lo!, lpul e! ] Apaa ns da le!a
Z3 j 1Sl ~ "l" o 1Sl ~ "n" conl1nue ] 1Sl 1ua! a l ou 1o; n?
Z4 c!ea, ex1l ] !1n da execuo
Z5 |
Z6 ep "^1A!bun\^" nus1cas ` 1dev1nu!!
Z7 |
Z ls~"sle a!bun a esla cadaslado"
Z9 Tanls~1|]ls|
30 Lo!~1111TolLo!s Tanls; 1 Z;; ] Lenla!1za ns na !1nla
31 lpul cup 11nlales 1Lo!
3Z eclo "1ls"
33 ead n1
34 lpul cup 11nlales 1Lo!, lpul e! ] Apaa ns da le!a
35 conl1nue ] \o!la paa !e oulo a!bun
36 |
37 Re~"1A!bun^" ] 1Re ecebea os dados paa avao
3 oAl1sla~ ] \a1ave! que uada al1sla anle1o
39 wl1!e lue
40 do
41 11!a1xa++;;
4Z lpul cup 7 3
43 eclo 1!a1xa
44 lpul cup 9 3 ] Pos1c1ona paa !e ns1ca
45 ead lus1ca
46 j "1lus1ca" || ] Se o opeado l1ve dado lTR`...
47 |
4 ls~"!1n de A!bun? 1S1n;"
49 Tanls~1|]ls|
50 Lo!~1111TolLo!s Tanls; 1 Z;; ] Lenla!1za ns na !1nla
51 lpul cup 11nlales 1Lo!
5Z eclo "1ls"
53 lpul cup 11nlales 111Lo! + Tanls + 1;
54 ead n1 Sl
55 lpul cup 11nlales 1Lo!, lpul e! ] Apaa ns da le!a
56 j "1Sl" ~ l o "1Sl" ~ n conl1nue ] 1Sl 1ua! a l ou 1o; n?
57 beak ] Sa1 do !oop paa ava
5 |
59 lpul cup 11 3 ] Pos1c1ona paa !e Al1sla
60 j "1oAl1sla" eclo n "11oAl1sla; " ] Al1sla anle1o de1au!l
61 ead Al1sla
6Z j "1Al1sla" oAl1sla~"1Al1sla"
63 Re~"1Re1oAl1sla~1lus1ca:" ] lonlando e1slo
64 lpul cup 9 3, lpul e! ] Apaa ls1ca da le!a
65 lpul cup 11 3, lpul e! ] Apaa Al1sla da le!a
66 done
67 eclo "1Re" `` nus1cas ] ava e1slo no 11n do aqu1vo
3 sol nus1cas 0 nus1cas ] L!ass111ca o aqu1vo
69 done
rnro or sotrqum
LNux Usrr
WWW.||ruxaaz|re.co.br
muic zooy edidc o8
Ccnselhc de umigc: ciie um uiquivc e unexe u ele cudu un-
uc ncvu que vcc ciiui. Ac nul de ulgum tempc vcc teiu
umu helu hihlictecu de unes que lhe pcupuiu muitc tempc
de picgiumuuc.
0 comaa4o soatce
Ve}u se vcc nctu ulgc de dieiente nu suidu dc ls u seguii:
| ! ! .Lr0f+!-
w 1 Ju!+0 urr0wr 4'11 | 1o 1/:4' .Lr0f+!-
Nuc clhe u iespcstu nuc, vclte u piestui utenuc! Bem, }u que
vcc estu mesmc sem succ de pensui e pieeie lei u iespcstu,
vcu te dui umu dicu: uchc que vcc }u suhe que c .baslpo
11!e e um dcs sciipts que suc uutcmuticumente executudcs
quundc vcc se lcgu (ARRCCHH! Odeic
esse teimc!) nc sistemu. Agciu clhe ncvu-
mente puiu u suidu dc ccmundc ls e me
digu c que hu de dieiente nelu.
Ccmc eu disse, c .baslpo11!e e exe-
cutudc duiunte c loon, mus iepuie que ele
nuc tem nenhumu peimissuc de execuuc.
lssc uccntece pcique se vcc c executusse
ccmc quulquei cutic sciipt cuietu, nc m
de suu execuuc tcdc c umhiente pci ele
geiudc mciieiiu }untc ccm c shell sch c
quul ele ci executudc (vcc se lemhiu de
que tcdcs cs sciipts suc executudcs em
s0hshclls, ne'). Pcis e puiu ccisus ussim
que existe c ccmundc so0rcc, tumhem
ccnhecidc pci . (pcntc). Este ccmundc
uz ccm que c sciipt que lhe ci pussudc
ccmc puiumetic nuc se}u executudc em
um s0hshcll. Mus e melhci um exemplc
que umu explicuuc em 453 puluvius. Ve}u
c sciiptzinhc u seguii:
| l +lL0L0
o ..
!
Ele simplesmente deveiiu ii puiu c diie-
tciic ucimu dc diietciic utuul. Vumcs
executui uns ccmundcs envclvendc c
sc1plbobo e unulisui cs iesultudcs:
| wo
r0m-r-.-
| +lL0L0
r-.- u!+r u! +!.+-
| wo
r0m-r-.-
Se eu mundei ele suhii um diietciic,
pci que nuc suhiu' Opu, peiui que suhiu
sim! O suh-shell que ci ciiudc puiu exe-
cutui c sciipt tuntc suhiu que listcu cs
diietciics dcs quutic usuuiics uhuixc dc
diietciic 1lone. Sc que ussim que u execuuc dc sciipt teimi-
ncu, c suh-shell ci puiu c heleleu e, ccm ele, tcdc c umhiente
ciiudc. Agciu pieste utenuc nc exemplc uhuixc e ve}u ccmc u
ccisu mudu de guiu:
| 0u- +lL0L0
r-.- u!+r u! +!.+-
| wo
r0m-
| o
r0m-r-.-
| . +lL0L0
r-.- u!+r u! +!.+-
| wo
r0m-
||stagem z: |unae |ctquata
01 Peunla 1;
0Z |
03 ] A 1uno ecebe 3 panelos na seu1nle oden:
04 ] 11 lensaen a se noslada na le!a
05 ] 1Z \a!o a se ace1lo con esposla pado
06 ] 13 0 oulo va!o ace1lo
07 ] Supondo que 11~Ace1la?, 1Z~s e 13~n, a !1nla a
0 ] seu1 co!oca1a en ls o va!o "Ace1la? 1S1n;"
09 !oca! ls~"11 1`eclo 1Z | l az AZ`1`eclo 13 | l AZ az`;"
10 !oca! Tanls~1|]ls|
11 !oca! Lo!~1111TolLo!s Tanls; 1 Z;; ] Lenla ns na !1nla
1Z lpul cup 11nlales 1Lo!
13 eclo "1ls"
14 lpul cup 11nlales 111Lo! + Tanls + 1;;
15 ead n1 Sl
16 j ! 1Sl Sl~1Z ] Se vaz1a co!oca de1au!l en Sl
17 eclo 1Sl | l AZ az ] A sa1da de Sl sea en n1nscu!a
1 lpul cup 11nlales 1Lo!, lpul e! ] Apaa ns da le!a
19 elun ] Sa1 da 1uno
Z0 |
||stagem ]: |unae /aaJa/sq
01 1uncl1on landals
0Z |
03 ] A 1uno ecebe sonenle un panelo
04 ] con a nensaen que se desea ex1b1.
05 ] paa no ob1a o poanado a passa
06 ] a ns enle aspas, usaenos 1^ 1lodos
07 ] os panelos, !enba?; e no 11.
0 !oca! ls~"1^"
09 !oca! Tanls~1|]ls|
10 !oca! Lo!~1111TolLo!s Tanls; 1 Z;; ] Lenla ns na !1nla
11 lpul cup 11nlales 1Lo!
1Z eclo "1ls"
13 ead n1
14 lpul cup 11nlales 1Lo!, lpul e! ] Apaa ns da le!a
15 elun ] Sa1 da 1uno
16 |
LNux Usrr

Pnro or sotrqum
WWW.||ruxaaz|re.co.br
muic zooy edidc o8
||stagem |: mus|ar5.s|
01 1 cal nus1nc6
0Z ]!1b1n1basl
03 ] Ladasla Ls 1vesao 6;
04 ]
05 ] Aea de va1ave1s !oba1s
06 ] 1nla onde as nensaens seo ex1b1das
07 1nlales~111`lpul !1nes` 3;;
0 ] 0uanl1dade de co!unas na le!a 1paa enquada as nensaens;
09 TolLo!s~11lpul co!s;
10 ] Aea de 1unes
11 Peunla 1;
1Z |
13 ] A 1uno ecebe 3 panelos na seu1nle oden:
14 ] 11 lensaen a se dada na le!a
15 ] 1Z \a!o a se ace1lo con esposla de1au!l
16 ] 13 0 oulo va!o ace1lo
17 ] Supondo que 11~Ace1la?, 1Z~s e 13~n, a !1nla
1 ] aba1xo co!oca1a en ls o va!o "Ace1la? 1S1n;"
19 !oca! ls~"11 1`eclo 1Z | l az AZ`1`eclo 13 | l AZ az`;"
Z0 !oca! Tanls~1|]ls|
Z1 ] Lenla!1za a nensaen na !1nla
ZZ !oca! Lo!~1111TolLo!s Tanls; 1 Z;;
Z3 lpul cup 11nlales 1Lo!
Z4 eclo "1ls"
Z5 lpul cup 11nlales 111Lo! + Tanls + 1;;
Z6 ead n1 Sl
Z7 j ! 1Sl Sl~1Z ] Se vaz1a, co!oca de1au!l en Sl
Z eclo 1Sl | l AZ az ] A sa1da de Sl sea en n1nscu!as
Z9 lpul cup 11nlales 1Lo!, lpul e! ] Apaa ns da le!a
30 elun ] Sa1 da 1uno
31 |
3Z 1uncl1on landals
33 |
34 ] A 1uno ecebe sonenle un panelo
35 ] con a nensaen que se desea ex1b1,
36 ] paa no ob1a o poanado a passa
37 ] a ns enle aspas, usaenos 1^ 1lodos
3 ] os panelo, !enba?; e no 11.
39 !oca! ls~"1^"
40 !oca! Tanls~1|]ls|
41 ] Lenla!1za nensaen na !1nla
4Z !oca! Lo!~1111TolLo!s Tanls; 1 Z;;
43 lpul cup 11nlales 1Lo!
44 eclo "1ls"
45 ead n1
46 lpul cup 11nlales 1Lo!, lpul e! ] Apaa ns da le!a
47 elun ] Sa1 da 1uno
4 |
49 ] 0 copo do poana pop1anenle d1lo conea aqu1
50 c!ea
51 ] A le!a a seu1 nonlada con un n1co conando eclo
5Z eclo "
1nc!uso de ls1cas
~~~~~~~~ ~~ ~~~~~~~
T1lu!o do A!bun:
!a1xa:
lone da ls1ca:
1nlpele:"
53 wl1!e lue
54 do
55 lpul cup 5 3, lpul e! ] Pos1c1ona e !1npa !1nla
56 ead A!bun
57 j ! "1A!bun" ] 0peado deu lTR`
5 |
59 Peunla "esea Ten1na" s n
60 ] Aoa s leslo ca1xa ba1xa
61 j 1Sl ~ "n" conl1nue
6Z c!ea, ex1l ] !1n da execuo
63 |
64 ep 1q "^1A!bun\^" nus1cas Z` 1dev1nu!!
65 |
66 landals sle a!bun a esla cadaslado
67 conl1nue ] \o!la paa !e oulo a!bun
6 |
69 Re~"1A!bun^" ] 1Re ecebea os dados de avao
70 oAl1sla~ ] uadaa al1sla anle1o
71 wl1!e lue
7Z do
73 11!a1xa++;;
74 lpul cup 7 3
75 eclo 1!a1xa
76 lpul cup 9 3 ] Pos1c1ona paa !e ns1ca
77 ead lus1ca
7 j "1lus1ca" || ] Se o opeado lec!ou lTR`...
79 |
0 Peunla "!1n de A!bun?" s n
1 ] Aoa s leslo a ca1xa ba1xa
Z j "1Sl" ~ n conl1nue
3 beak ] Sa1 do !oop paa ava dados
4 |
5 lpul cup 11 3 ] Pos1c1ona paa !e Al1sla
6 ] 0 al1sla anle1o o pado
7 j "1oAl1sla" eclo n "11oAl1sla; "
ead Al1sla
9 j "1Al1sla" oAl1sla~"1Al1sla"
90 Re~"1Re1oAl1sla~1lus1ca:" ] lonlando e1slo
91 lpul cup 9 3, lpul e! ] Apaa ls1ca da le!a
9Z lpul cup 11 3, lpul e! ] Apaa Al1sla da le!a
93 done
94 ] ava e1slo no 11n do aqu1vo
95 eclo "1Re" `` nus1cas
96 ] L!ass111ca o aqu1vo
97 sol nus1cas o nus1cas
9 done
rnro or sotrqum
LNux Usrr
WWW.||ruxaaz|re.co.br
muic zooy edidc o8
Ahh! Agciu sim! Quundc pussudc
ccmc puiumetic dc ccmundc so0rcc,
c sciipt ci executudc nc shell cci-
iente, deixundc nele tcdc c umhiente
ciiudc. Agciu vumcs iehchinui u tu
ute c inicic du explicuuc schie este
ccmundc. Lu ulumcs dc .baslpo
11!e e, u estu ultuiu, vcc }u deve suhei
que suu incumhnciu e, lcgc upcs c
lcgin, piepuiui c umhiente de tiuhulhc
puiu c usuuiic. Agciu entendemcs que
e pci issc mesmc que ele e executudc
usundc esse uitiicic.
E ugciu vcc deve estui se pei-
guntundc se e sc puiu issc que esse
ccmundc seive. Eu lhe digc que sim,
mus issc ncs tiuz um mcnte de vuntu-
gens - e umu dus muis usudus e tiutui
unes ccmc ictinus exteinus. Ve}u
nu ||staem umu cutiu cimu de uzei
c ncssc picgiumu puiu incluii CDs nc
uiquivc musicus.
Agciu c picgiumu deu umu hcu encc-
lhidu e us chumudus de unuc cium
ticcudus pci uiquivcs exteincs chumu-
dcs peunla.1unc e nandans.1unc,
que ussim pcdem sei chumudcs pci
quulquei cutic picgiumu, dessu cimu
ieutilizundc c seu ccdigc.
Pci mctivcs meiumente diduticcs, us
chumudus u peunla.1unc e nanda
ns.1unc estuc sendc eitus pci so0rcc
e pci . (pcntc) indisciiminudumente,
emhciu eu pieiu c so0rcc que, pci
sei muis visivel, melhciu u legihili-
dude dc ccdigc e ucilitu suu pcsteiici
munutenuc. Ve}u nu listugem 6 ccmc
cuium esses dcis uiquivcs.
Em umhcs cs uiquivcs, z scmente
duus mudunus, que veiemcs nus
chseivues u seguii. Pciem, tenhc
muis tis chseivues u uzei:
1. As vuiiuveis nuc estuc sendc muis
decluiudus ccmc lccuis, pcique essu
e umu diietivu que sc pcde sei usudu
nc ccipc de unes e, pcituntc, essus
vuiiuveis peimunecem nc umhiente dc
shell, pcluindc-c,
z. O ccmundc rct0rn nuc estu muis
piesente, mus pcdeiiu estui sem ulte-
iui em nudu u lcgicu dc sciipt, umu
vez que sc seiviiiu puiu indicui um
eventuul eiic pci meic de um ccdigc
de ietcinc pieviumente estuhelecidc
(pci exemplc elun 1, elun Z, .),
sendc que c elun e elun 0 suc
idnticcs e signicum que u ictinu ci
executudu sem eiics,
||stagem : mus|ar7.s|
01 1 cal nus1nc7.sl
0Z ]!1b1n1basl
03 ] Ladasla Ls 1vesao 7;
04 ]
05 ] Aea de va1ave1s !oba1s
06 1nlales~111`lpul !1nes` 3;; ] 1nla onde seo nosladas as nss paa o opeado
07 TolLo!s~11lpul co!s; ] 0ld co!unas da le!a paa enquada nss
0 ] 0 copo do poana pop1anenle d1lo conea aqu1
09 c!ea
10 eclo "
1nc!uso de ls1cas
~~~~~~~~ ~~ ~~~~~~~
T1lu!o do A!bun:
| sle canpo 1o1
!a1xa: c1ado sonenle paa
| o1enla o peencl1nenlo
lone da ls1ca:
1nlpele:" ] Te!a nonlada con un n1co eclo
11 wl1!e lue
1Z do
13 lpul cup 5 3, lpul e! ] Pos1c1ona e !1npa !1nla
14 ead A!bun
15 j ! "1A!bun" ] 0peado deu lTR`
16 |
17 souce peunla.1unc "esea Ten1na" s n
1 j 1Sl ~ "n" conl1nue ] Aoa s leslo a ca1xa ba1xa
19 c!ea, ex1l ] !1n da execuo
Z0 |
Z1 ep 1q "^1A!bun\^" nus1cas Z` 1dev1nu!!
ZZ |
Z3 . nandans.1unc sle a!bun a esla cadaslado
Z4 conl1nue ] \o!la paa !e oulo a!bun
Z5 |
Z6 Re~"1A!bun^" ] 1Re ecebea os dados de avao
Z7 oAl1sla~ ] uadaa al1sla anle1o
Z wl1!e lue
Z9 do
30 11!a1xa++;;
31 lpul cup 7 3
3Z eclo 1!a1xa
33 lpul cup 9 3 ] Pos1c1ona paa !e ns1ca
34 ead lus1ca
35 j "1lus1ca" || ] Se o opeado l1ve dado lTR`...
36 |
37 . peunla.1unc "!1n de A!bun?" s n
3 j "1Sl" ~ n conl1nue ] Aoa s leslo a ca1xa ba1xa
39 beak ] Sa1 do !oop paa ava dados
40 |
41 lpul cup 11 3 ] Pos1c1ona paa !e Al1sla
4Z j "1oAl1sla" eclo n "11oAl1sla; " ] Al1sla anle1o de1au!l
43 ead Al1sla
44 j "1Al1sla" oAl1sla~"1Al1sla"
45 Re~"1Re1oAl1sla~1lus1ca:" ] lonlando e1slo
46 lpul cup 9 3, lpul e! ] Apaa ls1ca da le!a
47 lpul cup 11 3, lpul e! ] Apaa Al1sla da le!a
4 done
49 eclo "1Re" `` nus1cas ] ava e1slo no 11n do aqu1vo
50 sol nus1cas o nus1cas ] L!ass111ca o aqu1vo
51 done
LNux Usrr

Pnro or sotrqum
WWW.||ruxaaz|re.co.br
muic zooy edidc o8
]. O ccmundc que estumcs uccstumudcs
u usui puiu geiui um ccdigc de ietcinc
e c cxit, mus u suidu de umu ictinu
exteinu nuc pcde sei eitu dessu cimu
pcique, ccmc elu estu sendc executudu
nc mesmc shell dc sciipt que c chu-
mcu, c cxit simplesmente enceiiuiiu
esse shell, teiminundc u execuuc de
tcdc c sciipt,
. De cnde veic u vuiiuvel 1nlales' Elu
veic dc sciipt nus1nc7.sl, pcique huviu
sidc decluiudu untes du chumudu dus
ictinus (nuncu esqueu que c shell que
estu inteipietundc c sciipt e essus icti-
nus e c mesmc),
. Se vcc decidii usui ictinus exteinus
nuc se enveigcnhe, exugeie ncs ccmen-
tuiics, piincipulmente schie u pussugem
dcs puiumetics, puiu ucilitui u munu-
tenuc e c usc dessu ictinu pci cutics
picgiumus nc utuic.
- Bem, ugciu vcc }u tem muis um
mcnte de ncvidudes puiu melhciui
cs sciipts que zemcs. Vcc se lem-
hiu dc picgiumu listortisto.sh nc quul
vcc pussuvu c ncme de um uitistu
ccmc puiumetic e ele devclviu us suus
musicus' Ele eiu ccmc c mcstiudc uqui
emhuixc nu ||staem J.
- Cluic que me lemhic!
- Puiu imui cs ccnceitcs que te pus-
sei, uu-c ccm u telu cimutudu e u
execuuc em loop, de cimu que ele
sc teimine quundc iecehei um nc lugui dc ncme
dc uitistu. Supcnhu que u telu tenhu 25 linhus, u cudu 22
musicus listudus c picgiumu deveiu dui umu puiudu puiu
que c cpeiudci pcssu l-lus. Eventuuis mensugens de eiic
devem sei pussudus usundc u ictinu nandans.1unc que
ucuhumcs de desenvclvei. Chicc, mundu muis dcis!! O meu
e ccm pcucu piessuc.
Nuc se esqueu: em cusc de duvidu cu ultu de ccmpu-
nhiu puiu um chcpe, e sc mundui um e-muil puiu c endeiec
ju||o.reves@a||.co que teiei piuzei em lhe u}udui. Vcu upicveitui
tumhem puiu mundui minhu picpugundu: digu ucs umigcs que
quem estivei u m de uzei um cuisc pciietu de picgiumuuc
em Shell deve mundui um e-muil puiu ju||o.reves@tecroba||.co.br
puiu incimui-se. Ate muis!
||stagem 6: pctquata.juar e maaJamsq.juar
01 1 cal peunla.1unc
0Z ] A 1uno ecebe 3 panelos na seu1nle oden:
03 ] 11 lensaen a se dada na le!a
04 ] 1Z \a!o a se ace1lo con esposla de1au!l
05 ] 13 0 oulo va!o ace1lo
06 ] Supondo que 11~Ace1la?, 1Z~s e 13~n, a !1nla
07 ] aba1xo co!oca1a en ls o va!o "Ace1la? 1S1n;"
0 ls~"11 1`eclo 1Z | l az AZ`1`eclo 13 | l AZ az`;"
09 Tanls~1|]ls|
10 Lo!~1111TolLo!s Tanls; 1 Z;; ] Lenla!1za ns na !1nla
11 lpul cup 11nlales 1Lo!
1Z eclo "1ls"
13 lpul cup 11nlales 111Lo! + Tanls + 1;;
14 ead n1 Sl
15 j ! 1Sl Sl~1Z ] Se vaz1a co!oca de1au!l en Sl
16 eclo 1Sl | l AZ az ] A sa1da de Sl sea en n1nscu!a
17 lpul cup 11nlales 1Lo!, lpul e! ] Apaa ns da le!a
1 1 cal nandans.1unc
19 ] A 1uno ecebe sonenle un panelo
Z0 ] con a nensaen que se desea ex1b1,
Z1 ] paa no ob1a o poanado a passa
ZZ ] a ns enle aspas, usaenos 1^ 1lodos
Z3 ] os panelo, !enba?; e no 11.
Z4 ls~"1^"
Z5 Tanls~1|]ls|
Z6 Lo!~1111TolLo!s Tanls; 1 Z;; ] Lenla!1za ns na !1nla
Z7 lpul cup 11nlales 1Lo!
Z eclo "1ls"
Z9 ead n1
30 lpul cup 11nlales 1Lo!, lpul e! ] Apaa ns da le!a
||stagem /: ||statt|sta.s|
01 1 cal !1slal1sla.sl
0Z ]!1b1n1basl
03 ] ado un al1sla, nosla as suas nus1cas
04 ] vesao Z
05 11 j 1] eq 0
06 llen
07 eclo \oce deve1a le passado pe!o nenos un paanelo
0 ex1l 1
09 11
10 1!S~"
11 :"
1Z 1o Allus 1n 11cul 1Z d^ nus1cas;
13 do
14 eclo "1Allus" | ep 1 "^1^~" ` 1dev1nu!! eclo 1Allus | cul 1Z d~
15 done
INrormnrs
[I] 3c.n, o|ro ohc|o|.
bttp://WWW.ru.or/softWare/basb/basb.bt|
[2] |oruo| 1e referrc|o 1o 3c.n.
bttp://WWW.ru.or/softWare/basb/
arua|/basbref.bt|
5
o
s
r
r

o

n
u
t
o
r
!o||c te/c |e.e. e /nc||.|c Je :oc|e Je
:|.|emc. Je.Je 1{c{ e |coc|nc :cm un|s
Je.Je 1{3, ocnJc c||:|co Jc Je.en
.c|.|men|c Jc :0\, om .|.|emc cec:|c
nc| .|m||c cc un|s cJo/|Jc e|c tcoc
tcmo|cJce. |cJe .e :cn|c|cJc nc
emc|| o||cne.e.mc||:cm
rnro or sotrqum
LNux Usrr
WWW.||ruxaaz|re.co.br
muic zooy edidc o8
I
u hcm, }u sei que vcc vui queiei chcpe untes de ccmeui,
mus t tuc u m de te mcstiui c que z que }u vcu pedii u
icdudu enquuntc issc. A Chicc, mundu dcis! O dele e sem
ccluiinhc piu nuc deixui cheiic iuim nesse higcduc.
Enquuntc c chcpe nuc chegu, deixu eu te lemhiui c que
vcc me pediu nu ediuc pussudu: eiu puiu ieuzei
c picgiumu listortisto ccm u telu cimutudu e exe-
cuuc em lccp, de cimu que ele sc teimine quundc
iecehei um sczinhc ccmc ncme dc uitistu.
Eventuuis mensugens de eiic e peiguntus eitus uc
usuuiic deveiium sei mcstiudus nu untepenultimu
linhu du telu, utilizundc puiu issc us ictinus exteinus
nandans.1unc e peunla.1unc que desenvclvemcs
duiunte ncssc pupc nu ediuc pussudu.
Piimeiiumente eu dei umu encclhidu nus ictinus
nandans.1unc e peunla.1unc, que cuium ccmc
nu ||staem 1. E nu ||staem z vcc tem c giunduc,
ncssu veisuc ieeitu dc listoortisto.
- Puxu, vcc chegcu ccm u ccidu tcdu! Ccstei du
cimu ccmc vcc iesclveu c pichlemu e estiutuicu
c picgiumu. Fci muis tiuhulhcsc, mus u upiesentu-
uc ccu muitc legul e vcc explcicu hustunte us
cpes dc ccmundc tp0t. Vumcs testui c iesultudc
ccm um ulhum dc Lmcrson, Lokc & Iolmcr que
tenhc cudustiudc.
|aveaeaaa4o a esct|ta
Uu! Agciu vcc }u suhe tudc schie leituiu de dudcs,
mus quuntc u esciitu uindu estu upenus engutinhundc.
1u sei que vcc vui me peiguntui: Oiu, nuc e ccm c
ccmundc ccho e ccm cs iediiecicnumentcs de suidu
que se escieve dudcs'.
Bcm, u iespcstu e 'muis cu mencs'. Ccm estes ccmundcs
vcc escieve 9u% dc que piecisu, pciem se piecisui escievei
ulgc cimutudc eles lhe duiuc muitc tiuhulhc. Puiu cimutui u
suidu veiemcs ugciu umu instiuuc muitc muis inteiessunte,
u printj. Suu sintuxe e u seguinte:
hcje vamcs areraer mais scbre fcrmata(ac ae caaeias ae caracteres,
ccrhecer as rirciais variaveis ac !hell e rcs averturar rc [airaaj
aesccrheciac territcric aa exarsac ae arametrcs. l aalhe chcel
ror Ito Crznr Nrvrs
furse 6e he|| cr|pt
ape de 8etequIm
arte lX
D
a
v
e

H
a
m
i
l
t
o
n


w
w
w
.
s
x
c
.
h
u
||stagem 1: man6amsg.func e pergunta.func
maa4ams.Iaac
01 ] A 1uno ecebe sonenle un panelo
0Z ] con a nensaen que se desea ex1b1.
03 ] Paa no ob1a o poanado a passa
04 ] a ns enle aspas, usaenos 1^ 1lodos
05 ] os panelo, !enba?; e no 11.
06 ls~"1^"
07 Tanls~1|]ls|
0 Lo!~1111TolLo!s Tanls; 1 Z;; ] Lenla ns na !1nla
09 lpul cup 11nlales 1Lo!
10 ead n1 p "1ls "
petaata.Iaac
01 ] A 1uno ecebe 3 panelos na seu1nle oden:
0Z ] 11 lensaen a se noslada na le!a
03 ] 1Z \a!o a se ace1lo con esposla pado
04 ] 13 0 oulo va!o ace1lo
05 ] Supondo que 11~Ace1la?, 1Z~s e 13~n, a !1nla
06 ] aba1xo co!oca1a en ls o va!o "Ace1la? 1S1n;"
07 ls~"11 1`eclo 1Z | l az AZ`1`eclo 13 | l AZ az`;"
0 Tanls~1|]ls|
09 Lo!~1111TolLo!s Tanls; 1 Z;; ] Lenla!1za ns na !1nla
10 lpul cup 11nlales 1Lo!
11 ead n1 p "1ls " Sl
1Z j ! 1Sl Sl~1Z ] Se vaz1a co!oca de1au!l en Sl
13 Sl~11eclo 1Sl | l AZ az; ] A sa1da de Sl sea en n1nscu!a
14 lpul cup 11nlales 1Lo!, lpul e! ] Apaa ns da le!a
LNux Usrr

Pnro or 8otrqum
WWW.||ruxaaz|re.co.br
[unhc zooy edidc og
+rlf f0ml0 {_um-rl0...
Onde jormoto e umu cudeiu
de cuiucteies que ccntem tis
tipcs de ch}etc: cuiucteies
simples, cuiucteies puiu es-
pecicuuc de cimutc (cu Jc
controlc) e seqnciu de escu-
pe nc pudiuc du linguugem
C. or0mcnto e u cudeiu de
cuiucteies u sei impiessu sch
c ccnticle de jormoto.
Cudu um dcs cuiucteies uti-
lizudcs e piecedidc pelc cu-
iuctei z e, lcgc u seguii, vem
u especicuuc de cimutc de
uccidc ccm u ta|e|a 1.
As seqncius de escupe
pudiuc du linguugem C suc
sempie piecedidus pelc cu-
iucteie ccntiu-huiiu (\). As
ieccnhecidus pelc ccmundc
piint suc us du ta|e|a z.
Nuc ucuhu pci ui nuc! Tem
muitc muis ccisu schie essu
instiuuc, mus ccmc esse e
um ussuntc muitc cheic de
detulhes e, pcituntc, chutc
puiu explicui e pici uindu puiu
lei cu estudui, vumcs pussui
diietc ucs exemplcs ccm cc-
mentuiics. Ve}u sc:
| +rlf "" "1 l-"
1|
Eiiudc! Sc listcu 1 cuiucteie
e nuc sultcu linhu uc nul
| +rlf "`r" "1 l-"
1
Sultcu linhu mus uindu nuc
listcu u cudeiu inteiiu
| +rlf " l--`r" 1
1 l--

||stagem z: ||staart|sta
1 cal !1slal1sla3.sl
01 ]!1b1n1basl
0Z ] ado un al1sla, nosla as suas nus1cas
03 ] vesao 3
04 1nlales~111`lpul !1nes` 3;; ] 1nla onde as nss seo nosladas
05 TolLo!s~11lpul co!s; ] 0ld de co!unas na le!a paa enquada nss
06 c!ea
07 eclo "
+-----------------+
| 1sla Todas as ls1cas de un elen1nado Al1sla |
| ~~~~~ ~~~~~ ~~ ~~~~~~~ ~~ ~~ ~~~~~~~~~~~ ~~~~~~~ |
| |
| 1n1one o Al1sla: |
+-----------------+"
0 wl1!e lue
09 do
10 lpul cup 5 51, lpul ecl 31 ] ecl~ase clas 131 paa no apaa baa vel1ca!;
11 ead lone
1Z 11 j ! "1lone" ] 1lone esla vaz1o?
13 llen
14 . peunla.1unc "esea Sa1?" s n
15 j 1Sl ~ n conl1nue
16 beak
17 11
1 1ep 1q "^1lone~" nus1cas || ] 1ep no 1nlepela ^ cono expesso eu!a
19 |
Z0 . nandans.1unc "lo ex1sle ns1ca desse al1sla"
Z1 conl1nue
ZZ |
Z3 lpul cup 7 Z9, eclo `| |`
Z4 1nAlua!~
Z5 1!S~"
Z6 :"
Z7 1o Allus 1n 11cul 1Z d^ nus1cas; ] xc!u1 none do a!bun
Z do
Z9 11 eclo "1Allus" | ep 1q "^1lone~"
30 llen
31 lpul cup 11nAlua! Z9
3Z eclo n `| "
33 eclo 1Allus | cul 1Z d~
34 lpul cup 11nAlua! Z
35 eclo `|`
36 !el 1nAlua!++
37 11 j 11nAlua! eq 11nlales
3 llen
39 . nandans.1unc "Tec!e A!o paa Lonl1nua..."
40 lpul cup 7 0, lpul ed ] Apaa a le!a a pal1 da !1nla 7
41 lpul cup 7 Z9, eclo `| |`
4Z 1nAlua!~
43 11
44 11
45 done
46 lpul cup 11nAlua! Z9, eclo `| |`
47 lpul cup 111++1nAlua!;; Z9
4 ead n1 p "+---Tec!e A!o paa lova Lonsu!la----+"
49 lpul cup 7 0, lpul ed ] Apaa a le!a a pal1 da !1nla 7
50 done
WWW.||ruxaaz|re.co.br
[unhc zooy edidc og
Pnro or 8otrqum
LNux Usrr
Opu, essu e u cimu cciietu! O zc iece-
heu c vulci 1, ccmc queiiumcs:
| .
| +rlf " l--`r" |
. l--
O zc ieceheu c vulci du vuiiuvel 1a.
| +rlf "1 l--`r" |
. l--
| +rlf "1`r" | l--
.

Repuie que, ncs dcis ultimcs exemplcs,
em viitude dc usc dc zc, sc ci listudc
um cuiucteie de cudu cudeiu de cuiucteies
pussudu ccmc puiumetic. O vulci 10 u
iente dc c nuc signicu 1u cuiucteies. Um
numeic seguindc c sinul de peicentugem
(z) signicu c tumunhc que u cudeiu teiu
upcs u execuuc dc ccmundc. Vumcs vei
u seguii muis ulguns exemplcs. Os cc-
mundcs uhuixc:
| +rlf "o`r" .
.
| +rlf "1o`r" .
.
pieenchem u strin ccm espucs em
hiuncc u esqueidu (citc espucs muis dcis
cuiucteies, 1u digitcs), nuc ccm zeics. 1u
nc ccmundc uhuixc:
| +rlf "4o`r" .
.
O 04 upcs z signicu cimute u stiing
em quutic digitcs, ccm zeics u esqueidu
se necessuiic. Nc ccmundc:
| +rlf "-`r" |-r0 "!-. : 1h" [ L
1.hhh-1
O pudiuc dc ze e seis cusus decimuis.
1u nc ccmundc:
| +rlf "..-`r" -r0 "!-. : 1h" [ L
1.h/-1
O .Z especiccu duus cusus decimuis.
Ohseive ugciu:
| +rlf "f`r" ..
..
O pudiuc dc z1 e seis cusus decimuis.
E nc ccmundc:
| +rlf "..f`r" ..
..
O .Z especiccu duus cusus decimuis.
Agciu chseive:
| +rlf ".f`r" -r0 "!-. : 1h" [ L
.
O bc devclveu duus cusus decimuis e
c p1nl1 cclcccu c zeic u diieitu. O cc-
mundc u seguii:
| +rlf "0`r" 1
1.
Ccnveiteu c vulci 10 puiu huse cctul.
Puiu melhciui expeiimente:
| +rlf "0`r" ./

Assim u ccnveisuc cu ccm muis }eitc


de cctul, ne'. O que este uqui uz'
| +rlf "`r" -l-!-
-l-!-
| +rlf "1'`r" -l-!-
-l-!-
lmpiime Pele!eca ccm 15 cuiucteies.
A cudeiu de cuiucteies e pieenchidu ccm
espucs em hiuncc u esqueidu. 1u nc cc-
mundc:
| +rlf "1'H-.-`r" -l-!-
-l-!- H-.-
O mencs () cclcccu espucs em hiuncc
u diieitu de Pele!eca ute ccmpletui cs 15
cuiucteies pedidcs. E c ccmundc uhuixc,
c que uz'
| +rlf ".`r" -l-!-
-l
O .3 mundu tiuncui u cudeiu de cu-
iucteies upcs us tis piimeiius letius. E
c ccmundc u seguii:
| +rlf "1.`r" -l-!-
-l -l
lmpiime u cudeiu ccm 1u cuiucteies,
tiuncudu upcs cs tis piimeiics, ccncu-
tenudu ccm c cuiucteie a (upcs c s). E
esse ccmundc u seguii, c que uz'
Iahe|a 1: |ermates 6e caractere
fatactete A exptesso set |mptessa como:
c Ce|ecte|e s|r|es
a |ure|c rc s|stere aec|re|
e |cte(ec c|ert|fce ezcrerc|e|
f |ure|c ccr crtc aec|re| jcc|}
0 rerc| ert|e cs fc|retcs e e f ccr
cr|ssec acs te|cs rec s|r|fcet|.cs
c |ure|c rc s|stere ccte|
s Ceae|e ae ce|ecte|es
z |ure|c rc s|stere |ezeaec|re|
|r||re ur |ec |e rer|ur
t|c ae ccr.e|sec
Iahe|a z: equnc|as 6e escape
!eqac|a |Ie|to
e :ce c |ee
| vc|te ure cs|(ec oc:|.c:e}
f :e|te e|e e |cz|re e|re
|c|ce jcm jeeJ}
r :e|te e|e c |r|c|c ae ||r|e se
u|rte ||ne jeeJ}
| vc|te e|e c |r|c|c ae ||r|e cc|
|erte :c|ce e|on}
t A.er(e e|e e |cz|re re|ce ae
te|u|e(ec
LNux Usrr

Pnro or 8otrqum
WWW.||ruxaaz|re.co.br
[unhc zooy edidc og
| +rlf !`!|! X`r 4'..
!`!|! LL
Ele tiunscimcu c numeic 45Z3Z puiu
hexudecimul (b0b0), mus cs zeics nuc
ccmhinum ccm c iestc. Expeiimente:
| +rlf !`!|! ``r 4'..
!`!|! hh
Assim disuicu melhci! (iepuie nc 7
muiusculc). Piu teiminui, que tul c cc-
mundc uhuixc:
| +rlf ` `!``r 4'4 1. 1
^ !^
Este ui nuc e muiketing e e hustunte
ccmpletc, ve}u sc ccmc uncicnu:
O piimeiic z7 ccnveiteu 49354 em he-
xudecimul, iesultundc em CuCA (leiu-se
c, zeic, c e u). Em seguidu veic
um espuc em hiuncc seguidc pci cutic
z7. O z7 ccnveiteu c 19Z dundc ccmc
iesultudc L0 que ccm c ez L0. E nul-
mente c ultimc puiumetic z7 tiunscimcu
c numeic 10 nu letiu A.
Ccncime vccs pcdem nctui, u instiu-
uc e hustunte ccmpletu e ccmplexu. Ain-
du hem que c echc iesclve quuse tudc...
Aceitei em cheic quundc iesclvi expli-
cui c p1nl1 utiuves de exemplcs, pcis
nuc suheiiu ccmc enumeiui tuntus iegii-
nhus sem tcinui u leituiu enudcnhu.
|t|ac|pa|s vat|ve|s 4o !he||
O Bush pcssui diveisus vuiiuveis que
seivem puiu dui incimues schie
c umhiente cu ulteiu-lc. Suc muitus e
nuc pietendc mcstiui tcdus elus, mus
umu pequenu puite pcde lhe u}udui nu
eluhciuuc de sciipts. Ve}u u seguii us
piincipuis delus:
LPATh Ccntem cs cuminhcs que
seiuc pesquisudcs puiu tentui lcculizui
um diietciic especicudc. Apesui dessu
vuiiuvel sei pcucc ccnhecidu, seu usc
deve sei incentivudc pci pcupui muitc
tiuhulhc, piincipulmente em instulues
ccm estiutuiu de diietciics em multiplcs
niveis. Ve}u c exemplc u seguii:
| -r0 |U^|h
.:..:~:u!0!
| wo
r0m-r-.-!|
| o L+r
| wo
u!0!L+r
Ccmc 1us1!oca! estuvu nu minhu
vuiiuvel 1LPATh e nuc existiu c diietciic
b1n em nenhum dcs seus untecesscies (.,
.. e ~), c ccmundc cd ci executudc tendc
ccmc destinc 1us1!oca!1b1n.
h1STS1Z Limitu c numeic de ins-
tiues que cuhem dentic dc uiquivc de
histciicc de ccmundcs (ncimulmente
.basll1sloy, mus nu veidude e c que
estu indicudc nu vuiiuvel 1h1ST!1). Seu
vulci pudiuc e 5uu.
h0STlAl O ncme dc hcst cciiente
(que tumhem pcde sei chtidc ccm c cc-
mundc unane n).
Al Usudu puiu deteiminui c idicmu
uludc nc puis (muis especicumente cu-
tegciiu dc locolc). Ve}u um exemplc:
| ol-
|ru ^ 14 11:'4:1 h| .'
| !^Hlh ol-
u+ ^L 14 11:'':14 h| .'
1ll0 O numeic du linhu dc sciipt
cu unuc que estu sendc executudu.
Seu usc piincipul e mcstiui mensugens
de eiic }untumente ccm us vuiiuveis 10
(ncme dc picgiumu) e 1!LlLlAl (ncme
du unuc em execuuc).
0lAl Estu vuiiuvel uimuzenu c
ncme de lcgin dc usuuiic .
lA1LhLI Especicu, em segundcs, u
ieqnciu ccm que c Shell veiicu u pie-
senu de cciiespcndnciu ncs uiquivcs
indicudcs pelu vuiiuveis 1lA1PATh cu
1lA1. O tempc pudiuc e de 6u segundcs
(1 minutc). A cudu inteivulc c Shell uiu
u veiicuuc untes de exihii c picximc
picmpt piimuiic (1PS1). Se essu vuiiuvel
estivei sem vulci cu ccm um vulci menci
cu iguul u zeic, u huscu pci ncvus men-
sugens nuc seiu eetuudu.
PATh Cuminhcs que seiuc pesquisu-
dcs puiu tentui lcculizui um uiquivc espe-
cicudc. Ccmc cudu sciipt e um uiquivc,
cusc use c diietciic cciiente (.) nu suu
vuiiuvel 1PATh, vcc nuc necessituiu usui
c ccmundc .1scp puiu que c sciipt scp
se}u executudc. Bustu digitui scp. Este
e c mcdc que pieic.
P1PSTATLS umu vuiiuvel dc tipc
vetci (orroy) que ccntem umu listu de
vulcies de ccdigcs de ietcinc dc ultimc
pipeline executudc, istc e, um uiiuy que
uhiigu cudu um dcs 1? de cudu instiuuc
dc ultimc pipeline. Puiu entendei melhci,
ve}u c exemplc u seguii:
| wr0
r-.- l ^ 11 1h:.h 1...4.144
r-.- l1 ^ 1. 1.:4 1...4.144
| wr0 [ _- ^L0l-!r0
| -r0 ||1!'|^|U'{|
1
Neste exemplc mcstiumcs que c usu-
uiic hctelhc nuc estuvu lcgudc, em
seguidu executumcs um pipeline que
piccuiuvu pci ele. Usu-se u nctuuc j^
em um uiiuy puiu listui tcdcs cs seus
elementcs, dessu cimu, vimcs que u pii-
meiiu instiuuc (wlo) ci hem-sucedidu
(ccdigc de ietcinc 0) e u seguinte (ep)
nuc (ccdigc de ietcinc 1).
PR0lPTL0llAl Se estu vuiiuvel ie-
cehei c ncme de um ccmundc, tcdu vez
que vcc teclui um sczinhc nc
picmpt piincipul (1PS1), esse ccmundc
seiu executudc. muitc util quundc vcc
piecisu iepetindc ccnstuntemente umu
deteiminudu instiuuc.
PS1 c picmpt piincipul. Nc Pupc
de Bctequim usumcs cs pudies 1 puiu
usuuiic ccmum e ] puiu icct, mus e mui-
WWW.||ruxaaz|re.co.br
[unhc zooy edidc og
Pnro or 8otrqum
LNux Usrr
tc ieqente que ele este}u peiscnulizudc.
Umu cuiicsidude e que existe ute ccncuisc
de quem picgiumu c 1PS1 muis ciiutivc.
PSZ Tumhem chumudc picmpt de
ccntinuuuc, e uquele sinul de muici
(`) que upuiece upcs um sem
c ccmundc tei sidc enceiiudc.
Pw Pcssui c cuminhc ccmpletc
(1PATh) dc diietciic cciiente. Tem c
mesmc eeitc dc ccmundc pwd.
RAl0l Cudu vez que estu vuiiuvel e
ucessudu, devclve um inteiic uleutciic en-
tie u e 32767. Puiu geiui um inteiic entie
u e 1uu, pci exemplc, digitumcs:
| -r0 |^HU|11
/
Ou se}u, pegumcs c iestc du divisuc dc
numeic iundmicc geiudc pci 1u1 pcique
c iestc du divisuc de quulquei numeic
pci 1u1 vuiiu entie u e 1uu.
RP\ Use estu vuiiuvel puiu iecupeiui
c ultimc cumpc lidc, cusc ele nuc tenhu
nenhumu vuiiuvel usscciudu. Exemplc:
| -o "U+_+l- ' 0u H: "
U+_+l- ' 0u H: H
| -r0 |!!
H
SL0lS Estu vuiiuvel incimu, em se-
gundcs, hu quuntc tempc c Shell cciiente
estu de pe. Use-u puiu demcnstiui u
estuhilidude dc Linux e esnchui usuuiics
duquelu ccisu ccm }unelinhus cclciidus
que chumum de sistemu cpeiucicnul, mus
que necessitu de iehccts ieqentes.
Tl0LT Se estu vuiiuvel ccntivei um
vulci muici dc que zeic, esse vulci
seiu ccnsideiudc c timco0t pudiuc dc
ccmundc rcoJ. Nc picmpt, esse vulci
e inteipietudc ccmc c tempc de espeiu
pci umu uuc untes de expiiui u sessuc.
Supcndc que u vuiiuvel ccntenhu c vulci
30, c Shell enceiiuiu u sessuc dc usuuiic
(cu se}u, uiu loo0t) upcs 3u segundcs
sem nenhumu uuc nc picmpt.
|xpaaso 4e patmettos
Bem, muitc dc que vimcs ute ugciu suc
ccmundcs exteincs uc Shell. Eles quehium
c muici gulhc, ucilitum u visuulizuuc,
munutenuc e depuiuuc dc ccdigc, mus
nuc suc tuc ecientes quuntc cs intiinse-
ccs (h0iltins). Quundc c ncssc pichlemu
ci peicimunce, devemcs dui pieeinciu
uc usc dcs intiinseccs. A puitii de ugciu
vcu te mcstiui ulgumus tecnicus puiu c
seu picgiumu pisui nc uceleiudci.
Nu ta|e|a ] e ncs exemplcs u seguii,
veiemcs umu seiie de ccnstiues chu-
mudus expunsuc (cu suhstituiuc) de
puiumetics (Ioromctcr Lxponsion), que
suhstituem instiues ccmc c cul, c exp,
c l, c sed e cutius de cimu muis ugil.
Vumcs vei ulguns exemplcs: se em umu
peiguntu c S e ceiecidc ccmc vulci Jc
jo0lt (pudiuc) e u suidu vui puiu u vuiiuvel
Sl, upcs lei c vulci pcdemcs uzei:
'H|'H:'|
Puiu suhei c tumunhc de umu cade1a:
| o-+1.
| -r0 ||}o-+|
4
Puiu extiuii dudcs de cade1a, du pcsi-
uc um ute c nul uzemcs:
| o-+Lo-f
| -r0 ||o-+:1|
Lo-f
Repuie que u ciigem e zeic e nuc um.
Vumcs extiuii 3 cuiucteies u puitii du 2'
pcsiuc du mesmu vuiiuvel cade1a:
| -r0 ||o-+:.:|
o-
Repuie que ncvumente u ciigem du ccn-
tugem e zeic e nuc um. Puiu supiimii
tudc u esqueidu du piimeiiu ccciinciu
de umu cudeiu, uu:
| o-+"0 o- h0l-qu+m"
| -r0 ||o-+}` `|
o- h0l-qu+m
| -r0 "0r.- "||o-+}` `|
0r.- o- h0l-qu+m
Nc exemplc unteiici ci supiimidc u
esqueidu tudc c que cusu ccm u menci
ccciinciu du expiessuc ^ `, cu se}u,
tcdcs cs cuiucteies ute c piimeiic espuc
em hiuncc. Esses exemplcs tumhem pc-
deiium sei esciitcs sem pictegei c espuc
du inteipietuuc dc Shell (mus pieic
picteg-lc puiu ucilitui u legihilidude
dc ccdigc). Ve}u sc:
| -r0 ||o-+} |
o- h0l-qu+m
| -r0 "0r.- "||o-+} |
0r.- o- h0l-qu+m
Repuie que nu ccnstiuuc de exp e
peimitidc c usc de metucuiucteies.
Utilizundc c mesmc vulci du vuiiuvel
cade1a, chseive ccmc uiiumcs puiu tei
scmente olequ1n:
| -r0 ||o-+}}` `|
h0l-qu+m
| -r0 "!m0 `r0-` r0 "||o-+}}` `|
!m0 `r0-` r0 h0l-qu+m
Destu vez supiimimcs u esqueidu de
cade1a u muici ccciinciu du expiessuc
exp. Assim ccmc nc cusc unteiici, c usc
de metucuiucteies e peimitidc.
Outic exemplc muis util: puiu que nuc
upuieu c cuminhc (poth) ccmpletc dc seu
picgiumu (10) em umu mensugem de eiic,
inicie c seu textc du seguinte cimu:
-r0 U0: ||}}| l-Xl0 o m-r_-m o- -0
Neste exemplc seiiu supiimidc u es-
queidu tudc ute u ultimu huiiu (1) dc
cuminhc, iestundc scmente c ncme dc
picgiumu. O cuiucteie z e simetiicc uc
], ve}u c exemplc:
LNux Usrr

Pnro or 8otrqum
WWW.||ruxaaz|re.co.br
[unhc zooy edidc og
| -r0 |o-+
0 o- h0l-qu+m
| -r0 ||o-+` `|
0 o-
| -r0 ||o-+` `|
0
Puiu ticcui piimeiiu ccciinciu de umu
suhcudeiu em umu cudeiu pci cutiu:
| -r0 |o-+
0 o- h0l-qu+m
| -r0 ||o-+o-r0|
0 r0 h0l-qu+m
| -r0 ||o-+o- |
0 h0l-qu+m
Pieste utenuc quundc ci usui metucu-
iucteies! Eles suc gulcscs e sempie ccm-
hinuiuc ccm u muici pcssihilidude, Nc
exemplc u seguii eu queiiu ticcui Iopo Jc
Botcq0im pci Convcrso Jc Botcq0im:
| -r0 |o-+
0 o- h0l-qu+m
| -r0 ||o-+00r.-|
0r.-l-qu+m
A ideiu eiu pegui tudc ute c piimeiic
o, mus ucuhcu sendc ticcudc tudc ute c
ultimc o. lstc pcdeiiu sei iesclvidc de
diveisus muneiius. Eis ulgumus:
| -r0 ||o-+00r.-|
0r.- o- h0l-qu+m
| -r0 ||o-+....0r.-|
0r.- o- h0l-qu+m
Ticcundc tcdus us ccciincius de umu
suhcudeiu pci cutiu. O ccmundc:
| -r0 ||o-+0|
o- hl-qu+m
Oidenu u ticcu de tcdcs us letius o pci
a. Outic exemplc muis util e puiu ccntui
u quuntidude de uiquivcs existentes nc
diietciic cciiente. Ohseive c exemplc:
| ! [ w !

O wc pe um mcnte de espucs em
hiuncc untes dc iesultudc. Puiu tiiu-lcs:
} lo^q --L- o o0 0mro0
| lo^q|! [ w !
| -r0 ||lo^q |

Nesse exemplc, eu suhiu que u suidu eiu


ccmpcstu de hiunccs e numeics, pci issc
mcntei essu expiessuc puiu ticcui tcdcs cs
espucs pci nudu. Ncte que untes e upcs c
usteiiscc (') hu espucs em hiuncc.
Hu vuiius cimus de ticcui umu suhcu-
deiu nc inicic cu nc m de umu vuiiuvel.
Puiu ticcui nc inicic uzemcs:
| -r0 |0
qu-0 qu-0
| -r0 0m0 o+z 0 u!+l ||0U
}qu-0r0|
0m0 o+z 0 u!+l r0 qu-0
Puiu ticcui nc nul uzemcs:
| -r0 0m0 o+z 0 r0o-l+r0
||0qu-0r0|
0m0 o+z 0 r0o-l+r0 qu-0 r0
- Agciu }u chegu, c pupc hc}e ci chutc
pcique teve muitu decciehu, mus c que
muis impcitu e vcc tei entendidc c
que te ulei. Quundc piecisui, ccnsulte
estes guuidunupcs cnde iuhisquei us
dicus e depcis guuide-cs puiu ccnsultus
utuius. Mus vcltundc u vucu iiu: tu
nu hciu de tcmui cutic e vei c }cgc dc
Menguc. Piu picximu vez vcu te dui
mclezu e sc vcu cchiui c seguinte: pe-
gue u ictinu peunla.1unc (du quul
ulumcs nc inicic dc ncssc hute-pupc
de hc}e, ve}u u ||staem 1) e ctimize-u
puiu que u vuiiuvel 1Sl iecehu c vulci
pudiuc pci expunsuc de puiumetics,
ccmc vimcs.
E nuc se esqueu: em cusc de duvidus
cu ultu de ccmpunhiu puiu um (cu muis)
chcpe e sc mundui um e-muil puiu ju||o.
reves@a||.co. E digu puiu cs umigcs
que quem estivei u m de uzei um cuisc
pciietu de picgiumuuc em Shell deve
mundui um e-muil puiu ju||o.reves@tecroba||.
co.br puiu incimui-se. Vuleu!
Iahe|a ]: I|pes 6e expansae 6e parmetres
|xpaaso 4e patmettos kesa|ta4o espeta4o
,[.e|ea|ec} :e va e .et|e, c |esu|teac ae ez|essec e ea|ec
,[-ceae|e} !erer|c ae 1cade1a
,[ceae|ecs|cec} |zt|e| ure su|ceae|e ae 1cade1a e e|t|| ae cs|(ec 0||er te|c
,[ceae|ecs|cecterer|c} |zt|e| ure su|ceae|e ae 1cade1a e e|t|| ae cs|(ec ccr terer|c
|ue| e lananlo 0||er te|c
,[ceae|e-ez|} Cc|te e rerc| ccc||erc|e ae 1cade1a e esue|ae ae ez|essec exp
,[ceae|e--ez|} Cc|te e re|c| ccc||erc|e ae 1cade1a e esue|ae ae ez|essec exp
,[ceae|eez|} Cc|te e rerc| ccc||erc|e ae 1cade1a e a||e|te ae ez|essec exp
,[ceae|eez|} Cc|te e re|c| ccc||erc|e ae 1cade1a e a||e|te ae ez|essec exp
,[ceae|e/su|cea1/su|cea2} !|cce e ||re||e ccc||erc|e ae subcad1 c| subcadZ
,[ceae|e//su|cea1/su|cea2} !|cce tcaes es ccc||erc|es ae subcad1 c| subcadZ
,[ceae|e/-su|cea1/su|cea2} :e subcad1 ccr||re ccr c |r|c|c ae ceae|e, ertec e t|cceac c| subcadZ
,[ceae|e/su|cea1/su|cea2} :e subcad1 ccr||re ccr c fr ae ceae|e, ertec e t|cceac c| subcadZ
5
o
s
r
r

o

n
u
t
o
r
!o||c te/c |e.e. e /nc||.|c Je :oc|e Je
:|.|emc. Je.Je 1{c{ e |coc|nc :cm un|s
Je.Je 1{3, ocnJc c||:|co Jc Je.en
.c|.|men|c Jc :0\, om .|.|emc cec:|c
nc| .|m||c cc un|s cJo/|Jc e|c tcoc
tcmo|cJce. |cJe .e :cn|c|cJc nc
emc|| o||cne.e.mc||:cm
WWW.||ruxaaz|re.co.br
[unhc zooy edidc og
Pnro or 8otrqum
LNux Usrr
|
u umigc, te dei u muici mclezu nu
ultimu uulu ne' Um exeiciciczinhc
muitc simples.
- , mus ncs testes que eu z, e de
uccidc ccm c que vcc ensincu schie
suhstituiuc de puiumetics, uchei que
deveiiu uzei ulgumus ulteiues nus un-
es que desenvclvemcs puiu tcinu-lus de
usc geiul, ccmc vcc disse que tcdus us
unes deveiium sei. Quei vei'
- Cluic, ne, mune, se te pedi puiu uzei
e pcique estcu u m de te vei upiendei,
mus peiui, du um tempc. Chicc! Mundu
dcis, um sem ccluiinhc! Vui, mcstiu ui
c que vcc ez.
- Bem, ulem dc que vcc pediu, eu
iepuiei que c picgiumu que chumuvu u
unuc teiiu de tei pieviumente denidus
u linhu em que seiiu mcstiudu u mensu-
gem e u quuntidude de cclunus. O que
z ci incluii duus linhus - nus quuis
empieguei suhstituiuc de puiumetics
- puiu que, cusc umu dessus vuiiuveis nuc
csse incimudu, elu iecehesse um vulci
utiihuidc pelu picpiiu unuc. A linhu
de mensugem e tis linhus untes dc m
du telu e c tctul de cclunus e chtidc pelc
ccmundc lpul co!s . D umu clhudu nu
||staem 1 e ve}u ccmc ccu:
- Ccstei, vcc }u se untecipcu uc que eu
iu pedii. Sc piu gente enceiiui esse pupc
de suhstituiuc de puiumetics, iepuie que
u legihilidude dc ccdigc estu hciiciivel,
mus c desempenhc, istc e, u velccidude
de execuuc, estu ctimc. Ccmc unes
suc ccisus muitc pesscuis, }u que cudu
um usu us suus e quuse nuc hu neces-
sidude de munutenuc, eu sempie cptc
pelc desempenhc.
Hc}e vumcs suii duquelu chutuiu que
ci c ncssc ultimc pupc e vcltui u lcgicu,
suindc du decciehu. Mus vcltc u te lem-
hiui: tudc que eu te mcstiei du ultimu vez
uqui nc Bctecc dc Chicc e vulidc e quehiu
um gulhuc. Cuuide uqueles guuidunupcs
que iuhiscumcs pcique, muis cedc cu
muis tuide, eles lhe vuc sei muitc uteis.
0 comaa4o eva|
Vcu te dui um pichlemu que eu duvidc
que vcc iesclvu:
| .1
| ...1
Te dei essus duus vuiiuveis e queic que
vcc me digu ccmc eu pcssc, me ieeiindc
upenus u vuiiuvel u vaZ , listui c vulci de
va1 (que, nc ncssc cusc, e 3).
- Ah, issc e mcle, mcle! sc digitui
esse ccmundc uqui:
-r0 |-r0 |..
||stagem 1: funae pergunta.func
01 ] A 1uno ecebe 3 panelos na seu1nle oden:
0Z ] 11 lensaen a se noslada na le!a
03 ] 1Z \a!o a se ace1lo con esposla pado
04 ] 13 0 oulo va!o ace1lo
05 ] Supondo que 11~Ace1la?, 1Z~s e 13~n, a !1nla
06 ] aba1xo co!oca1a en ls o va!o "Ace1la? 1S1n;"
07 TolLo!s~1|TolLo!s:11lpul co!s;| ] Se no eslava de11n1do, aoa esla
0 1nlales~1|1nlales:11111lpul !1nes;3;;| ] 1den
09 ls~"11 1`eclo 1Z | l az AZ`1`eclo 13 | l AZ az`;"
10 Tanls~1|]ls|
11 Lo!~1111TolLo!s Tanls; 1 Z;; ] Paa cenla!1za ls na !1nla
1Z lpul cup 11nlales 1Lo!
13 ead n1 p "1ls " Sl
14 Sl~1|Sl:1Z| ] Se vaz1a co!oca o pado en Sl
15 Sl~11eclo 1Sl | l AZ az; ] A sa1da de Sl sea en n1nscu!as
16 lpul cup 11nlales 1Lo!, lpul e! ] Apaa ls da le!a
lm mais um caitulc ae rcssa saa atraves ac murac ac
:ne|| ::|| vamcs areraer a avaliar exressces, caturar
sirais e receber arametrcs atraves aa lirha ae ccmarac.
ror Ito Crznr Nrvrs
furse 6e he|| cr|pt
ape de 8etequIm
arte X
D
a
v
e

H
a
m
i
l
t
o
n


w
w
w
.
s
x
c
.
h
u
LNux Usrr

Pnro or 8otrqum
WWW.||ruxaaz|re.co.br
[ulhc zooy edidc o
Repuie que eu cclcquei c eclo 1vaZ entie ciuses (`), pcique
dessu cimu ele teiu piiciidude de execuuc e iesultuiu em va1.
E eclo 1va1 picduziiu 3.
- Ah, e' Entuc execute puiu vei se estu cciietc.
| -r0 |-r0 |..
|.1
- Ue! Que ci que uccnteceu' O meu iuciccinic me puieciu
hustunte lcgicc.
- O seu iuciccinic ieulmente ci lcgicc, c pichlemu e que vcc
esqueceu de umu dus piimeiius ccisus de que te ulei uqui nc
Bctecc e que vcu iepetii. O Shell usu u seguinte cidem puiu
iesclvei umu linhu de ccmundc:
Resclve cs iediiecicnumentcs,
Suhstitui us vuiiuveis pelcs seus vulcies,
Resclve e suhstitui cs metu cuiucteies,
Pussu u linhu }u tcdu esmiuudu puiu execuuc.
Dessu cimu, quundc c inteipietudci chegcu nu use de ie-
scluuc de vuiiuveis, que ccmc eu disse e unteiici u execuuc,
u unicu vuiiuvel existente eiu vaZ e pci issc u tuu scluuc
picduziu ccmc suidu 1va1. O ccmundc ccho identiccu issc
ccmc umu cudeiu de cuiucteies e nuc ccmc umu vuiiuvel.
Pichlemus desse tipc suc ielutivumente ieqentes e seiium
inscluveis cusc nuc existisse u instiuuc cvol, cu}u sintuxe e
eva! cnd, cnde cnd e umu linhu de ccmundc quulquei, que
vcc pcdeiiu inclusive executui diietc nc picmpt dc teiminul.
Quundc vcc pe c evul nu iente, nc entuntc, c que ccciie e
que c Shell tiutu cnd ccmc um puiumetic dc evul e, em seguidu,
c evul executu u linhu iecehidu, suhmetendc-u uc Shell. Ou
se}u, nu piuticu cnd e unulisudc duus vezes. Dessu cimu, se
executussemcs c ccmundc que vcc picps cclccundc c evul
nu iente, teiiumcs u suidu espeiudu. Ve}u:
| -.! -r0 |-r0 |..

Esse exemplc tumhem pcdeiiu tei sidc eitc de cutiu muneiiu.


Du sc umu clhudu:
| -.! -r0 `||..

Nu piimeiiu pussudu u ccntiuhuiiu (\) seiiu ietiiudu e 1vaZ


seiiu iesclvidc picduzindc va1. Nu segundu pussudu teiiu sc-
hiudc eclo 1va1, que picduziiiu c iesultudc espeiudc. Agciu
vcu cclccui um ccmundc dentic de vaZ e executui:
| ..!
| |..
10_1.r !0..r +ruu !0_o0
10_..r ^qU0U'.lXl1 !+lmu+ !0_ul-.r
10_.r 0rfu0 !+ll+l mrom_.fur
!01.r 0rl!.r !+ll+l m0rL_.r
Agciu vumcs cclccui em vaZ c seguinte: !s 1va1, e em
va1 vumcs cclccui !^, ve}umcs c iesultudc:
| ..`! |.1`
| .1`!`
| |..
!: |.1: H0 ur f+!- 0 o+-l0,
| -.! |..
!+lmu+ !+ll+l !+ll+l !0_o0 !0_ul-.r
Ncvumente, nc tempc de suhstituiuc dus vuiiuveis, 1va1
uindu nuc huviu se upiesentudc uc Shell puiu sei iesclvidu.
Assim, sc ncs iestu executui c ccmundc evul puiu dui us duus
pussudus necessuiius.
Umu vez um cclegu du excelente listu de discussuc roups.yaboo.co/
roup/sbe||scr|pt cclcccu umu duvidu: queiiu uzei um menu
que numeiusse e listusse tcdcs cs uiquivcs ccm extensuc .sl e,
quundc c cpeiudci escclhesse umu cpuc, c picgiumu cciies-
pcndente csse executudc. Ve}u minhu picpcstu nu ||staem z:
||stagem z: fatmenu.sh
01 ]!1b1n1basl
0Z ]
03 ] 1sla que enunea os poanas con exlenso .sl no
04 ] d1el1o coenle e execula o esco!l1do pe!o opeado
05 ]
06 c!ea, 1~1
07 p1nl1 "z11s\lzs\n\n" 0po Poana
0 LAS~`case 1opl 1n`
09 1o aq 1n ^.sl
10 do
11 p1nl1 "\lz03d\lzs\n" 11 1aq
1Z LAS~"1LAS
13 "11p1nl1 "z03d;\l zs,," 11 1aq;
14 1~1111+1;;
15 done
16 LAS~"1LAS
17 ^; . eo,,
1 esac"
19 ead n3 p "1n1one a opo deseada: " opl
Z0 eclo
Z1 eva! "1LAS"
WWW.||ruxaaz|re.co.br
[ulhc zooy edidc o
Pnro or 8otrqum
LNux Usrr
Puiece ccmplicudc pcique usei muitcs
p1nl1 puiu cimutuuc du telu, mus nu
veidude e hustunte simples: c piimei-
ic p1nl1 ci cclccudc puiu impiimii
c cuheulhc e lcgc em seguidu ccme-
cei u mcntui dinumicumente u vuiiuvel
1LAS, nu quul uc nul seiu eitc um evul
puiu execuuc dc picgiumu escclhidc.
Repuie nc entuntc que dentic dc lccp
dc 1o existem dcis p1nl1: c piimeiic
seive puiu cimutui u telu e c segundc
puiu mcntui c case (se untes dc ccmun-
dc ead vcc cclccui umu linhu eclo
"1LAS", veiu que c ccmundc case mcn-
tudc dentic du vuiiuvel estu tcdc inden-
tudc. Fiescuiu, ne':). Nu suidu dc 1o, ci
udicicnudu umu linhu u vuiiuvel 1LAS
puiu, nc cusc de umu escclhu invulidu,
sei executudu umu unuc exteinu puiu
exihii mensugens de eiic. Vumcs execu-
tui c sciipt puiu vei u suidu geiudu:
| fzm-ru.r
0 0_m
1 10_1.r
. 10_..r
10_.r
4 !01.r
' !0..r
h 0rl!.r
/ fzm-ru.r
o !0_ul-.r
m0rL_.r
1 -o+-.r
11 -o+-o.r
1rf0m- 00 o--o:
Seiiu inteiessunte incluii umu cpuc
puiu teiminui c picgiumu e, puiu issc,
seiiu necessuiiu u inclusuc de umu linhu
upcs c lccp de mcntugem du telu e u ulte-
iuuc du linhu nu quul uzemcs u utiihui-
uc nul dc vulci du vuiiuvel 1LAS. Ve}u
nu ||staem ] ccmc ele cuiiu:
Existe nc Linux umu ccisu chumudu
sinul (s1na!). Existem diveiscs sinuis
que pcdem sei mundudcs puiu (cu geiu-
dcs pci) piccesscs em execuuc. Vumcs,
de ugciu em diunte, dui umu clhudinhu
ncs sinuis enviudcs ucs piccesscs e muis
u iente vumcs dui umu pussudu iupidu
pelcs sinuis geiudcs pelcs piccesscs.
Puiu mundui um sinul u um piccessc,
usumcs ncimulmente c ccmundc kill,
cu}u sintuxe e:
| +!! +_ 1U
Onde P1 e c identicudci dc picces-
sc (Iroccss IJcntijcotion cu Iroccss ID).
Alem dc ccmundc kill, ulgumus seqn-
cius de teclus tumhem pcdem geiui sinuis.
A ta|e|a 1 mcstiu cs sinuis muis impci-
tuntes puiu mcnitciuimcs:
Alem desses, existe c umigeiudc si-
nul 9 cu S1I1 que, puiu c piccessc
que c estu iecehendc, equivule u metei
c dedc nc hctuc de desligui dc ccmpu-
tudci - c que e ultumente indese}uvel,
}u que muitcs picgiumus necessitum
'limpui u uieu' uc seu teiminc. Se seu
enceiiumentc ccciiei de cimu pievistu,
cu se}u, se tivei um teiminc ncimul, e
muitc ucil uzei essu limpezu, pciem,
se c seu picgiumu tivei um m hiuscc,
muitu ccisu iuim pcde ccciiei:
pcssivel que em um deteiminudc es-
puc de tempc, c seu ccmputudci este}u
cheic de uiquivcs de tiuhulhc inuteis
Seu piccessudci pcdeiu cui utcludc
de piccesscs zomhics e Jcj0ncts geiu-
dcs pci piccesscs lhcs que peideium
cs puis e estuc ciucs,
necessuiic liheiui sockcts uheitcs puiu
nuc deixui cs clientes ccngeludcs,
Seus hunccs de dudcs pcdeiuc cui
cciicmpidcs pcique sistemus geienciu-
dcies de hunccs de dudcs necessitum
de um tempc puiu giuvui seus hueis
em discc (ccmmit).
Enm, existem mil iuzes puiu nuc usui
um kill ccm c sinul 9 e puiu mcnitciui c
enceiiumentc uncimul de picgiumus.
||stagem ]: Neva versae 6e fatmenu.sh
01 ]!1b1n1basl
0Z ]
03 ] 1sla enuneando os poanas con exlenso .sl no
04 ] d1el1o coenle, execula o esco!l1do pe!o opeado
05 ]
06 c!ea, 1~1
07 p1nl1 "z11s\lzs\n\n" 0po Poana
0 LAS~`case 1opl 1n`
09 1o aq 1n ^.sl
10 do
11 p1nl1 "\lz03d\lzs\n" 11 1aq
1Z LAS~"1LAS
13 "11p1nl1 "z03d;\l zs,," 11 1aq;
14 1~1111+1;;
15 done
16 p1nl1 "\lzd\lzs\n\n" 999 "!1n do poana" ] 1nla 1nc!u1da
17 LAS~"1LAS
1 999; ex1l,, ] 1nla a!leada
19 ^; .1eo,,
Z0 esac"
Z1 ead n3 p "1n1one a opo deseada: " opl
ZZ eclo
Z3 eva! "1LAS"
LNux Usrr

Pnro or 8otrqum
WWW.||ruxaaz|re.co.br
[ulhc zooy edidc o
0 comaa4o ttap
Puiu uzei u mcnitciuuc de sinuis existe
c ccmundc lap, cu}u sintuxe pcde sei
umu dus mcstiudus u seguii:
l "mo1: mo.: mor" '1 '. . 'H
l `mo1: mo.: mor` '1 '. . 'H
Onde cs ccmundcs cnd1, cndZ, cndn
seiuc executudcs cusc c picgiumu iecehu
cs sinuis S1, SZ . Sl. As uspus (") cu
us upcstices (`) sc suc necessuiius cusc
c trop pcssuu muis de um ccmundc cnd
usscciudc. Cudu umu delus pcde sei tum-
hem umu unuc inteinu, umu exteinu
cu cutic sciipt.
Puiu entendei c usc de uspus (") e
upcstices (`) vumcs iecciiei u um
exemplc que tiutu um iugmentc de
um sciipt que uz umu tiunseinciu de
uiquivcs viu FTP puiu umu muquinu
iemctu (1RenoLonp), nu quul c usuuiic
e 1!u!ano, suu senhu e 1Seedo e c
uiquivc u sei enviudc e 1Aq. Supcnhu
uindu que essus quutic vuiiuveis cium
iecehidus pci umu ictinu unteiici de
leituiu e que esse sciipt se}u muitc usudc
pci diveisus pesscus. Ve}umcs c tiechc
de ccdigc u seguii:
fl +.r |-m00m !+m!| lm||
. lm||
u- |!u!r0 |'-_-o0
L+r,
_-l |^q
!+m!|
Repuie que tuntc us suidus dcs diulc-
gcs dc FTP ccmc cs eiics enccntiudcs
estuc sendc iediiecicnudcs puiu 1lnp111,
c que e umu ccnstiuuc hustunte ccmum
puiu uiquivcs tempciuiics usudcs em
sciipts ccm muis de um usuuiic, pcique
11 e u vuiiuvel que ccntem c numeic dc
piccessc (PlD), que e unicc. Ccm esse
tipc de ccnstiuuc evitu-se que dcis cu
muis usuuiics disputem u pcsse e cs di-
ieitcs schie um uiquivc.
Cusc u tiunseinciu se}u inteiicmpidu
pci um k1!! cu um , ceitu-
mente deixuiu lixc nc discc. exutumen-
te essu u cimu muis ccmum de usc dc
ccmundc lap. Ccmc issc e tiechc de
um sciipt devemcs, lcgc nc inicic dele,
digitui c ccmundc:
l "m f lm|| : -X+l" 1 . 1'
Dessu cimu, cusc hcuvesse umu intei-
iupuc hiuscu (sinuis 1, 2 , 3 cu 15) untes
dc picgiumu enceiiui (nc ex1l dentic dc
ccmundc lap), cu um m ncimul (sinul
u), c uiquivc 1lnp111 seiiu iemcvidc.
Cusc nuc hcuvesse u instiuuc ex1l
nu linhu de ccmundc dc lap, uc nul
du execuuc dessu linhu c uxc dc pic-
giumu ietcinuiiu uc pcntc em que estuvu
quundc ieceheu c sinul que ciigincu u
execuuc desse lap.
Ncte tumhem que c Shell pesquisu u
linhu de ccmundc umu vez quundc c lap
e inteipietudc (e e pci issc que e usuul
cclccu-lc nc inicic dc picgiumu) e ncvu-
mente quundc um dcs sinuis listudcs e
iecehidc. Entuc, nc ultimc exemplc, c vu-
lci de 11 seiu suhstituidc nc mcmentc em
que c ccmundc lap e lidc pelu piimeiiu
vez, }u que us uspus (") nuc pictegem c
ciiuc (1) du inteipietuuc dc Shell.
Se vcc quisesse uzei u suhstituiuc
scmente uc iecehei c sinul, c ccmundc
deveiiu sei cclccudc entie upcstices (`).
Assim, nu piimeiiu inteipietuuc dc lap,
c Shell nuc veiiu c ciiuc (1), us upcstic-
es (`) seiium iemcvidus e, nulmente, c
Shell pcdeiiu suhstituii c vulci du vuiiu-
vel. Nesse cusc, u linhu cuiiu ussim:
l `m f lm|| : -X+l` 1 . 1'
Supcnhu dcis cuscs: vcc tem dcis
sciipts que chumuiemcs de sc1pl1, cu}u
piimeiiu linhu seiu um lap, e sc1plZ,
cclccudc em execuuc pci sc1pl1. Pci
seiem dcis piccesscs dieientes, teiuc
dcis PlDs distintcs.
1 faso: O ccmundc 1lp enccntiu-se
em sc1pl1. Nesse cusc, c uigumentc dc
ccmundc tiup deveiiu vii entie uspus (")
pcique, cusc ccciiesse umu inteiiupuc
( cu ) nc sc1plZ,
u linhu sc seiiu inteipietudu nesse mc-
mentc e c PlD dc sc1plZ seiiu dieiente
dc enccntiudc em 1lnp111 (nuc esqueu
que 11 e u vuiiuvel que ccntem c PlD dc
piccessc utivc),
z faso: O ccmundc 1lp enccntiu-se
em sc1plZ. Nesse cusc, c uigumentc
dc ccmundc lap deveiiu estui entie
upcstices (`), pcis cusc u inteiiupuc
se desse duiunte u execuuc de sc1pl1,
c uiquivc nuc teiiu sidc ciiudc, cusc elu
ccciiesse duiunte u execuuc de sc1plZ,
c vulci de 11 seiiu c PlD desse piccessc,
que ccincidiiiu ccm c de 1lnp111.
O ccmundc lap, quundc executudc
sem uigumentcs, listu cs sinuis que estuc
sendc mcnitciudcs nc umhiente, hem
ccmc u linhu de ccmundc que seiu exe-
cutudu quundc tuis sinuis ciem iecehidcs.
Se u linhu de ccmundcs dc lap ci nulu
(vuziu), issc signicu que cs sinuis espe-
cicudcs devem sei ignciudcs quundc
iecehidcs. Pci exemplc, c ccmundc lap
"" Z especicu que c sinul de inteiiup-
uc () deve sei ignciudc. Nc
ultimc exemplc, ncte que c piimeiic ui-
gumentc deve sei especicudc puiu que c
sinul se}u ignciudc e nuc e equivulente u
escievei lap Z, cu}u nulidude e ietcinui
c sinul Z uc seu estudc pudiuc.

Iahe|a 1: |r|nc|pa|s s|na|s


f4|o Wome 0eta4o pot:
0 |X|! ||r rc|re| ac |c|ere
1 :|C|u| querac c |c|ere
|ece|e ur k1!! hLP
2 :|C||! |rte||u(ec e|c tec|eac
}
, :|Cqu|! |rte||u(ec e|c tec|eac
}
1, :|C!||\ querac c |c|ere
|ece|e ur k1!! cu
k1!! TRl
WWW.||ruxaaz|re.co.br
[ulhc zooy edidc o
Pnro or 8otrqum
LNux Usrr
Se vcc ignciui um sinul, tcdcs cs suh-
shells iiuc ignciu-lc. Pcituntc, se vcc
especicui quul uuc deve sei tcmudu
quundc iecehei um sinul, tcdcs cs suh-
shells iiuc tcmui u mesmu uuc quundc
ieceheiem esse sinul. Ou se}u, cs sinuis
suc uutcmuticumente expcitudcs. Puiu c
sinul mcstiudc (sinul 2), issc signicu que
cs suh-shells seiuc enceiiudcs. Supcnhu
que vcc execute c ccmundc lap "" Z e
entuc execute um suh-shell, que tcinuiu u
executui cutic sciipt ccmc um suh-shell.
Se ci geiudc um sinul de inteiiupuc,
este nuc teiu eeitc nem schie c Shell
piincipul nem schie cs suh-shell pci ele
chumudcs, }u que tcdcs eles ignciuiuc
c sinul.
Em kcin shell (ksh) nuc existe u cpuc
s dc ccmundc ead puiu lei umu senhu.
O que ccstumumcs uzei e usui usui c
ccmundc slly ccm u cpuc eclo, que
inihe u esciitu nu telu ute que se enccn-
tie um slly eclo puiu iestuuiui essu
esciitu. Entuc, se estivessemcs usundc c
inteipietudci ksh, u leituiu du senhu teiiu
que sei eitu du seguinte cimu:
-r0 r "'-rr: "
ll, -r0
-o '-rr
ll, -r0
O pichlemu ccm esse tipc de ccnstiu-
uc e que, cusc c cpeiudci nuc scuhes-
se u senhu, ele picvuvelmente tecluiiu
cu um duiunte
u instiuuc ead puiu desccntinuui c pic-
giumu e, cusc ugisse dessu cimu, c seu
teiminul estuiiu sem ccho. Puiu evitui que
issc uccnteu, c melhci u uzei e:
-r0 r "'-rr: "
l "ll, -r0
-X+l" .
ll, -r0
-o '-rr
ll, -r0
l .
Puiu teiminui esse ussuntc, uhiu um
ccnscle giucc e escievu nc picmpt de
ccmundc c seguinte:
| l "-r0 |uo0u 0 lmrr0 o r-!" .o
Em seguidu, pegue c mcuse e uiiuste-c
de cimu u vuiiui c tumunhc du }unelu
cciiente. Suipiesc' c Shell ciientudc
u eventcs. Muis unzinhc, pcique nuc
ccnsigc iesistii. Escievu istc:
| l "-r0 -" 1/
Em seguidu digite:
| !--
Vcc ucuhcu de ciiui um suh-shell que
iiu dcimii duiunte tis segundcs em
huckgicund. Ac m desse tempc, vcc
ieceheiu u mensugem }u eiu, pcique c
sinul 17 e emitidc u cudu vez em que um
suh-shell teiminu u suu execuuc. Puiu
devclvei esses sinuis uc seu ccmpcitu-
mentc pudiuc, digite: lap 17 Z.
Muitc legul esse ccmundc, ne' Se vcc
descchiii ulgum muteiiul hucunu schie
usc de sinuis, pci uvci me incime pci
emuil, pcique e muitc iuiu u liteiutuiu
schie c ussuntc.
fomaa4o etopts
O ccmundc ctopts iecupeiu us cpes e
seus uigumentcs de umu listu de puiu-
metics de uccidc ccm u sintuxe POSlX.2,
istc e, letius (cu numeics) upcs um sinul
de mencs () seguidus cu nuc de um
uigumentc, nc cusc de scmente letius
(cu numeics), elus pcdem sei ugiupu-
dus. Vcc deve usui esse ccmundc puiu
'utiui' cpes e uigumentcs pussudcs
puiu c seu sciipt.
A sintuxe e elopls cade1adeopcoes
none. A cade1adeopcoes deve explicitui
umu cudeiu de cuiucteies ccm tcdus us
cpes ieccnhecidus pelc sciipt, ussim,
se ele ieccnhece us cpes a b e -c,
cade1adeopcoes deve sei abc. Se vcc
dese}ui que umu cpuc se}u seguidu pci
um uigumentc, pcnhu um sinul de dcis
pcntcs (:) depcis du letiu, ccmc em a:bc.
lssc diz uc getcpts que u cpuc a tem u
cimu a aunenlo. Ncimulmente um
cu muis espucs em hiuncc sepuium c
puiumetic du cpuc, nc entuntc, getcpts
tumhem munipulu puiumetics que vm
ccludcs u cpuc ccmc em aaunenlo.
cade1adeopcoes nuc pcde ccntei um si-
nul de inteiicguuc (?).
O ncme ccnstunte du linhu de sintuxe
ucimu dene umu vuiiuvel que ieceheiu,
u cudu vez que c ccmundc getcpts ci
executudc, c picximc dcs puiumetics
pcsicicnuis e c cclccuiu nu vuiiuvel none.
getcpts cclccu umu inteiicguuc (?) nu
vuiiuvel denidu em ncme se uchui umu
cpuc nuc denidu em cade1adeopcoes
cu se nuc uchui c uigumentc espeiudc
puiu umu deteiminudu cpuc.
Ccmc }u suhemcs, cudu cpuc pussudu
pci umu linhu de ccmundcs tem um in-
dice numeiicc, ussim, u piimeiiu cpuc
estuiu ccntidu em 11, u segundu em 1Z e
ussim pci diunte. Quundc c getcpts chtem
umu cpuc, ele uimuzenu c indice dc
picximc puiumetic u sei piccessudc nu
vuiiuvel 0PT1l.
Quundc umu cpuc tem um uigumentc
usscciudc (indicudc pelc : nu cade1ade
opcoes), getcpts uimuzenu c uigumentc
nu vuiiuvel 0PTAR. Se umu cpuc nuc
pcssuii uigumentc cu se c uigumentc
espeiudc nuc ci enccntiudc, u vuiiuvel
0PTAR seiu 'upugudu' (ccm unsel). O cc-
mundc enceiiu suu execuuc quundc:
Enccntiu um puiumetic que nuc ccme-
u ccm um hien ().
O puiumetic especiul indicu c m
dus cpes.
Quundc enccntiu um eiic (pci exemplc,
umu cpuc nuc ieccnhecidu).
O exemplc du ||staem e meiumente
diduticc, seivindc puiu mcstiui, em um
pequenc iugmentc de ccdigc, c usc ple-
nc dc ccmundc.
LNux Usrr

Pnro or 8otrqum
WWW.||ruxaaz|re.co.br
[ulhc zooy edidc o
Puiu entendei melhci, vumcs executui c sciipt:
| _-l0ll.r r +m-0 q1 q.
_-l0l f-z .+.-! |!!|^ +_u! `r`
|^ -r ``
_-l0l f-z .+.-! |!!|^ +_u! ``
|^ -r `+m-0`
U+-rro0 0 +m-+0 ||1HU1 . _um-rl0
qu- 0L0u o !+rr o- 0mro0 f0+ `q1 q.`
Dessu cimu, sem tei muitc tiuhulhc, sepuiei
tcdus us cpes ccm seus iespectivcs uigumentcs,
deixundc scmente cs puiumetics que cium pussu-
dcs pelc cpeiudci puiu pcsteiici tiutumentc. Repuie
que, se tivessemcs esciitc u linhu de ccmundc ccm
c uigumentc (1npessoa) sepuiudc du cpuc (P),
c iesultudc seiiu exutumente c mesmc, excetc pelc
0PT1l, }u que nesse cusc ele identicu um ccn}un-
tc de tis cpes (cu uigumentcs) e, nc unteiici,
scmente dcis. Ve}u sc:
| _-l0ll.r r +m-0 q1 q.
_-l0l f-z .+.-! |!!|^ +_u! `r`
|^ -r ``
_-l0l f-z .+.-! |!!|^ +_u! ``
|^ -r `+m-0`
U+-rro0 0 +m-+0 ||1HU1 _um-rl0
qu- 0L0u o !+rr o- 0mro0 f0+ `q1 q.`
Repuie, nc exemplc u seguii, que se pussuimcs umu cpuc invulidu u
vuiiuvel 10PTTRA ieceheiu um pcntc de inteiicguuc (?) e u 10PTAR
seiu 'upugudu' (unsel).
| _-l0ll.r f +m-0 q1 q. } ^ 00 f r0 - .!+o
._-l0ll.r: +!!-_! 0l+0r f
_-l0l f-z .+.-! |!!|^ +_u! `.`
|^ -r ``
_-l0l f-z .+.-! |!!|^ +_u! ``
|^ -r `+m-0`
U+-rro0 0 +m-+0 ||1HU1 . _um-rl0
qu- 0L0u o !+rr o- 0mro0 f0+ `q1 q.`
- Me diz umu ccisu: vcc nuc pcdeiiu tei usudc um ccndicicnul ccm
cosc puiu evitui c getcpts'
- Pcdeiiu sim, mus puiu qu' Os ccmundcs estuc ui puiu seiem usudcs.
O exemplc ci diduticc, mus imugine um picgiumu que uceitusse muitus
cpes e cu}cs puiumetics pcdeiium cu nuc estui ccludcs us cpes, sen-
dc que us cpes tumhem pcdeiium cu nuc estui ccludus: iu sei um cuse
ineinul! Ccm getcpts, e sc seguii cs pusscs ucimu.
- . Vendc dessu cimu, uchc que vcc tem iuzuc. pcique eu }u estcu
meic cunsudc ccm tuntu incimuuc ncvu nu minhu
cuheu. Vumcs tcmui u suideiiu cu vcc uindu quei
explicui ulgumu puiticuluiidude dc Shell'
- Nem um nem cutic, eu tumhem }u cunsei mus
hc}e nuc vcu tcmui u suideiiu pcique estcu indc
dui uulu nu UniRlO, que e u piimeiiu univeisidude
edeiul que estu piepuiundc seus uluncs dc cuisc
de giuduuuc em lncimuticu puiu c usc de Sct-
vuie Livie. Mus untes vcu te deixui um pichlemu
puiu te encucui: quundc vcc vuiiu c tumunhc de
umu }unelu dc teiminul, nc centic delu nuc upuiece
dinumicumente, em videc ieveisc, u quuntidude de
linhus e cclunus' Entuc! Eu queic que vcc iepic-
duzu issc usundc u linguugem Shell. Chicc, tiuz
iupidinhc u minhu ccntu! Vcu ccntui ute um e se
vcc nuc ticuxei eu me mundc!
Nuc se esqueu, quulquei duvidu cu ultu de ccmpu-
nhiu puiu um chcpe e sc mundui um emuil puiu ju||o.
reves@a||.co. Vcu upicveitui tumhem puiu mundui
c meu }uhu: digu puiu cs umigcs que quem estivei u
m de uzei um cuisc pciietu de picgiumuuc em
Shell que munde um e-muil puiu ju||o.reves@tecroba||.
co.br puiu incimui-se. Vuleu!
||stagem |: geteptst.sh
01 1 cal eloplsl.sl
0Z ]!1b1n1sl
03
04 ] xecule ass1n:
05 ]
06 ] eloplsl.sl l P1npessoa aq1 aqZ
07 ]
0 ] e nole que as 1n1onaes de lodas as opes so ex1b1das
09 ]
10 ] A cade1a `P:l` d1z que a opo P una opo conp!exa
11 ] e eque un aunenlo e que l una opo s1np!es que no eque
1Z ] aunenlos.
13
14 wl1!e elopls `P:l` 0PTTRA
15 do
16 eclo "elopls 1ez a va1ave! 0PTTRA 1ua! a `10PTTRA`"
17 eclo " 0PTAR el `10PTAR`"
1 done
19 usedup~`exp 10PT1l - 1`
Z0 eclo "1spensando os p1ne1os \10PT1l1 ~ 1usedup aunenlos"
Z1 sl11l 1usedup
ZZ eclo "0 que sobou da !1nla de conandos 1o1 `1^`"
WWW.||ruxaaz|re.co.br
[ulhc zooy edidc o
Pnro or 8otrqum
LNux Usrr
|
ui iupuz, tudc hcm'
- Belezu. Vcc se lemhiu de que du ultimu vez vcc me
pediu puiu uzei um picgiumu que impiimisse dinumi-
cumente, nc centic du telu, u quuntidude de linhus e cclunus
de um teiminul sempie que c tumunhc du }unelu vuiiusse'
Pcis e, eu ute que z, mus mesmc depcis de quehiui muitc u
cuheu u upuinciu nuc ccu iguul.
- Nuc estcu nem ui puiu u upuinciu, c que eu queiiu e que
vcc exeicitusse c que upiendemcs. Me du u ||staem 1 piu eu
vei c que vcc ez.
- Peieitc! Que se dune u upuinciu, depcis vcu te ensinui
uns mucetes puiu melhciu-lu. O que vule e que c picgiumu estu
uncicnundc e estu hem enxutc.
- Pxu, e eu que peidi c muici tempc tentundc descchiii
ccmc uumentui u cnte.
- Deixe issc puiu lu! Hc}e vumcs vei umus ccisus
hustunte inteiessuntes e uteis.
0aa4o aomes aos caaos
Um cutic tipc de pipe e c nomcJ pipc , que tumhem
e chumudc de FlFO. FlFO e um ucinimc de Iirst In
Iirst O0t que se ieeie u picpiiedude em que u cidem
dcs hytes entiundc nc pipe e u mesmu que u du suidu.
O nomc em numed pipe e, nu veidude, c ncme de um
uiquivc. Os uiquivcs tipc numed pipes suc exihidcs
pelc ccmundc ls ccmc quulquei cutic, ccm pcucus
dieienus, ve}u:
| ! ! +-1
w 1 u!+0 o+0 Jr .. .:11 +-1[
c p nu cclunu muis u esqueidu indicu que 111o1
e um numed pipe. O iestc dcs hits de ccnticle de
peimisses, quem pcde lei cu giuvui c pipe, uncic-
num ccmc um uiquivc ncimul. Ncs sistemus muis
mcdeincs umu huiiu veiticul ( | ), cu pipe, nc m dc
ncme dc uiquivc e cutiu dicu e, ncs sistemus LlNUX,
cnde c !s pcde exihii ccies, c ncme dc uiquivc e
esciitc em veimelhc pci pudiuc.
A ccrversa esta bca, mas uma hcra eles tem que sair ac bar. ha ultima
arte ac rcssc ac, falamcs scbre ies e sircrcrita(ac ertre rccesscs.
ror Ito Crznr Nrvrs
furse 6e he|| cr|pt
ape de betequIm
arte naI
D
a
v
e

H
a
m
i
l
t
o
n


w
w
w
.
s
x
c
.
h
u
||stagem 1: tamte|a.sh
01 ]!1b1n1basl
0Z ]
03 ] Lo!oca no cenlo da le!a, en v1deo eveso,
04 ] a quanl1dade de co!unas e !1nlas
05 ] quando o lananlo da le!a el a!leado.
06 ]
07 lap luda Z ] Z ~ s1na! eado pe!a nudanca no lananlo
0 ] da le!a e luda el a 1uncao que 1aa 1sso.
09
10 o!d~11lpul bo!d; ] lodo de en1ase
11 Rev~11lpul ev; ] lodo de v1deo eveso
1Z lon~11lpul s0; ] Reslaua a le!a ao padao de1au!l
13
14 luda 1;
15 |
16 c!ea
17 Lo!s~11lpul co!s;
1 1ns~11lpul !1nes;
19 lpul cup 11111ns 1 Z;; 1111Lo!s 7; 1 Z;; ] Lenlo da le!a
Z0 eclo 1o!d1Rev1Lo!s 7 11ns1lon
Z1 |
ZZ
Z3 c!ea
Z4 ead n1 p "lude o lananlo da le!a ou lec!e a!o paa len1na "
LNux Usrr

Pnro or 8otrqum
WWW.||ruxaaz|re.co.br
ugcstc zooy edidc
Ncs sistemus muis untigcs, cs numed pipes suc ciiudcs pelc
utilituiic mknoJ, ncimulmente situudc nc diietciic 1elc. Ncs
sistemus muis mcdeincs, u mesmu tuieu e eitu pelc mkjjo,
que iecehe um cu muis ncmes ccmc uigumentc e ciiu pipes
ccm esses ncmes. Pci exemplc, puiu ciiui um numed pipe ccm
c ncme p1pe1, digite:
| mf+f0 +-1
Ccmc sempie, u melhci cimu de mcstiui ccmc ulgc uncicnu
e dundc exemplcs. Supcnhu que ncs tenhumcs ciiudc c numed
pipe mcstiudc unteiicimente. Vumcs ugciu tiuhulhui ccm duus
sesses cu dcis ccnscles viituuis. Em um deles digite:
| ! ! +-1
e em cutic uu:
| l +-1
Vcilu! A suidu dc ccmundc executudc nc piimeiic ccnscle
ci exihidu nc segundc. Ncte que u cidem em que cs ccmundcs
ccciieium nuc impcitu.
Se vcc piestcu utenuc, iepuicu que c piimeiic ccmundc
executudc puieciu tei 'penduiudc'. lstc uccntece pcique u cutiu
pcntu dc pipe uindu nuc estuvu ccnectudu, e entuc c sistemu
cpeiucicnul suspendeu c piimeiic piccessc ute que c segundc
'uhiisse' c pipe. Puiu que um piccessc que usu pipe nuc que
em mcdc de espeiu, e necessuiic que em umu pcntu dc pipe
hu}u um piccessc 'ulunte' e nu cutiu um 'cuvinte'. Nc exemplc
unteiici, c !s eiu c 'ulunte' e c cal eiu c 'cuvinte'.
Um usc muitc util dcs numed pipes e peimitii que picgiumus
sem nenhumu ieluuc pcssum se ccmunicui entie si. Os numed
pipes tumhem suc usudcs puiu sincicnizui piccesscs, }u que
em um deteiminudc pcntc vcc pcde cclccui um piccessc puiu
'cuvii' cu puiu 'ului' em um deteiminudc numed pipe e ele dui
sc suiiu se cutic piccessc 'ului' cu 'cuvii' uquele pipe.
Vcc }u deve tei nctudc que essu eiiumentu e ctimu puiu
sincicnizui piccesscs e uzei hlcqueic em uiquivcs de cimu u
evitui peidu,cciiupuc de dudcs devidc u utuulizues simul-
tuneus (u umcsu concorrcncio). Vumcs vei ulguns exemplcs
puiu ilustiui estes cuscs.
!|actoa|tao 4e ptocessos
Supcnhu que vcc dispuie puiulelumente dcis picgiumus (pic-
cesscs), chumudcs proromo1 e proromo2, cu}cs diugiumus de
hlcccs de suus ictinus suc ccmc mcstiudc nu ta|e|a 1. Os dcis
piccesscs suc dispuiudcs em puiulelc e, nc hlccc 1 dc picgiumu1,
us tis clussicues suc dispuiudus du seguinte muneiiu:
f0 ^q +r h+_!+!-1 h+_!+!-. h+_!+!-
o0
+f 0l |^q
lr-r
|ro.
-!-
|ro-
L-
f+
o0r-
-r0 ||ro +-1
{ ||ro -
|
-r0 !0 ourl- !+f+0 o0 qu+.0
-X+l 1
|
.
Assim sendc, c ccmundc 11 testu cudu clussicuuc que estu
sendc eetuudu. Cusc ccciiu quulquei pichlemu, us clussicues
seguintes seiuc uhcitudus, umu mensugem ccntendc u stiing
pae e enviudu pelc pipe1 e picgiumu1 e desccntinuudc ccm
ccdigc de suidu sinulizundc um enceiiumentc uncimul.
Enquuntc c picgiumu1 executuvu c seu piimeiic hlccc (us
clussicues), c picgiumu2 executuvu c seu hlccc 1, picces-
sundc us suus ictinus de uheituiu e menu puiulelumente uc
picgiumu1, gunhundc dessu cimu um hcm tempc. O iugmentc
de ccdigc dc picgiumu2 u seguii mcstiu u tiunsiuc dc seu
hlccc 1 puiu c hlccc 2:
ll +-1
+f { |l .
lr-r
.
0l+r o- +m-0
Iahe|a 1
|totama1 |totamaz
8|oco 1 |ct|re ae c|ess|fce(ec ae t|es |eraes e|u|.cs |ct|re ae e|e|tu|e e e|e(ec ae rerus
8|oco z Ace|tcs fre|s e erce||erertc |r|essec acs aeacs c|ess|fceacs e|c |c|ere 1
WWW.||ruxaaz|re.co.br
ugcstc zooy edidc
Pnro or 8otrqum
LNux Usrr
.
-!-
-X+l 1
f+
Apcs u execuuc de seu piimeiic hlccc, c picgiumu2 pussuiu
u 'cuvii' c pipe1, cundc puiudc ute que us clussicues dc
Picgiumu1 teiminem, testundc u seguii u mensugem pussudu
pelc pipe1 puiu decidii se cs uiquivcs estuc integics puiu seiem
impiesscs cu se c picgiumu deveiu sei desccntinuudc. Dessu
cimu e pcssivel dispuiui picgiumus de cimu ussincicnu e
sincicnizu-lcs quundc necessuiic, gunhundc hustunte tempc
de piccessumentc.
8|oqae|o 4e atqa|vos
Supcnhu que vcc tenhu esciitc um CCl (Common Cotcuoy Intcr
jocc) em Shell Sciipt puiu ccntui quuntcs hits umu deteiminudu
URL iecehe e u ictinu de ccntugem estu du seguinte muneiiu:
h+l"|l _-.r+l . o-.ru!!" [[ h+l
-r0 |h+lh+l _-.r+l
Dessu cimu, se u puginu iecehei dcis cu muis ucesscs simul-
tunecs, um cu muis pcdeiu sei peididc, hustundc que c segundc
ucessc se}u eitc upcs u leituiu dc uiquivc pae.l1ls e untes
du suu giuvuuc, istc e, upcs c piimeiic ucessc tei executudc u
piimeiiu linhu dc sciipt e untes de executui u segundu.
Entuc, c que uzei' Puiu iesclvei c pichlemu de ccncci-
inciu, vumcs utilizui um numed pipe. Ciiumcs c sciipt nu
||staem z que seiu c duemcn que ieceheiu tcdcs cs pedidcs
puiu inciementui c ccntudci. Ncte que ele vui sei usudc pci
quulquei puginu nc ncssc site que piecise de um ccntudci.
Ccmc upenus este sciipt ulteiu cs uiquivcs, nuc existe c pic-
hlemu de ccncciinciu.
Este sciipt seiu um Jocmon, istc e, icduiu em segundc plunc.
Quundc umu puginu sciei um ucessc, elu escieveiu u suu URL
nc pipe. Puiu testui, execute este ccmundc:
-r0 "l-l-_+r.rlm!" lm+-0rlo0
Puiu evitui eiics, em cudu puginu u que quiseimcs udicicnui
c ccntudci uciescentumcs u seguinte linhu:
!}-X- mo"-r0 |!U!'|U1 lm+-0rlo0"
Ncte que u vuiiuvel 1R0LSTLR1 ccntem c ncme dc uiquivc
que c hicvsei iequisitcu. Esse exemplc e iutc de umu ticcu
de ideius ccm c umigc e mestie em Shell Thchius Suluzui Tie-
visun, que escieveu c sciipt e cclcccu-c em seu excelente site
(WWW.tbob|as.or). Accnselhc u tcdcs cs que queiem upiendei
Shell u dui umu pussudu lu.
Vcc pensu que c ussuntc numed pipes estu esgctudc' Engu-
ncu-se. Vcu mcstiui um usc dieiente u puitii de ugciu.
!a|st|ta|o 4e ptocessos
Vcu mcstiui que c Shell tumhem usu cs numed
pipes de umu muneiiu hustunte singului, que e u
suhstituiuc de piccesscs (proccss s0hstit0tion). Umu
suhstituiuc de piccesscs ccciie quundc vcc pe
um cu um ` giududc nu iente dc puintese du
esqueidu. Digitui c ccmundc:
| l ! !
Resultuiu nc ccmundc !s ! executudc em um
suh-shell, ccmc ncimul, pciem iediiecicnuiu u suidu
puiu um numed pipe tempciuiic, que c Shell ciiu,
ncmeiu e depcis iemcve. Entuc c cal teiu um ncme
de uiquivc vulidc puiu lei (que seiu este numed pipe
e cu}c dispcsitivc lcgicc usscciudc e 1dev11d163).
O iesultudc e u mesmu suidu que u geiudu pelc
!s !, pciem dundc um cu muis pusscs que c usuul.
Piu que simplicui'
Ccmc pcdeiemcs ncs ceiticui dissc' Fucil. Ve}u
c ccmundc u seguii:
||stagem z: centah|ts.sh
01 ]!1b1n1basl
0Z
03 P1P~"1lnp1p1peconlado" ] aqu1vo naned p1pe
04 ] d1 onde seao co!ocados os aqu1vos conladoes de cada pa1na
05 1R~"1va1www1conlado"
06
07 j p "1P1P" || nk111o "1P1P"
0
09 wl1!e :
10 do
11 1o LR 1n 11cal 1P1P;
1Z do
13 !1~"11R111eclo 1LR | sed `s,.^1,,`;"
14 ] quando oda cono daenon conenle a pox1na !1nla
15 eclo "aqu1vo ~ 1!1"
15
17 n~"11cal 1!1 Z` 1dev1nu!!;" || n~0
1 eclo 111n~n+1;; ` "1!1"
19 done
Z0 done
LNux Usrr

Pnro or 8otrqum
WWW.||ruxaaz|re.co.br
ugcstc zooy edidc
| ! ! l
!wX 1 r-.- r-.- h4 ^u_ ./ 1.:.h o-.foh +-:{/'
. Reulmente e um numed pipe. Vcc deve estui pensundc
que istc e umu muluquice de neid, ne' Entuc supcnhu que vcc
tenhu dcis diietciics, chumudcs d1 e d1.bkp, e dese}u suhei
se cs dcis suc iguuis. Bustu ccmpuiui c ccnteudc dcs diietciics
ccm c ccmundc cmp:

| m l o+ l o+.L [[ -r0 Lu fuo0
cu, melhci uindu:
| m l o+ l o+.L o-.ru!! [[ -r0 Lu fuo0
Este e um exemplc meiumente diduticc, mus suc tuntcs cs
ccmundcs que picduzem muis de umu linhu de suidu que ele
seive ccmc guiu puiu cutics. Eu queic geiui umu listugem dcs
meus uiquivcs, numeiundc-cs, e uc nul mcstiui c tctul de
uiquivcs nc diietciic cciiente:
wr+!- -o q
o0
+ } +m r0 -r r--+0 +r++!+z +
-r0 "|+: |q"
o0r- !
-r0 "H0 o+-l0+0 0-rl- wo -X+l-m |+ qu+.0"
Tu legul, eu sei que existem cutius cimus de executui u
mesmu tuieu. Usundc c ccmundc vhile, u cimu muis ccmum
de iesclvei esse pichlemu seiiu:
! [ wr+!- -o q
o0
+ } +m r0 -r r--+0 +r++!+z +
-r0 "|+: |q"
o0r-
-r0 "H0 o+-l0+0 0-rl- wo -X+l-m |+ qu+.0"
Ac executui c sciipt, tudc puiece estui hem, pciem nc ccmun-
dc eclo upcs c done, vcc veiu que c vulci de 11 ci peididc.
lssc deve-se uc utc destu vuiiuvel estui sendc inciementudu em
um suh-shell ciiudc pelc pipe (|) e que teimincu nc ccmundc
done, levundc ccm ele tcdus us vuiiuveis ciiudus nc seu inteiici
e us ulteiues lu eitus pci vuiiuveis ciiudus exteinumente.
Scmente puiu te mcstiui que umu vuiiuvel ciiudu ciu dc
suh-shell e ulteiudu em seu inteiici peide us ulteiues eitus
quundc c suh-shell se enceiiu, execute c sciipt u seguii:
}!L+rLr
!1'|"" } +o r0 r-!! +r+!
! [ wr+!- -o !1!! } 1r++0 o0 uLr-!!
o0
!1'|"|!1!! |!1'|" } ^!l-o o-rl0 o0 uLr-!!
o0r- } !+m o0 uLr-!!
-r0 |!1'|
Nc inicic deste exemplc eu disse que ele eiu meiumente
diduticc pcique existem cimus melhcies de uzei u mesmu
tuieu. Ve}u sc estus duus:
| ! [ !r
cu entuc, usundc u picpiiu suhstituiuc de piccesscs:
| l r !
Um ultimc exemplc: vcc dese}u ccmpuiui aq1 e aqZ usundc
c ccmundc conn, mus esse ccmundc necessitu que cs uiquivcs
este}um clussicudcs. Entuc u melhci cimu de piccedei e:
| 0mm 0l q1 0l q.
Essu cimu evitu que vcc uu us seguintes cpeiues:
| 0l q1 lm0l1
| 0l q. lm0l.
| 0mm lm0l1 lm0l.
| m f lm0l1 lm0l.
Pesscul, c ncssc pupc de hctequim chegcu uc m. Cuiti muitc
e iecehi diveiscs elcgics pelc tiuhulhc desenvclvidc uc lcngc
de dcze meses e, c melhci de tudc, z muitus umizudes e tcmei
muitcs chcpes de giuu ccm cs leitcies que enccntiei pelcs
ccngiesscs e pulestius que undc uzendc pelc ncssc queiidc
Biusil. Me despec de tcdcs mundundc um giunde uhiuc ucs
huihudcs e hei}cs us meninus e ugiudecendc cs muis de 1uu
emuils que iecehi, tcdcs elcgicscs e devidumente iespcndidcs.
suude de tcdcs ncs: Tim, Tim.
- Chicc, echu u minhu ccntu pcique vcu piu cusu!
5
o
s
r
r

o

n
u
t
o
r
!o||c te/c |e.e. e /nc||.|c Je :oc|e Je :|.|emc. Je.Je 1{c{ e
|coc|nc :cm un|s Je.Je 1{3, ocnJc c||:|co Jc Je.en.c|.|
men|c Jc :0\, om .|.|emc cec:|cnc| .|m||c cc un|s cJo/|Jc
e|c tcoc tcmo|cJce. f co|c Jc ||.c ||c|ere(ec :|e||
||ruz, oo||:cJc e|c eJ||cc 3c.c| |cJe .e :cn|c|cJc nc
emc|| o||cne.e.mc||:cm
WWW.||ruxaaz|re.co.br
ugcstc zooy edidc
Pnro or 8otrqum
LNux Usrr

You might also like