0% ont trouvé ce document utile (0 vote)
136 vues4 pages

Introduction au Shell UNIX

Le document décrit le shell Unix, y compris les variables d'environnement, les variables de l'utilisateur, les expressions arithmétiques et les scripts shell.

Transféré par

Chaimae Salsabil00
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
136 vues4 pages

Introduction au Shell UNIX

Le document décrit le shell Unix, y compris les variables d'environnement, les variables de l'utilisateur, les expressions arithmétiques et les scripts shell.

Transféré par

Chaimae Salsabil00
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Prof. C.

EL AMRANI Système d’Exploitation UNIX

Le Shell
L’interpréteur de commandes shell est un programme qui gère l’interface utilisateur-système en
faisant exécuter les commandes que l’utilisateur entre au clavier ou qu’il regroupe dans un
fichier dit script shell. Plusieurs syntaxes (shells) existent pour exprimer ces commandes. Il y
en a en gros 2 familles : les Bourne shells (sh, ksh, bash) dérivant du premier interpréteur de
commande sh écrit par Bourne, et les C-shells dérivant d’interpréteurs de commandes
s’inspirant de la syntaxe du C (csh, tcsh). Le shell est un processus comme les autres en Unix,
ce qui explique qu’on peut le changer ou le réécrire. Lors du login, l’utilisateur est connecté
avec un répertoire et un shell définis lors de la création de son compte [le shell peut être changé
à l’aide de la commande chsh].
Dans la suite du cours, on étudiera le shell bash (compatible sh). Le bash permet une édition
facile des lignes de commandes [on retrouve les commandes précédentes avec les touches
flèches du clavier], la gestion d’un historique des commandes [commande history permet de
lister les commandes tapées précédemment, on reexécute une de ces commande en donnant son
numéro précédé de !].
Souvent sh et bash sont rigoureusement le même produit. sh est un lien symbolique vers bash :
ls –l /bin/sh
/bin/sh -> /bin/bash

1. Les variables d’environnement


Les variables d’environnement sont des variables contenant des chaînes de caractère. Il n’y a
pas de déclarations de types comme en C. Ces variables contiennent des informations
utilisables dans différents programmes.
printenv donne la liste des variables d’environnement. Le shell utilise des variables
d’environnement définies dans les fichiers d’initialisation exécutés lors du login. Comme
exemple des variables d’environnement des Bournes shells on trouve :
PWD : contient le répertoire courant
HOME : contient le répertoire d’acceuil
PATH : contient la liste des répertoires où l’interpréteur recherche les fichiers correspondant
aux commandes
TERM indique le type du terminal
SHELL indique le nom du shell utilisé

Echo $VARIABLE permet d’obtenir la valeur de VARAIBLE


Exemple :
echo $PATH
/usr/local/bin : /bin: /usr/bin: /home/etudiant/bin

On peut modifier la valeur de PATH on y ajoutant un nouveau répertoire :


PATH="$PATH : /home/etudiant/ProgC"

1
2 Le Shell

2. Les variables de l’utilisateur (variables du shell)


L’utilisateur peut définir ses propres variables. Il ne doit pas y avoir d’espace autour du signe =.
Exemple :
A=$HOME/ProgC
echo $A
/home/compte1/ProgC
cd $A (on se met dans le répertoire /home/etudiant/ProgC)

Les variables sont locales au processus. La variable A ne sera pas donc connue dans les
programmes exécutés par l’interpréteur de commandes. Pour qu’une variable soit connue dans
les processus fils d’un processus, il faut la déclarer export. Ces variables exportées peuvent être
testées dans un programme C ou dans un script shell.
Exemple :-
export A=/home/etudiant/ProgC

3. Résultats d’une commande


Habituellement, une commande fournit un résultat indiquant si l’exécution s’est bien passée,
par convention 0 pour vrai ; différent de 0 pour faux. Ce résultat peut être testé en utilisant la
variable ? référencée par $?. Ce résultat est fourni par exit dans un script shell.
Exemple :
rm temp.txt (temp.txt n’existe pas)
echo $?
1

4. Les expressions arithmétiques


expr effectue des opérations arithmétiques avec des variables shell. Les opérateurs classiques
sont utilisables : + - * / %. L’opérateur * doit être protégé et écrit \* car il fait partie des
caractères génériques.
Exemple :
N=2
expr $N + 1 (résultat : 3)
expr 3\* 2 (résultat : 6)

En Korn shell et en bash, on peut écrire plus simplement des expressions arithmétiques en
déclarant un type pour les variables (-i pour les entiers).
Exemple :
typeset –i a=2
typeset –i b=3
typeset –i c=$a*$b
echo $c (résultat : 5)

On peut aussi utiliser une structure ((…)) pour manipuler des variables de type entier.
Exemple :

Prof. C. EL AMRANI
3 Le Shell

((a=20))
echo $((a*=5))
(résultat : 100)

((a=20))
((a*=5))
echo $a
(résultat : 100)

5. Les scripts Shell


5.1. Principe
Un script est un ensemble de commandes répertoriées dans un fichier et ayant éventuellement
des paramètres. Le nom de la commande correspond au nom du fichier. Les variables suivantes
sont prédéfinies dans les scripts Shell :

Liste des paramètres d’appel de la commande ($*)


*
Nombre de paramètres lors de l’appel de la commande ($#)
#
Numéro du processus courant ($$)
$

! Numéro du dernier processus en arrière plan ($ !)

? Valeur du code de retour de la dernière commande exécutée ($?)

Exemple :
echo $$ (résultat 1870)

Exemple de script :
Soit le script : script1

#!/bin/bash chemin d’accès du shell bash


clear efface l’écran
echo -n "Repertoire courant: "; pwd affiche le répertoire courant
date +"%d/%m/%Y a %Hh%M" affiche la date
echo -n "Nmbre de fichiers: " ; ls | wc –l affiche le nombre de fichiers dans le répertoire
courant, « n » pour afficher sur la même ligne

Il faut rendre le fichier exécutable avec :


chmod u+x script1
exécuter avec : ./script1
si on ajoute dans PATH le répertoire ou se trouve script1, ce dernier pourra être lancé de

Prof. C. EL AMRANI
4 Le Shell

n’importe quel répertoire : PATH= "$PATH:$HOME/scripts" (sachant que script1 se trouve


dans le répertoire /scripts)
Exécution de script1 :
29/11/2021 a 12h15
Repertoire courant: /home/compte5/scripts
Nombre de fichiers: 1

Prof. C. EL AMRANI

Vous aimerez peut-être aussi