Вы находитесь на странице: 1из 7

which gcc who (am i)

Retourne le chemin complet d'accs la commande gcc Retourne le nom des utilisateurs qui ont ouvert une session sur cette machine

LA PROGRAMMATION SHELL SOUS UNIX


1. Notions sur la programmation Shell Un shell, quel qu'il soit, peut excuter des commandes contenues dans un fichier texte (fichier ordinaire). Un fichier contenant des commandes pour le shell est appel un script. C'est en fait un programme crit dans le langage du shell. Ce langage comprend non seulement les commandes que nous avons dj vues (commandes Unix), mais aussi des structures de contrle (instructions conditionnelles, boucles et dautres instructions spcifiques). Pour la programmation du shell, nous allons utiliser le shell sh, qui est le plus rpandu et standard 2. Crer un script Un script shell est un fichier en mode texte. C'est--dire que ce n'est pas un fichier binaire, excutable directement par la machine, mais il doit tre interprt. 3. L'interprtation d'un script L'interprtation signifie que chaque commande contenue dans un script doit tre lue par un programme, appel interprteur ; l'interprteur analyse chaque commande du script et lexcute. 4. L'dition d'un script Un script tant un fichier en mode texte, il doit tre cr avec un diteur de texte, comme par exemple vi. 5. Rendre un script excutable Pour que le shell sache comment l'interprter, un script shell doit commencer par la ligne: # !/bin/sh Il doit aussi tre excutable (droit x). Le #!/bin/sh sur la premire ligne indique que ce script doit tre excut par le shell sh dont on indique le chemin d'accs. Pour rendre un fichier excutable, tapez : chmod u+x nom-fichier-script 6. Spcifier le chemin d'une commande Pour que le shell comprenne o chercher votre commande, il faut donc spcifier l'emplacement de la commande en donnant son chemin, qu'il soit absolu : /home/student/nom-fichier-script ou relatif : ./nom-fichier-script
------------------------------------------- --------------------------------------32 Introduction lutilisation du systme Unix Yahya SLIMANI

ou encore sous la forme : sh nom-fichier-script 7. Principes gnraux des scripts shell Un script shell est avant tout une succession de commandes, comme celles que nous crivons dans une fentre de type Terminal ; sauf que ces commandes nous les rassemblons dans un fichier pour les excuter dans lordre o elles sont crites dans le script. 8. Commentaires Presque tous les langages informatiques autorisent d'insrer des commentaires ; le shell n'chappe pas la rgle. Pour cela, il suffit de faire prcder chaque ligne de commentaire du caractre # . Exemple : #!/bin/sh # Tout ce que j'cris ici ne sera pas lu. echo "Ce que je tape ici sera lu." 9. Un script qui parle : la commande echo Maintenant que vous savez comment on peut excuter un script, il s'agit de le remplir... Commenons par ce qu'il y a de plus simple : afficher du texte, comme par exemple Ceci est un exemple de fichier script ! Ecrivez ce fichier script et appelez le script1 #!/bin/sh # Fichier "Exemple" echo " exemple de fichier script !" Excutez ensuite ce script, en tapant : $ ./script1 exemple de fichier script ! Autre exemple de fichier script (crivez-le et excutez-le). #!/bin/sh # Fichier "bonjour" echo "Bonjour... "
------------------------------------------- --------------------------------------33 Introduction lutilisation du systme Unix Yahya SLIMANI

echo "Comment allez-vous ?" 10. Annuler le retour chariot Si vous voulez annuler le retour chariot qui a lieu par dfaut la fin de toute commande echo, il faut utiliser l'option -n. Le programme sera alors : #!/bin/sh echo -n "Bonjour..." echo "Comment allez-vous ?" Vous aurez comme rsultat : Bonjour... Comment allez-vous ? 11. Lecture de valeurs de variables partir du clavier : commande read La commande Unix read permet de lire des valeurs partir du clavier. La commande read doit tre suivie dun nom de variable, non prcd du signe dollar. Cette variable contiendra la valeur introduite partir du clavier 12. Lire plusieurs variables La commande read permet galement de lire plusieurs variables. Il suffit pour cela d'indiquer la suite les noms des diffrentes variables. Exemple : #!/bin/sh # Fichier "administration" echo "crivez votre nom puis votre prnom :" read nom prenom echo "Nom : $nom" echo "Prnom : $prenom"

Vous obtiendrez comme rsultat : crivez votre nom puis votre prnom : Nom : Tounsi
------------------------------------------- --------------------------------------34 Introduction lutilisation du systme Unix Yahya SLIMANI

Prnom : Redha 13. Paramtres de position Les paramtres de position sont des variables spciales utilises lors d'un passage de paramtres un script.

Variable $0 $1-9 $# $* $@

Contenu Nom de la commande (du script) $1,$2,$3... Les neuf premiers paramtres passs au script Nombre total de paramtres passs au script Liste de tous les paramtres au format "$1 $2 $3 ..." Liste des paramtres sous forme d'lments distincts "$1" "$2" "$3" ...

14. Sortie de script La commande exit permet de mettre fin un script. Par dfaut la valeur retourne est 0 (pas d'erreur) 15. Tests de conditions La commande test permet d'effectuer des tests de conditions. Le rsultat est rcuprable par la variable $? (code retour). Si ce rsultat est 0 alors la condition est ralise. tests sur chane

test -z "variable" : zero, retour OK si la variable est vide (ex test -z "$a") test -n "variable" : non zero, retour OK si la variable n'est pas vide (texte quelconque) test "variable" = chane : OK si les deux chanes sont identiques test "variable" != chane : OK si les deux chanes sont diffrentes

tests sur valeurs numriques test valeur1 option valeur2 Option -eq -ne Rle Equal : Egal Not Equal : Diffrent

------------------------------------------- --------------------------------------35 Introduction lutilisation du systme Unix Yahya SLIMANI

-lt -gt -le -ge

Less than : infrieur Greater than : suprieur Less ou equal : infrieur ou gal Greater or equal : suprieur ou gal

tests sur les fichiers La syntaxe est test option nom_fichier Option -f -d -c -b -p -r -w -x -s -e -L -u -g Rle Fichier normal Un rpertoire Fichier en mode caractre Fichier en mode bloc Tube nomm (named pipe) Autorisation en lecture Autorisation en criture Autorisation en excution Fichier non vide (au moins un caractre) Le fichier existe Le fichier est un lien symbolique Le fichier existe, SUID-Bit positionn Le fichier existe SGID-Bit positionn

tests combins par critres ET OU NON On peut effectuer plusieurs tests avec une seule instruction. Critre -a -o Action AND, ET logique OR, OU logique

------------------------------------------- --------------------------------------36 Introduction lutilisation du systme Unix Yahya SLIMANI

! (...)

NOT, NON logique groupement des combinaisons. Les parenthses doivent tre vrouilles \(...\).

16. Instruction if ... then ... else La structure if then else fi 'est une structure de contrle conditionnelle. If <commandes_condition> then <commandes excutes si condition ralise> else <commandes excutes si dernire condition pas ralise> fi 17. Choix multiples case La commande case esac permet de vrifier le contenu d'une variable ou d'un rsultat de manire multiple. case Valeur in Modele1) Commandes ;; Modele2) Commandes ;; *) action_defaut ;; esac Le modle est soit un simple texte, soit compos de caractres spciaux. Chaque bloc de commandes li au modle doit se terminer par deux points-virgules. Ds que le modle est vrifi, le bloc de commandes correspondant est excut. L'toile en dernire position (chane variable) est l'action par dfaut si aucun critre n'est vrifi. Caractre * ? [...] [!...] | Rle Chane variable (mme vide) Un seul caractre Une plage de caractres Ngation de la plage de caractres OU logique

18. Les boucles Elles permettent la rptition d'un bloc de commandes soit un nombre limit de fois, soit conditionnellement. Toutes les commandes excuter dans une boucle se placent entre les commandes do et done.

------------------------------------------- --------------------------------------37 Introduction lutilisation du systme Unix Yahya SLIMANI

Boucle for La boucle for ne se base pas sur une quelconque incrmentation de valeur mais sur une liste de valeurs, de fichiers ... for var in liste do commandes excuter done La liste reprsente un certain nombre d'lments qui seront successivement attribues var. Si on ne prcise aucune liste for, alors c'est la liste des paramtres soumise au script qui sera utilise. for params do echo "$params" done Boucle while La commande while permet une boucle conditionnelle tant que . Tant que la condition est ralise, le bloc de commande est excut. On sort si la condition n'est plus valable. while condition do commandes done ou while bloc d'instructions formant la condition do commandes done Boucle until La commande until permet une boucle conditionnelle jusqu' . Ds que la condition est ralise, on sort de la boucle. until condition do commandes done ou until bloc d'instructions formant la condition do commandes done

------------------------------------------- --------------------------------------38 Introduction lutilisation du systme Unix Yahya SLIMANI

Вам также может понравиться