13 agosto 2008

Shell scripts não convencionais

Na primeira linha de uma shell, geralmente encontramos algo do tipo:

  #!/bin/bash


ou



  #!/bin/csh


O que poucos sabem, é que podemos criar shells diretamente com outros comandos do Unix.



Por exemplo, eu frequentemente preciso saber o meu endereço de trabalho, mas nunca me lembro onde coloquei o cartão com todos os dados. Este problema pode ser facilmente resolvido com uma shell como abaixo:



  #! /bin/more
Rubens Queiroz de Almeida
Cidade Universitária Zeferino Vaz
Centro de Computação
Unicamp
13.083-970 - Campinas - São Paulo


Este é um script que ecoa para a tela o seu conteúdo. Ao executá-lo temos:



  #! /bin/more
Rubens Queiroz de Almeida
Cidade Universitária Zeferino Vaz
Centro de Computação
Unicamp
13.083-970 - Campinas - São Paulo


Bom, apareceu também a primeira linha, que é uma informação que não preciso. Para resolver isto, basta fornecer ao comando more, o argumento +2, instruindo o comando a iniciar seu trabalho a partir da linha 2. O script fica então assim:



  #! /bin/more +2
Rubens Queiroz de Almeida
Cidade Universitária Zeferino Vaz
Centro de Computação
Unicamp
13.083-970 - Campinas - São Paulo


Desta forma a linha inicial não é mais exibida.



Da mesma forma, se eu substituir a primeira linha por



  #! /bin/ls -l


Teremos uma shell que executa o comando **ls -l* sobre ele mesmo, como abaixo:



  $ ./endereço
-rwxr-xr-x 1 queiroz queiroz 137 Jul 12 18:40 ./endereço


Parece meio inútil, mas certamente deve haver algum uso inteligente para esta facilidade ....

Postar um comentário