De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Julio Cezar Neves
Data de Publicação: 06 de outubro de 2017
Neste texto vou dar diversas pequenas dicas interessantes sobre programação shell Linux:
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 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
.
Julio Cezar NevesO 4º UNIX do mundo nasceu na Cidade Maravilhosa, mais precisamente na Cobra Computadores, onde à época trabalhava o Julio. Foi paixão à 1ª vista! Desde então, (1980) atua nessa área como especialista em Sistemas Operacionais e linguagens de programação. E foi por essa afinidade que quando surgiu o Linux foi um dos primeiros a estudá-lo com profundidade e adotá-lo como Sistema Operacional e filosofia de vida. É autor dos livros Programação Shell Linux, 11ª edição e Bombando o Shell. |
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários