Jump to content
Sign in to follow this  
pebat

[Shell script] Programaçao da shell linux (parte I)

Recommended Posts

pebat

Programação em Shell-Script

Introdução

Como você já deve saber, a shell do Linux é uma poderosa ferramenta que traz ao utilizador toda a flexibilidade dos sistemas Unix e todos seus comandos.  No meu caso vou explicar um pouco de scripts-shell do bash.

Muita gente não sabe que o bash tem uma poderosa linguagem de script embutida nele. Diversas pessoas utilizam-se desta linguagem para facilitar a realização de inúmeras tarefas administrativas em um sistema Linux, ou até mesmo para criar seus próprios programas! Para quem gosta de usar a criatividade para criar coisas e facilitar o uso do sistema no dia-a-dia, o shell-script é um prato cheio para começar.

Costumo indicar para quem está a começar na  programação à dar uma olhada em shell-script. E faço isso porque o shell-script é bastante simples. Porque te da uma boa noção do basico da logica da programaçao. Combinando todos os comandos avançados do Linux, conseguem fazer coisas mto uteis e aprender muito sobre a logica da programaçao.

Criaçao de um programa da shell (bash)

    Programa da shell  - programa constituido por comandos Unix (bash file, shell script)

Para criar um programa da shell introduza os vários  comandos Unix num ficheiro, umas das vantagens do shell-script e nao precisar de ser compilado basta escrever o texto e ja esta, como por exemplo:

       

            
            #!/bin/bash   ---> inicio do shell script sempre que virem isto assim num ficheiro de Linux ou Unix ja sabem que estao perante um shell-script
             echo "ola" --> este echo ja vos deve ser familiar e usado no Bash de Dos ou mesmo no PHP ser para escrever na consola neste caso
             echo "ola"
             echo "ola"
          

  Depois da criaçao do programa é necessario colocar permissões de execuçao no ficheiro.

         

chmod u+x prog 

  Depois de dar premisao a ficheiros basta fazer ./nome file

Variaveis nos ficheiros da shell

  Exemplo simples de utilização de uma variavel. Atençao que nao devem ser utilizados espaços entre a variavel, o sinal de igual e o valor atribuido:

       

             #!/bin/bash
              nome="Pebat" ----> variavel que lhe atribui o valor do meu nick
              echo $nome  ---> aqui vamos mostra na shell o valor da variavel
         

 

  As variaveis nos ficheiros da shell nao precisa, de ser declaradas e sao todas do tipo string.

  Exemplos de variaveis ja defenidas no sistema: PATH, HOME. Execute os seguintes comandos na linha de comandos:

        echo $HOME

        echo $PATH

     

    o comando set permite visualizar todas as variaveis dos sistema.

Argumentos dos programas da shell

  Um programa da shell pode receber argumentos atraves da linha de comnados. O programa acede a estes valores ataves dos parametros posicionais: $1, $2, $3, ...

 

O programa seguinte mostra no ecrã o paramentro passado na linha de comando

     

         #!/bin/bash
         echo "ola" $1
      

 

  como executar este programa:  chmod u+x nome(o nome do meu ficheiro)

                                                        depois ./nome pebat

                                                        ira aparecer ola pebat

                                                       

Exemplo de um ficheiro da shell que mostra os 9 argumentos passados atraves da linha de comando

 

     #!/bin/bash
      echo "O primeiro parametro e " $1
      echo "..." $2
      echo "..." $3
      echo "..." $4
      echo "..." $5
      echo "..." $6
      echo "..." $7
      echo "..." $8
      echo "..." $9
   

Semelhate ao anterior mas neste caso os paramentros sao todos escritos numa so linha

   

      #!/bin/bash
       echo $1 $2 $3 $4 $5 $6 $7 $8 $9
    

Igual ao anterior. A variavel $* contem todos os argumentos.

 

   #!/bin/bash
  echo $*
   

Exemplo de um programa da shell que mostra o nome do proprio programa e o numero de argumentos deste:

 

       #!/bin/bash
        echo "o nome deste ficheiro da shell e " $0
        echo "o numero de argumentos e " $1 
   

Quando o progama recebe mais do que 9 paramentros entao deve ser utilizado o comando shift para o acesso aos parametros adicionais.

FIm da primeira parte

Espero que gostem....

Share this post


Link to post
Share on other sites
deathseeker25

Tudo aquilo que aprendi aqui há uns tempos sobre bash scripting... :)

Bom tutorial!

Share this post


Link to post
Share on other sites
francodacosta

Viva

parabens pelo tutorial!!

gostava de acrescentar o seguinte :

Código

GeSHi (bash):

      #!/bin/bash

        echo "o nome deste ficheiro da shell e " $0

        echo "o numero de argumentos e " $1

Created by GeSHI 1.0.7.5

Quando o progama recebe mais do que 9 paramentros entao deve ser utilizado o comando shift para o acesso aos parametros adicionais.

nao precisas de usar o shift para aceder a parameteros maiores que  9, podes por exemplo usar ${15} para aceder ao 15 parametero

#!/bin/bash  ---> inicio do shell script sempre que virem isto assim num ficheiro de Linux ou Unix ja sabem que estao perante um shell-script

gostava de acrescentar que o #! (hash-bang) serve para indicar ao kernel qual o programa que ele deve usar para correr o script, por exemplo é possivel indicar que o script é para correr com o perl .

Outra particularidade é que é possivel passar parameteros para o programa que vai correr o script, alias tudo o que estiver nessa linha e que nao seja comentario e passado ao programa

sven

Share this post


Link to post
Share on other sites
QuickFire

Bom tutorial :)

Apesar de eu já ter umas noções de Bash scripting que vieram do python o tutorial dá bastante jeito :)

Prova disso mesmo é que vim aqui verificar se já tinhas falado dos ifs :D Tive de fazer um pequeno script por causa do wireless do portatil velho e por isso lá vim eu :)

Share this post


Link to post
Share on other sites
vbmaster

Eu gostava era de ter uma script de nautilus que me eliminassem o ficheiro actual selecionado em root, (usando o gksudo para perdir a pass) :D

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.