Busca

Visite também: UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 



 

Aprenda inglês em casa

Baixe gratuitamente as duas primeiras aulas

English for Reading and Listening

Receba por email, diariamente, mensagens contendo materiais para leitura e audição, incluindo arquivos no formato MP3 gravados por falantes nativos.

Saiba mais e faça sua inscrição

você está aqui: Home  → Colunistas  →  Cantinho do Shell

 

Macetes diversos

Por Júlio Neves

Data de Publicação: 16 de Abril de 2007

Dica 1 : Repare esta seqüência de comandos no prompt:

  /home/jneves> cd bin
  -bash: cd: bin: No such file or directory
  /home/jneves> CDPATH=/usr/local
  /home/jneves> cd bin
  /usr/local/bin
  /usr/local/bin>

Com esse exemplo eu quis mostrar que a variável CDPATH atua como o PATH, sendo que esta última contém os diretórios que devem ser percorridos na procura de arquivos e a primeira contém os os diretórios que devem ser percorridos na procura por subdiretórios.

Para agilizar o meu lado, repare o conteúdo do meu CDPATH:

  /home/jneves> echo $CDPATH
  .:..:~

Desta forma, quando eu faço um cd, os subdiretórios serão pesquisados no diretório corrente, no seu diretório pai e no meu diretório home, nesta ordem.

Dica 2 : Já que falamos na variável PATH, que tal usarmos o comando tr para facilitar a legibilidade do seu conteúdo:

  /home/jneves> echo $PATH
  /bin:/usr/bin:/sbin:~:.
  /home/jneves> echo $PATH | tr ':' '\n'
  /bin
  /usr/bin
  /sbin
  ~
  .

Neste exemplo o tr trocou os dois-pontos (:) por new-line (ENTER), facilitando a leitura do conteúdo da variável.

Dica 3 - Quando você executa diversos comandos encadeados em um pipe (|), o return code dado por echo $? reflete apenas o resultado de saída do último comando executado no pipe. O array PIPESTATUS, por sua vez, armazena em cada elemento o resultado respectivo de cada um dos comandos do pipe. ${PIPESTATUS[0]} tem o return code do primeiro comando, ${PIPESTATUS[1]} contém o return code do segundo, e assim por diante.

O exemplo a seguir mostra um script que executa um pipe de três comandos, e imprime o return code de cada um dos comandos:

  /home/jneves> date | grep Wed | wc -l
  /home/jneves> echo ${PIPESTATUS[*]}
  0 1 0

Na última linha temos a impressão do array ${PIPESTATUS}: 0 (zero) indicando o sucesso do primeiro comando, 1 indicando que o grep falhou ao procurar pela cadeia Wed, e novamente 0 (zero) para o sucesso do comando wc -l.

Até amanhã...

  Duvidas? julio.neves@gmail.com
  Deseja fazer curso de Programação em Shell? julio.neves@tecnohall.com.br

Conheça também o livro de Programação Shell de Júlio Neves

Publicado originalmente na Dicas-L em 25 de fevereiro de 2005
Versão para impressão
  • Currently 3.16/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 3.2 /5 (171 votos)

Artigos Publicados


Linux Shell Script em Newsgroup

Servidor: news.gmane.org

Grupo: gmane.org.user-groups.programming.shell.brazil


Para se manter atualizado sobre as novidades desta coluna, consulte sempre o newsfeed RSS

Cantinho do Shell NewsFeed RSS

Para saber mais sobre RSS, leia o artigo O Padrão RSS - A luz no fim do túnel.


Opinião dos Leitores

Julio Neves
08 Mai 2007, 12:32
Agradeço a força dada pelo Gustavo, pelo Bruno e pelo Júlio e gostaria de responder a este último.

Julio, vc escreveu: "isso é uma boa para se usar realmente apenas nos scripts, assim nao é necessário colocar uma variável com o path completo do binario ou qualquer outra coisa".
Acho que vc não entendeu legal. O CDPATH não tem nada a ver com binário (para isso existe o bom e velho PATH). O CDPTH procura por diretórios para vc fazer um "cd".

Depois vc me pergunta se existe alguma forma de se facilitar a ida para /usr/local/bin e/ou para /var/qmail/bin. A minha resposta é se ambos (/usr/local e /var/qmail) estiverem na CDPATH e vc fizer "cd bin", o cd será feito para o primeiro encontrado na variável.

Abraços a todos,
Julio
www.julioneves.com
:wq
Júlio Mauro
17 Abr 2007, 22:23
Júlio... iso é uma boa para se usar realmente apenas nos scripts, assim nao é necessário colocar uma variável com o path completo do binario ou qualquer outra coisa.

Mas isso nao pode ocasionar algum problema se:

vamos usar o seu exemplo mesmo

CDPATH=/usr/local

E se estivermos em um local que ja contem o diretorio bin ? Exemplo

/var/qmail/

Teriamos que entra no diretorio usando path completo, cd /var/qmail/bin, correto ?

Ou será que há algum modo de fazer ele ser um pouco mais "inteligente" nesse caso.

abraços mestre !
Bruno Neves
17 Abr 2007, 11:38
Bom saber!

: )

Abraço!

--
Bruno
Gustavo Buriola
17 Abr 2007, 08:42
A dica numero 3 foi excelente. Valeu Julio.

Grande abraco.

Gustavo.
*Nome:
Email:
Me notifique sobre novos comentários nessa pagina
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script

Recomende este site
Recomendar este artigo