pebat Posted March 9, 2006 at 11:51 AM Report #17531 Posted March 9, 2006 at 11:51 AM 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....
deathseeker25 Posted March 9, 2006 at 05:50 PM Report #17564 Posted March 9, 2006 at 05:50 PM Tudo aquilo que aprendi aqui há uns tempos sobre bash scripting... 🙂 Bom tutorial!
francodacosta Posted March 10, 2006 at 12:51 AM Report #17614 Posted March 10, 2006 at 12:51 AM 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
QuickFire Posted March 11, 2006 at 05:06 PM Report #17800 Posted March 11, 2006 at 05:06 PM 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 😄 Tive de fazer um pequeno script por causa do wireless do portatil velho e por isso lá vim eu 🙂
vbmaster Posted March 11, 2006 at 05:32 PM Report #17802 Posted March 11, 2006 at 05:32 PM 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) 😄
QuickFire Posted March 11, 2006 at 07:00 PM Report #17825 Posted March 11, 2006 at 07:00 PM Não encontrei nada desse genero mas é capaz de não ser dificil 🙂 Tenta modificar este script: http://g-scripts.sourceforge.net/nautilus-scripts/Execute/Misc/root-nautilus-here Acho que é só saberes a variavel que define o ficheiro que queres apagar e está quase 99% feito 😄
vbmaster Posted March 11, 2006 at 07:09 PM Report #17829 Posted March 11, 2006 at 07:09 PM Não encontrei nada desse genero mas é capaz de não ser dificil 🙂 Tenta modificar este script: http://g-scripts.sourceforge.net/nautilus-scripts/Execute/Misc/root-nautilus-here Acho que é só saberes a variavel que define o ficheiro que queres apagar e está quase 99% feito 😄 pois... eu cheguei a tentar precisamente esse script anteriormente e não consegui... :|
Perl Posted August 15, 2007 at 05:43 PM Report #125134 Posted August 15, 2007 at 05:43 PM Algo giro: export PS1="\e[0;32m>: \e[m" (Lost prompt)
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now