Diferència entre revisions de la pàgina «Bash script»

De Cacauet Wiki
Salta a la navegació Salta a la cerca
Línia 23: Línia 23:
  
 
== Entorn ==
 
== Entorn ==
Les comandes de la ''shell'' s'executen sense incloure tota la ruta mercès a la variable d'entorn $PATH.
+
Les comandes de la ''shell'' s'executen sense incloure tota la ruta mercès a la variable d'entorn $PATH
 +
$ echo $PATH
 +
...i podrem veure els directoris (separats per :) en els que la ''shell'' buscarà una comanda quan la teclegem. Les que (quasi) segur que hi han de ser son:
 +
/bin:/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin
 +
En aquestes carpetes hi ha les comandes més habituals que utilitzem com ''ls'' a <code>/bin</code> o ''ifconfig'' a <code>/sbin</code> (a sbin hi ha les de Superusuari, d'aquí la 's' al davant).
 +
 
 +
Si algun dia volem saber on hi ha una comanda que estem utilitzant, podem esbrinar-ho amb:
 +
$ which ls
 +
...i ens dirà on està el binari que s'executarà amb aquesta comanda (que es buscarà als diferents directoris $PATH, en l'ordre que estan situats).
 +
 
 +
 
 +
=== Directori ~/bin ===
 +
Una curiositat és que si creem la carpeta <code>bin</code> al nostre ''home directory'' aquesta es posarà automàticament al $PATH (fes logout i login després de crear la carpeta). Aquest és el lloc on posar scripts nostres i que no calgui que estiguin disponibles per altres usuaris.
 +
$ mkdir ~/bin
 +
...i fes logout i login i comprova el $PATH
  
 
<br>
 
<br>

Revisió del 15:15, 11 feb 2016

Els diversos Unix's han tingut sempre una potent interfície de comandes. La shell és la interfície que ens permet "dialogar" amb el nucli del sistema operatiu passant-li comandes.

Hi ha diversos llenguatges de shell script, entre ells el CSH (C-shell), i el KSH (Korn-shell), però sembla que el què s'ha imposat definitivament és el BASH o Bourne-Again SHell.

És important dominar algun dels editors de text per consola. El més típic ara és el nano, tot i que convé també conèixer vi ja que sol tenir syntax highlight (vim o vi improved) i perquè per raons històriques sempre està present i ens pot treure d'un apuro.


Coses bàsiques

Els scripts son arxius de text amb instruccions llegibles per la nostra shell. Es comenten amb un # tot i que la 1a línia és una excepció (comença per #!) i indica quin serà l'intèrpret que l'executarà. Edita hola.sh des del teu editor de text favorit:

#!/bin/bash
# això és un comentari
echo "hola!"  # això ja és una instrucció

...i abans de començar a executar-lo cal donar permisos d'execució a l'arxiu:

$ chmod +x hola.sh

...i ara sí que ja el podem executar:

$ ./hola.sh


Entorn

Les comandes de la shell s'executen sense incloure tota la ruta mercès a la variable d'entorn $PATH

$ echo $PATH

...i podrem veure els directoris (separats per :) en els que la shell buscarà una comanda quan la teclegem. Les que (quasi) segur que hi han de ser son:

/bin:/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin

En aquestes carpetes hi ha les comandes més habituals que utilitzem com ls a /bin o ifconfig a /sbin (a sbin hi ha les de Superusuari, d'aquí la 's' al davant).

Si algun dia volem saber on hi ha una comanda que estem utilitzant, podem esbrinar-ho amb:

$ which ls

...i ens dirà on està el binari que s'executarà amb aquesta comanda (que es buscarà als diferents directoris $PATH, en l'ordre que estan situats).


Directori ~/bin

Una curiositat és que si creem la carpeta bin al nostre home directory aquesta es posarà automàticament al $PATH (fes logout i login després de crear la carpeta). Aquest és el lloc on posar scripts nostres i que no calgui que estiguin disponibles per altres usuaris.

$ mkdir ~/bin

...i fes logout i login i comprova el $PATH


Variables

... scope ...


Arguments

...


Bucles, llistes i altres gaites

...


Condicionals

...

if...then

...

switch...case

...


Exercicis

...