Inf1105

9/26/2005

Demo3 (partie 3)

-----------------------------------------------
-------------- HUITIEME PARTIE ----------------
-----------------------------------------------

Script : suite d'instructions exécutés de façon sérielle.

Il y a plusieurs langage de script dans Unix, ils sont associés à différents shell (Bourne Shell, C shell et Korn shell). Nous nous contenterons dans les labos de voir quelques éléments de scripting du Bourne Shell (le plus simple des trois). Pour spécifier qu'un script est écrit, et doit être interprété par la machine dans le langage du Bourne shell, on débute tout script par :

#!/bin/sh

*** Pour exécuter un script, on a qu'à se donner les droits d'exécution (% chmod 700 chemin/nom_du_script), puis à l'appeler à la ligne de commande (% chemin/nom_du_script).

Dans un script, on peut inclure n'importe quel instruction pouvant être interprété par le shell. Voici un exemple de script affichant un message à l'aide de la commande echo : script1.

Dans un autre exemple, voyons maintenant comment on peut "mettre en forme" la sortie d'une commande : script2.

Remarquez que dans le dernier script on utilise le '`'(accent grave) pour borner(entourer) une commande qui doit être exécutée plutôt que d'afficher simplement son nom.

On peut rendre l'exécution de certaines commandes conditionnelles, autrement dit, les commandes s'exécuteront seulement si une, ou des conditions sont respectées. Pour faire cela on utilise un "if". La structure classique d'un "if" (si) est : si "conditions" alors "instructions" sinon "instructions alternatives" fin du si. Ce qui se traduit par : si = if, alors = then, sinon = else et fin du si = fi.

if [ condition ] ; then
instructions
else
instructions alternatives
fi

voici un exemple de script utilisant un if : script3

On peut également répéter une, ou des instructions un certain nombre de fois. Pour faire une répétition on utilise une boucle "while". La structure classique d'un while (tant que) est : tant que "conditions" faire "instructions" fin du tant que. La traduction de c'est instructions est : tant que = while, faire = do et fin du tant que = done.

while [ condition ]
do
instructions
done

Voici un exemple de script utilisant une boucle while : script4

Notez dans le script l'utilisation de l'instruction read qui permet de lire une donnée entrée au clavier.

Avec ces quelques instructions de base, il n'y a que votre imagination pour limiter ce que vous pouvez faire... voici un exemple de script combinant les instructions que nous venons de voir : script_comp


Demo3 (partie 2)

-----------------------------------------------
-------------- SEPTIEME PARTIE ----------------
-----------------------------------------------

Variables :
-----------

1. Pour afficher a l'ecran une chaine de caracteres ou le contenu d'une variable :

% echo chaine_de_caractere
ou
% echo $nom_de_variables

exemple :
% echo Hello!
% echo $PATH
% echo $HOME
% echo $USER


2. Pour afficher l'ensemble des variables d'environnement et leurs contenu :

% env


3. Pour creer une variable d'environnement ou en modifier le contenu :

% setenv nom_variable contenu

exemple :
% setenv TEST inf1105
% env (pour verifier que TEST est la)


4. Pour supprimer une variable d'environnement :

% unsetenv nom_variable

exemple :
% unsetenv TEST
% env (pour vérifier que TEST n'est pas la)


5. Pour afficher l'ensemble des variables d'usager et leurs contenu :

% set


6. Pour creer une variable d'usager ou en modifier le contenu :

% set nom_variable=contenu

exemple :
% set test=demo3
% env (pour verifier que test n'est pas la)
% set (pour verifier que test est la)


7. Pour supprimer une variable d'usager :

% unset nom_variable

exemple :
% unset test
% set (pour verifier que test n'est plus la)


8. Exemple d'ajout au contenu deja present dans une variable :

% setenv PATH ${PATH}:. (ajoute ./ a PATH)


9. Certaines variables n'ont pas besoin de contenu :

exemple : pour que ^d ne "quitte" plus : % set ignoreeof

Demo3 (partie 1)

-----------------------------------------------
-------------- SIXIEME PARTIE -----------------
-----------------------------------------------

Processus et jobs :
-------------------

1. Pour afficher la liste des processus actifs dans le systeme :

% ps [-fle]

exemple :
% ps
% ps -f (full)
% ps -l (long)
% ps -e (tout les processus)


2. Pour arreter un processus :

^z suspend le processus
^c detruit le processus


3. Pour demarrer un processus en arriere plan (jobs) :

% commande&

exemple :
% top&


4. Pour afficher la liste des jobs :

% jobs


5. Pour ramener la derniere job cree a l'avant plan :

% fg


6. Pour detruire un processus ou un job :

% kill #process (tentative de destruct. processus)
% kill -9 #process (destruction du processus)
% kill %#jobs (tentative de destruction job)
% kill -9 %#jobs (destruction du job)

9/25/2005

Précision sur la commande "wc"

Il y a une précision à apporter au sujet de la commande "wc"

-c : print the byte counts (affiche le nombre d'octet)

-m : print the character counts (affiche le nombre de caractères)

c'est vrai qu'un caractère est normalement codé sur un octet, mais y a des systèmes qui codent un caractère en 7 bits, on n'aura alors pas un wc -c égale à wc -m. Par contre, l'option -m n'est pas disponible dans toutes les versions de "wc"...

Merci à Romdhane pour la précision,

Eric