Sei sulla pagina 1di 16

.:TWikiBarPapo001 > TWikiBar > Aqui temos um _livro livre_ e comp...

http://br.gnome.org/TWikiBar/TWikiBarPapo001

Aqui temos um livro livre e completo sobre Shell


Os sedentos do "saber livre" so muito benvindos.

[ 15 Feb 2011 - 13:47 ] Links Amigos BR-Linux Viva o Linux Dicas-L Aurelio Thobias TWIKI BSICO Pgina Inicial ltimas Alteraes ndice Procura Estatsticas de Uso Aviso de Atualizao Mapa do Site TWIKI AVANADO Registre-se Configuraes Gerais Quem Somos Regras de Formatao Biblioteca Grfica Carinhas Grficas PROJETO GRFICO Pr Tpico Ps Tpico Menu Lateral Menu de Navegao CSS Utilizado Botes Especiais Indica Onde Estamos Cabealho Padro Copy Right/Left Voc est aqui: TWikiBar > BatePapos > TWikiBarPapo001 Controles: V.39] - ltima Atualizao: [21 Mar 2010 -

Papo de Botequim - Parte I


Dilogo entreouvido entre um Linuxer e em empurrador de mouse: O Ambiente Linux O Ambiente Shell Uma Rapidinha nos Principais Sabores de Shell Bourne Shell (sh) Korn Shell (ksh) Boune Again Shell (bash) C Shell (csh) Explicando o funcionamento do Shell Exame da Linha de Comandos Atribuio Comando Resoluo de Redirecionamentos Substituio de Variveis Substituio de Meta Caracteres Passa Linha de Comando para o kernel Decifrando a Pedra da Roseta Caracteres para remoo do significado Apstrofo ou plic (') Contrabarra ou Barra Invertida (\) Aspas (") Caracteres de redirecionamento Redirecionamento da Sada Padro Redirecionamento da Sada de Erro Padro Redirecionamento da Entrada Padro Here Document Redirecionamento de Comandos Caracteres de Ambiente

Dilogo entreouvido entre um Linuxer e em empurrador de mouse:


- Quem o Bash? - O Bash o filho mais novo 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 tempo. Desde que se decidiu a usar

1 de 16

15/2/2011 12:57

.:TWikiBarPapo001 > TWikiBar > Aqui temos um _livro livre_ e comp...

http://br.gnome.org/TWikiBar/TWikiBarPapo001

aquele sistema operacional que voc tem que dar dez boots por dia e no tem domnio nenhum sobre o que esta acontecendo no seu computador. Mas deixa isso pr l, vou te explicar o que Shell e os componentes de sua famlia e ao final da explanao voc dir: "Meu Deus do Shell! Porque eu no optei pelo Linux antes?".

O Ambiente Linux
Para voc entender o que e como funciona o Shell, primeiro vou te mostrar como funciona o ambiente em camadas do Linux. D uma olhada no grfico abaixo:

Neste grfico d para ver que a camada de hardware a mais profunda e formada pelos componentes fsicos do seu computador. Envolvendo esta, vem a camada do kernel que o cerne do Linux, seu ncleo, e quem bota o hardware para funcionar, fazendo seu gerenciamento e controle. Os programas e comandos que envolvem o kernel, dele se utilizam para realizar as tarefas aplicativas para que foram desenvolvidos. Fechando tudo isso vem o Shell que leva este nome porque em ingls, Shell significa concha, carapaa, isto , fica entre o usurio 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 kernel que o que interessa a todo aplicativo, necessria a filtragem do Shell, vamos entender como ele funciona de forma a tirar o mximo proveito das inmeras facilidades que ele nos oferece. O Linux por definio um sistema multiusurio - no podemos nunca esquecer disto e para permitir o acesso de determinados usurios e barrar a entrada de outros, existe um arquivo chamado /etc/passwd que alm fornecer dados para esta funo de "leo-de-chcara" do Linux, tambm prov informaes para o login daqueles que passaram por esta

2 de 16

15/2/2011 12:57

.:TWikiBarPapo001 > TWikiBar > Aqui temos um _livro livre_ e comp...

http://br.gnome.org/TWikiBar/TWikiBarPapo001

primeira barreira. O ltimo campo de seus registros informa ao sistema qual Shell a pessoa vai receber ao se "logar" (ARGH!!!).

Quando eu disse que o ltimo campo do


/etc/passwd informa ao sistema qual o

Shell que o usurio vai receber ao se "logar", para ser interpretado ao p-daletra, isto , se neste campo do seu registro estiver prog, a pessoa ao acessar o sistema receber a tela de execuo do programa prog e ao terminar a sua execuo ganhar imediatamente um logout. Imagine o quanto se pode incrementar a segurana com este simples artifcio.

Lembra que eu te falei de Shell, famlia, irmo? Pois , vamos comear a entender isto: o Shell, que se vale da imagem de uma concha envolvendo o sistema operacional propriamente dito, o nome genrico para tratar os filhos desta idia que, ao longo dos anos de existncia do sistema operacional Unix foram aparecendo. Atualmente existem diversos sabores de Shell, dentre estes eu destaco o sh (Bourne Shell), o ksh (Korn Shell), bash (Bourne Again Shell) e o csh (C Shell).

Uma Rapidinha nos Principais Sabores de Shell


Bourne Shell (sh)
Desenvolvido por Stephen Bourne da Bell Labs (da AT&T onde tambm foi desenvolvido o Unix), este foi durante muitos anos o Shell default do sistema operacional Unix. tambm chamado de Standard Shell por ter sido durante vrios anos o nico e at hoje o mais utilizado at porque ele foi portado para todos os ambientes Unix e distros Linux.

Korn Shell (ksh)


Desenvolvido por David Korn, tambm da Bell Labs, um superset do sh, isto , possui todas as facilidades do sh e a elas agregou muitas outras. A compatibilidade total com o sh vem trazendo muitos usurios e programadores de Shell para este ambiente.

Boune Again Shell (bash)


Este o Shell mais moderno e cujo nmero de adeptos mais cresce em todo o mundo, seja por ser o Shell default do Linux, seu sistema operacional hospedeiro, seja por sua grande diversidade de comandos, que incorpora inclusive diversos instrues caractersticas do C Shell.

C Shell (csh)
Desenvolvido por Bill Joy da Berkley University o Shell mais utilizado em ambientes *BSD e Xenix. A estruturao de seus comandos bem similar da linguagem C. Seu grande pecado foi ignorar a compatibilidade com o sh, partindo por um caminho prprio.

3 de 16

15/2/2011 12:57

.:TWikiBarPapo001 > TWikiBar > Aqui temos um _livro livre_ e comp...

http://br.gnome.org/TWikiBar/TWikiBarPapo001

Alm destes Shells existem outros, mas irei falar contigo somente sobre os trs primeiros, tratando-os genericamente por Shell e assinalando as especificidades de cada um que porventura hajam.

Explicando o funcionamento do Shell


O Shell o primeiro programa que voc ganha ao se "logar" no Linux. ele que vai resolver um monte de coisas de forma a no onerar o kernel com tarefas repetitivas, aliviando-o para tratar assuntos mais nobres. Como cada usurio possui o seu prprio Shell interpondo-se entre ele e o Linux, o Shell quem interpreta os comandos que so teclados e examina as suas sintaxes, passando-os esmiuados para execuo. - pa! Esse negcio de interpreta comando no tem nada a haver com interpretador no, n? - Tem sim, na verdade o Shell um interpretador (ou ser intrprete) que traz consigo uma poderosa linguagem com comandos de alto nvel, que permite construo de loops (laos), de tomadas de deciso e de armazenamento de valores em variveis, como vou te mostrar. Vou te explicar as principais tarefas que o Shell cumpre, na sua ordem de execuo. Preste ateno nesta ordem porque ela fundamental para o entendimento do resto do nosso bate papo.

Exame da Linha de Comandos


Neste exame o Shell identifica os caracteres especiais (reservados) que tm significado para interpretao da linha, logo aps verifica se a linha passada uma atribuio ou um comando.

Atribuio
Se o Shell encontra dois campos separados por um sinal de igual (=) sem espaos em branco entre eles, identifica esta seqncia como uma atribuio. Exemplos

Neste exemplo o Shell identificou o ls como um programa e o linux como um parmetro passado para o programa ls.

Neste caso, por no haver espaos em branco (j d para notar que o branco um dos caracteres reservados) o Shell identificou uma atribuio e colocou 1000 na varivel valor.

4 de 16

15/2/2011 12:57

.:TWikiBarPapo001 > TWikiBar > Aqui temos um _livro livre_ e comp...

http://br.gnome.org/TWikiBar/TWikiBarPapo001

Jamais Faa:

Neste caso, o Bash achou a palavra valor isolada por brancos e julgou que voc estivesse mandando executar um programa chamado valor, para o qual estaria passando dois parmetros: = e 1000.

Comando
Quando uma linha digitada no prompt do Linux, ela dividida em pedaos separados por espao em branco: o primeiro pedao o nome do programa que ter sua existncia pesquisada; identifica em seguida, nesta ordem, opes/parmetros, redirecionamentos e variveis. Quando o programa identificado existe, o Shell verifica as permisses dos arquivos envolvidos (inclusive o prprio programa), dando um erro caso voc no esteja credenciado a executar esta tarefa.
Resoluo de Redirecionamentos

Aps identificar os componentes da linha que voc teclou, o Shell parte para a resoluo de redirecionamentos. O Shell tem incorporado ao seu elenco de vantagens o que chamamos de redirecionamento, que pode ser de entrada (stdin), de sada (stdout) ou dos erros (stderr), conforme vou te explicar a seguir.
Substituio de Variveis

Neste ponto, o Shell verifica se as eventuais variveis (parmetros comeados por $), encontradas no escopo do comando, esto definidas e as substitui por seus valores atuais.
Substituio de Meta Caracteres

Se algum metacaractere (*, ? ou []) foi encontrado na linha de comando, neste ponto ele ser substitudo por seus possveis valores. Supondo que o nico arquivo no seu diretrio corrente comeado pela letra n seja um diretrio chamado nomegrandeprachuchu, se voc fizer:

Como at aqui quem esta trabalhando a sua linha o Shell e o comando (programa) cd ainda no foi executado, o Shell transforma o n* em
nomegrandeprachuchu e o comando cd ser executado com sucesso.

Passa Linha de Comando para o kernel

Completadas as tarefas anteriores, o Shell monta a linha de comandos, j com todas as substituies feitas, chama o kernel para execut-la em um

5 de 16

15/2/2011 12:57

.:TWikiBarPapo001 > TWikiBar > Aqui temos um _livro livre_ e comp...

http://br.gnome.org/TWikiBar/TWikiBarPapo001

novo Shell (Shell filho), ganhando um nmero de processo (PID ou P rocess


ID entification) e permanece inativo, tirando uma soneca, durante a

execuo do programa. Uma vez encerrado este processo (juntamente com o Shell filho), recebe novamente o controle e, exibindo um prompt, mostra que est pronto para executar outros comandos.

Decifrando a Pedra da Roseta


Para tirar aquela sensao que voc tem quando v um script Shell, que mais parece uma sopa de letrinhas ou um hierglifo vou lhe mostrar os principais caracteres especiais para que voc saia por ai como o Jean-Franois Champollion decifrando a Pedra da Roseta (d uma "googlada" para descobrir quem este cara, acho que vale a pena).

Caracteres para remoo do significado


isso mesmo, quando no desejamos que o Shell interprete um caractere especial, devemos "escond-lo" dele. Isso pode ser feito de trs formas distintas:

Apstrofo ou plic (')


Quando o Shell v uma cadeia de caracteres entre apstrofos ('), ele tira os apstrofos da cadeia e no interpreta seu contedo.

No primeiro caso o Shell "expandiu" o asterisco e descobriu o arquivo


linuxmagazine para listar. No segundo, os apstrofos inibiram a

interpretao do Shell e veio a resposta que no existe o arquivo linux*.

Contrabarra ou Barra Invertida (\)


Idntico 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) que alguns sabores de Unix permitem - e deseja remov-lo. Se voc fizesse:

Voc estaria fazendo a maior encrenca, pois o rm removeria todos os arquivos do diretrio corrente. A melhor forma de fazer o pretendido :

Desta forma, o Shell no interpretaria o asterisco, e em consequncia no faria a sua expanso.

6 de 16

15/2/2011 12:57

.:TWikiBarPapo001 > TWikiBar > Aqui temos um _livro livre_ e comp...

http://br.gnome.org/TWikiBar/TWikiBarPapo001

Faa a seguinte experincia cientfica:

Viu a diferena? Ento no precisa explicar mais.

Aspas (")
Exatamente igual ao apstrofo 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 o significado de cada um.

Caracteres de redirecionamento
A maioria dos comandos tem uma entrada, uma sada e pode gerar erros. Esta entrada chamada Entrada Padro ou stdin e seu default o teclado do terminal. Analogamente, a sada do comando chamada Sada Padro ou stdout e seu default a tela do terminal. Para a tela tambm so enviadas por default as mensagens de erro oriundas do comando que neste caso a chamada Sada de Erro Padro ou stderr. Veremos agora como alterar este estado de coisas. Vamos fazer um programa gago. Para isto faa:

O cat uma instruo que lista o contedo do arquivo especificado para a Sada Padro (stdout). Caso a entrada no seja definida, ele espera os dados da stdin. Ora como eu no especifiquei a entrada, ele est esperando-a pelo teclado (Entrada Padro) e como tambm no citei a sada, o que eu teclar ir para a tela (Sada Padro) fazendo desta forma, como eu havia proposto um programa gago. Experimente!

Redirecionamento da Sada Padro


Para especificarmos a sada de um programa usamos o > (maior que) ou o
>> (maior, maior) seguido do nome do arquivo para o qual se deseja

mandar a sada. Vamos transformar o programa gago em um editor de textos (que pretenso heim!).

7 de 16

15/2/2011 12:57

.:TWikiBarPapo001 > TWikiBar > Aqui temos um _livro livre_ e comp...

http://br.gnome.org/TWikiBar/TWikiBarPapo001

O cat continua sem ter a entrada especificada, 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 teclado esta indo para dentro de Arq, de forma que fizemos o editor de textos mais curto e ruim do planeta. Se eu fizer novamente:

Os dados contidos em Arq sero perdidos, j que antes do redirecionamento o Shell criar um Arq vazio. Para colocar mais informaes no final do arquivo eu deveria ter feito:

Como j havia lhe 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 "esvazia" este arquivo e depois manda o comando para execuo, desta forma voc acabou de perder o contedo do seu querido arquivo.

Com isso d para notar que o >> (maior maior) serve para inserir texto no final do arquivo.

Redirecionamento da Sada de Erro Padro


Assim como o default do Shell receber os dados do teclado e mandar as sadas para a tela, os erros tambm sero enviados para a tela se voc no especificar para onde devero ser enviados. Para redirecionar os erros use
2> SaidaDeErro. Note que entre o nmero 2 e o sinal de maior (>) no

existe espao em branco.

Preste ateno! No confunda >> com 2>. O primeiro anexa dados ao final de um arquivo, e o segundo redireciona a Sada de Erro Padro (stderr) para um arquivo que est sendo designado. Isso importante!

Suponha que durante a execuo de um script voc pode, ou no (dependendo do rumo tomado pela execuo do programa), ter criado um arquivo chamado /tmp/seraqueexiste$$. Para no ficar sujeira no seu disco, ao final do script voc colocaria uma linha:

8 de 16

15/2/2011 12:57

.:TWikiBarPapo001 > TWikiBar > Aqui temos um _livro livre_ e comp...

http://br.gnome.org/TWikiBar/TWikiBarPapo001

Caso o arquivo no existisse seria enviado para a tela uma mensagem de erro. Para que isso no acontea deve-se fazer:

Sobre o exemplo que acabamos de ver tenho duas dicas a dar:

Dica # 1 O $$ contm o PID, isto , o nmero do seu processo. Como o Linux multiusurio, bom anexar sempre o $$ ao nome dos dos arquivos que sero usados por vrias pessoas para no haver problema de propriedade, isto , caso voc batizasse o seu arquivo simplesmente como seraqueexiste, o primeiro que o usasse (criando-o ento) seria o seu dono e todos os outros ganhariam um erro quando tentassem gravar algo nele.

Para que voc teste a Sada de Erro Padro direto no prompt do seu Shell, vou dar mais um exemplo. Faa:

Neste exemplo, vimos que quando fizemos um ls em naoexiste, ganhamos uma mensagem de erro. Aps, redirecionarmos a Sada de Erro Padro para arquivodeerros e executarmos o mesmo comando, recebemos somente o prompt na tela. Quando 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. Faa este teste ai.

Dica # 2 - Quem esse tal de /dev/null? - Em Unix existe um arquivo fantasma. Chama-se /dev/null. Tudo que mandado para este arquivo some. Assemelha-se a um Buraco Negro. No caso do exemplo, como no me interessava guardar a possvel mensagem de erro oriunda do comando rm, redirecionei-a para este arquivo.

interessante notar que estes caracteres de redirecionamento so cumulativos, isto , se no exemplo anterior fizssemos:

9 de 16

15/2/2011 12:57

.:TWikiBarPapo001 > TWikiBar > Aqui temos um _livro livre_ e comp...

http://br.gnome.org/TWikiBar/TWikiBarPapo001

a mensagem de erro oriunda do ls seria anexada ao final de


arquivodeerros.

Redirecionamento da Entrada Padro


Para fazermos o redirecionamento da Entrada Padro usamos o < (menor que). - E pr que serve isso? - voc vai me perguntar. - Deixa eu te 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 da tela de forma a tornar impossvel a correo de uma frase anterior onde, sem querer, escreveu um "ns vai", voc edita um arquivo com o contedo da mensagem e aps umas quinze verificaes sem constatar nenhum erro, decide envi-lo e para tal faz:

O teu chefe ento receber o contedo do arquivocommailparaochefe.

Here Document
Um outro tipo de redirecionamento muito louco que o Shell te permite o chamado here document. Ele representado por << (menor menor) 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 $Usurio $Senha binary get arquivoremoto fimftp

Neste pedacinho de programa temos um monte de detalhes interessantes: 1. As opes que usei para o ftp (-ivn) servem para ele ir listando tudo que est acontecendo (v de verbose), para no perguntar se voc tem certeza de que deseja transmitir cada arquivo (i de interactive), e finalmente a opo n serve para dizer ao ftp para ele no solicitar o usurio e sua senha, pois esses sero informados pela instruo especfica (user); 2. Quando eu usei o << fimftp, estava dizendo o seguinte para o intrprete: - Olhe aqui Shell, no se meta em nada a partir daqui at encontrar o

10 de 16

15/2/2011 12:57

.:TWikiBarPapo001 > TWikiBar > Aqui temos um _livro livre_ e comp...

http://br.gnome.org/TWikiBar/TWikiBarPapo001

label fimftp. Voc no entenderia nada, j que so instrues especficas do comando ftp e voc no entende nada de ftp. Se fosse s isso seria simples, mas pelo prprio exemplo d para ver que existem duas variveis ($Usurio e $Senha), que o Shell vai resolver antes do redirecionamento. Mas a grande vantagem desse tipo de construo que ela permite que comandos tambm sejam interpretados dentro do escopo do here document, o que tambm contraria o que acabei de dizer. Logo a seguir explico como esse negcio funciona. Agora ainda no d, est faltando ferramenta. 3. 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 esse fragmento de cdigo e colocados respectivamente nas duas variveis: $Usurio e $Senha. 4. 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 interpretado para saber se est em ASCII, EBCDIC, ... 5. O get arquivoremoto diz ao ftp para pegar esse arquivo em
hostremoto e traz-lo para o nosso host local. Se fosse para mandar o

arquivo, usaramos o comando put.

Um erro muito freqente 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.

- Est bem, est bem! Eu sei que dei uma viajada e entrei pelos comandos do ftp, fugindo ao nosso assunto que Shell, mas como sempre bom aprender e raro as pessoas estarem disponveis para ensinar...

Redirecionamento de Comandos
Os redirecionamentos que falamos at aqui sempre se referiam a arquivos, isto mandavam para arquivo, recebiam de arquivo, simulavam arquivo local, ... O que veremos a partir de agora redireciona a sada de um comando para a entrada de outro. utilssimo e quebra os maiores galhos. Seu nome pipe (que em ingls significa tubo, j que ele encana a sada de um comando para a entrada de outro) e sua representao uma barra vertical (|).

O comando ls passou a lista de arquivos para o comando wc, que quando est com a opo l conta a quantidade de linha que recebeu. Desta forma, podemos afirmar categoricamente que no meu diretrio existiam 21

11 de 16

15/2/2011 12:57

.:TWikiBarPapo001 > TWikiBar > Aqui temos um _livro livre_ e comp...

http://br.gnome.org/TWikiBar/TWikiBarPapo001

arquivos.

Esta linha de comandos manda a listagem do arquivo /etc/passwd para a entrada do comando sort. Este a classifica e manda-a para o lp que o gerenciador do spool de impresso.

Caracteres de Ambiente
Quando quer priorizar uma expresso voc coloca-a 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 exemplos de uso das crases para voc entender melhor. Eu quero saber quantos usurios esto "logados" no computador que eu administro. Eu posso fazer:

O comando who passa a lista de usurios conectados para o comando wc l que conta quantas linhas recebeu e lista a resposta na tela. Pois bem, mas ao invs de ter um oito solto na tela, o que eu quero que ele esteja no meio de uma frase. Ora para mandar frases para a tela eu uso o comando echo, ento vamos ver como que fica:

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 problema, tenho que

priorizar esta segunda parte do comando com o uso de crases, fazendo assim:

Para eliminar esse monte de brancos antes do 8 que o wc -l produziu, basta tirar as aspas. Assim:

Como eu disse antes, as aspas protegem tudo que esta dentro dos seus limites, da interpretao do Shell. Como para o Shell basta um espao em

12 de 16

15/2/2011 12:57

.:TWikiBarPapo001 > TWikiBar > Aqui temos um _livro livre_ e comp...

http://br.gnome.org/TWikiBar/TWikiBarPapo001

branco como separador, o monte de espaos ser trocado por um nico aps a retirada das aspas. Antes de falar sobre o uso dos parnteses deixa eu mandar uma rapidinha sobre o uso de ponto-e-vrgula (;). Quando estiver no Shell, voc deve sempre dar um comando em cada linha. Para agrupar comandos em uma mesma linha teremos que separ-los por ponto-e-vrgula. Ento:

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 para 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 existe espaos em branco antes ou aps este caractere. Finalmente vamos ver o caso dos parnteses. Veja s o caso a seguir, bem parecido com o exemplo anterior:

- 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 continuava no


/home/meudir, como se eu nunca houvesse sado de l!

- Ih! Ser que tem coisa de mgico a? - T me estranhando, rapaz? No nada disso! O interessante do uso de parnteses que ele invoca um novo Shell para executar os comandos que esto no seu interior. Desta forma, realmente fomos para o diretrio /etc, porm quando todos os comandos dentro dos parnteses foram executados, o novo Shell que estava no diretrio /etc morreu e voltamos ao Shell anterior cujo diretrio corrente era /home/meudir. Faa outros testes usando cd, e ls para voc firmar o conceito. Agora que j conhecemos estes conceitos veja s este exemplo a seguir:

13 de 16

15/2/2011 12:57

Potrebbero piacerti anche