Copy Link
Add to Bookmark
Report

Programacao basica de shell script

Death Knights Issue 5

eZine's profile picture
Published in 
Death Knights
 · 18 Oct 2022

by Cacaio


Ae, aqui vou ensinar como escrever arquivos de comando. Eles geralmente sao chamados de shell scripts. Olha so o que vou falar:

  • Como instalar seu diretorio de comando
  • Alterando a variavel PATH pra incluir o seu diretorio de comandos e o diretorio corrente
  • Como criar seu arquivo de comando e como torna-lo executavel
  • Como executar seus arquivos de comando

Variavel PATH / Como instalar seu diretorio de comando

Conforme voce vai se tornando mais intimo do sistema operacional, voce ira comecara usar comandos mais complexos. E digitar varios comandos para a mesma coisa *e' tedioso*. Mas os shell scripts podem ser usados para isto, executarem varios comandos, e e' isto o que veremos.

Todos os comandos que voce executa estao no(s) diretorio(s) identificados pela variavel PATH. Normalmente, os diretorios default do PATH sao protegidos de forma que voce pode executar o que estiver dentro destes diretorios, mas nao pode altera-los ou apaga-los, nem fazer nada dentro do diretorio. Entao, cada vez que voce executar algo que nao esta dentro do PATH, se voce nao estiver dentro do diretorio do mesmo voce deve informar o caminho completo para o programa. Se voce nao quiser ter o trabalho todo de mudar de diretorio ou digitar o caminho completo, voce pode colocar um diretorio com shell scripts que fazem esta tarefa mais facilmente para voce, e entao colocar este seu diretorio na variavel PATH. Os nomes mais utilizados para estes diretorios sao 'bin' ou 'util', mas voce pode colocar o nome que quiser.

Vamos comecar... primeiro, vamos ver qual o seu PATH definido:

$ echo $PATH 
/usr/local/bin:/bin:/usr/bin
$

Hmmm.... seu path e' o default. Vamos voltar neste assunto depois. Agora, ja sabemos seu path e vimos que nele nao se encontra nenum diretorio de comando incluido por voce. Entao, para continuarmos, voce tem que incluir este diretorio(se quiser seguir o que diz aqui).

  • 1-> Digite 'cd ~' para certificar-se de que esta' em seu home directory
  • 2-> Digite 'mkdir' para criar o diretorio 'bin' e 'chmod 755' para torna-lo disponivel para voce para acesso completo e fornecer acesso de leitura e execucao para qualquer outro usuario.

$ mkdir bin 
$ chmod 755 bin
$

Edite seu arquivo de configuracao (.profile, .bash_profile, etc..) para adicionar o pathname em sua variavel PATH. Se ele tem uma atribuicao para um path, adicione o pathname que voce quer. Caso nao tenha, voce pode adicionar apenas colocando a seguinte linha:

PATH=$PATH:$HOME/bin

Efetue um logoff e em seguida um login.

Criando e executando arquivos de comando

Pense s respeito dos comandos que voce digita quando muda para um diretorio diferente. Um pwd, talvez, para certificar-se que esta no local certo. Entao, talvez voce queira verificar quais arquivos e diretorios existem neste diretorio, para isso, voce executaria o comando ls. Para finalizar, voce poderia enviar um comando du e ver o espaco que esta sendo consumido neste diretorio. Normalmente, voce poderia executar estes comandos da seguinte forma:

$ pwd 
/home/death
$ ls
adv_awk/ contest/ ham/ src/
awk_test/ teste/ lib/ seila/
bin/ group profile.bak
$ du -s
2517
$

Entendeu o que viu? Caso nao tenha entendido, eu explico:

Tipo de Arquivo                    Indicador 
--------------- ----------
Normal (nenhum)
Executavel *
Diretorio /
Uniao Simbolica @

O programa du apresenta o uso do disco em termos de blocos de 512 bytes. A opcao -s orienta o programa a imprimir somente um sumario (os blocos totais) para o diretorio informado (. por default).

Voce tambem pode escrever todos os comandos em so uma linha os separando por ponto e virgula (;). Isto faz voce ter que teclar enter somente uma vez, mas mesmo assim teria que digitar todos os comandos:

$ pwd ; ls ; du -s 
/home/death
adv_awk/ contest/ ham/ src/
awk_test/ teste/ lib/ seila/
bin/ group profile.bak
2517
$

Trabalhoso, nao? E se apenas um comando fizesse tudo isso... e isto pode ser feito. Vamos agora criar o script 'myls' que fara tudo isto. Ao inves de usar um editor de texto, usarei o cat mesmo, pois nem todos usam o mesmo editor de texto e esta materia e' dedicada a iniciantes. Nao falarei comando de nenhum editor de texto.

$ cat > myls 
pwd
ls
du -s
(Aperte CTRL+D)
$

Agora, utilize o chmod para definir as permissoes necessarias (+x permite execucao por qualquer usuario). Utilizando o comando ls antes e depois de chmod, voce podera ver a diferenca.

$ ls -l myls 
-rw-r--r-- 1 death users 19 Jun 08 20:23 myls
$ chmod +x myls
-rwxr-xr-x 1 death users 19 Jun 08 20:23 myls
$

Agora vamos testar o script!

$ myls 
myls: command not found
$

Epa! O que aconteceu? A listagem apresenta o programa no diretorio corrente, mas ele nao e' encontrado. Por que? Lembre o que foi falado da variavel PATH e a necessidade de especificar o diretorio corrente em seu PATH. Voce precisara inserir um . a variavel PATH em seu arquivo de configuracao (insira os caracteres :. ao fim da linha de PATH, salve o arquivo e reinicie o login para que as alteracoes facam efeito). Por enquanto, simplesmente especifique na linha de comando o local onde o programa se encontra:

$ ./myls 
/home/death
adv_awk/ contest/ ham/ src/
awk_test/ teste/ lib/ seila/
bin/ group profile.bak
2517
$

Isso nao e' bem mais facil do que digitar uma serie de comandos? Agora, vamos mover o script myls para o seu diretorio bin, digitando:

$ mv mylsy $HOME/bin 
$

Pronto! Agora e' so digitar myls para rodar o myls. Voce pode fazer isto com qualquer nome de arquivo que queira e colocar os comandos desejados no script.

Cacaio               Cacaio@DeathKnights.com 
`'`'`' `'`'`'`'`'`'`'`'`'`'`'`

← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT