Académique Documents
Professionnel Documents
Culture Documents
php3
Forums Tutoriels Magazine FAQs Blogs Projets Chat Newsletter Emploi Contacts
Accueil Conception Java .NET Dév. Web EDI Langages SGBD Office Solutions d'entreprise Applications Systèmes
FORUM LINUX FAQ LINUX TUTORIELS LINUX LIVRES LINUX LINUX TV UNIX GTK+ Qt APACHE
1. Les commandes
a. Internes
b. Externes
c. Complexes
d. Scripts
2. Flux de données
a. Entrée standard
b. Sortie standard
c. Sortie d'erreur standard
d. Redirections
3. Caractères spéciaux
4. Les variables du Shell
a. Variables d'environnement
b. Autres variables
c. Déclaration
d. Manipulation
5. Fichiers de commandes
a. Exécution
b. Paramètres
6. Structures
a. if then else
b. case
c. for
d. while
e. until
7. Tests
a. Chaînes de caractères
b. Chaînes numériques
c. Fichiers
d. Autres opérateurs
Les commandes
Le Shell est un programme qui permet l'exécution de commandes qui affichent en générale un
résultat à l'écran.
Tout programme en cours d'exécution est appelé processus. Le Shell en est un.
Commandes internes
Les commandes internes au Shell font partie intégrante du Shell et leur exécution
n'implique pas la création d'un nouveau processus.
Commandes externes
Ce sont des programmes binaires généralement situés dans le répertoire /bin que le Shell
va exécuter sous la forme d'un nouveau processus.
Commandes complexes
Exemple :
Fichiers de commandes
Appelés aussi scripts Shell, ces fichiers textes regroupent une succession ordonnée de
commandes et de structures de contrôles. Ecrire un script revient à faire de la
programmation.
Exemple :
if [ $# -eq 1 ]
then if [ -f "/bin/$1" ]
then echo "Commande externe."
fi
else echo "Syntaxe: $0 commande"
fi
l'entrée standard
la sortie standard
la sortie d'erreur standard
Entrée standard
L'entrée standard est le canal d'entrée des données qui est utilisé par le système. Par
défaut c'est le clavier.
Ainsi, les commandes du Shell prennent leur paramètres sur l'entrée standard.
Sortie standard
La sortie standard est le canal de sorties des données. C'est par ce canal que transitent les
données résultant de l'exécution d'une commande. C'est en général un terminal, c'est-
à-dire l'écran.
Ainsi, les commandes du Shell écrivent très souvent des résultats sur la sortie standard.
La sortie d'erreur standard est le canal par lequel les messages d'erreurs transitent, c'est
en général l'écran. Il arrive quelque fois qu'une fenêtre soit spécialement dédiée à ce
canal.
Dès qu'un code d'erreur est généré par une commande, il est envoyé un message sur ce
canal.
Redirections
Par exemple on souhaite écrire dans un fichier la liste des fichiers d'un répertoire. La
commande ls permet de lister les fichiers d'un répertoire. Cette commande envoie le
résultat de sa recherche sur la sortie standard (écran).
Exemple :
$ ls
amoi.c montage.jpg tp3.c
lettre.doc tp1.c zizitop.mp3
monprog.c tp2.c
Pour rediriger la sortie standard sur un fichier, on utilise le caractère spécial >.
Exemple :
$ ls > liste.txt
Exemple :
$ cat liste.txt
amoi.c montage.jpg tp3.c
lettre.doc tp1.c zizitop.mp3
monprog.c tp2.c
Le caractère > permet de créer le fichier si celui-ci n'existe pas lors de l'exécution de la
commande. Si le fichier existe déjà, sont contenu est écrasé.
Exemple :
La commande echo permet d'afficher du texte sur la sortie standard qui est ici redirigée
vers le fichier liste.txt à la suite duquel on écrit la chaîne de caractères passée en
argument.
Exemple :
$ cat liste.txt
amoi.c montage.jpg tp3.c
lettre.doc tp1.c zizitop.mp3
monprog.c tp2.c
Liste de mon répertoire
On voit que le contenu du fichier n'a pas été écrasé et qu'il contient une phrase en plus.
Caractère Description
Caractères spéciaux
En plus des caractères de redirection des flux standards de données, le Shell possèdent des
caractères dont la signification est très... spéciale, les voici regroupés dans le tableau suivant.
Caractère Description
Le Shell possède comme MS-DOS des variables d'environnement qui permettent de garder
en mémoire des informations importantes telles que le login de l'utilisateur (stocké dans la
variable $USER) ainsi que son répertoire de connexion ($HOME), la liste des répertoires dans
lequels aller chercher les exécutables des commandes externes ($PATH), et bien d'autres
encore...
La commande env affiche la liste de toutes les variables d'environnement du Shell avec
leurs valeurs.
Variable=Valeur Description
HOSTNAME=
Nom du serveur.
localhost.localdomain
PATH=:/usr/local/bin:
Liste des répertoires où chercher les
/bin:/usr/bin:
exécutables des commandes externes.
/usr/X11R6/bin
Autres variables
Variable Description
Déclaration
L'utilisateur peut déclarer facilement de nouvelles variables par l'affectation directe d'une
valeur.
Syntaxe : nom=valeur
La valeur de la variable peut être numérique ou être une chaîne de caractère, sont format
n'a pas d'importance.
Une variable peut être utilisée dans n'importe quelle circonstance du moment que c'est
dans le Shell. Son nom doit être précédé du signe dollard ($) et être entre accolades ({}) si
un autre mot lui est contigu.
Exemples :
$ echo $EMAIL
cyberzoide@multimania.com
Dans le second exemple, une chaîne contenant la même variable est passée en paramètre
à echo. Les doubles quotes sont des caractères spéciaux ("...")qui obligent le Shell a
évaluer la valeur des variables que contient la chaîne entre double quote. La commande
echo affiche donc la chaîne à l'écran.
Et enfin, cette fois les simples quotes interdisent au Shell d'évaluer la valeur de la variable.
Donc echo affiche la chaîne brute.
Autres exemples :
Dans le second exemple, la variable est entre accolades afin que le Shell la distingue des
caractères qui suivent.
Dans le dernier exemple, la variable rep contient une chaîne entre accents graves, ce qui
oblige le Shell à l'interpréter comme une commande et à la remplacer par la chaîne qui
serait renvoyée sur la sortie standard à l'exécution de la dite commande.
Fichiers de commandes
Les fichiers de commandes (scripts) sont des fichiers textes qui contiennent des commandes du
Shell ordonnées par des structures de contrôle.
Exécution
Syntaxe : sh script
Cette syntaxe lance un nouveau processus Shell qui lit ses commandes dans le
fichier script. Ce fichier doit être accessible en lecture.
Syntaxe : . script
Le terminal est momentanément remplacé par le fichier script accessible en lecture
(pas de nouveau processus créé).
Syntaxe : script
Lance un nouveau processus Shell qui lit ses commandes dans le fichier qui doit être
accessible en lecture et en exécution.
Syntaxe : exec script
Le Shell courant est remplacé par un processus Shell qui lit ses commandes dans le
fichier qui doit être accessible en lecture et en exécution.
Paramètres
Il est possible d'exécuter un script en lui passant des arguments comme pour n'importe
quelle autre commande.
Variable Description
$# Nombre d'arguments.
$0 Nom de la commande.
Structures
if then else
Structure conditionnelle binaire : suivant qu'une condition est vrai ou fausse on exécute un
bloc ou on ne l'exécute pas.
if condition
then instruction
fi
Si la condition est vraie, alors instruction (qui peut être un bloc d'instruction) est exécutée.
if condition
then instruction1
else instruction2
fi
Si la condition est vraie, alors instruction1 est exécutée et la seconde est ignorée, sinon
c'est instruction2 qui est exécutée et la permière est ignorée.
if condition1
then instruction1
elif condition2
then instruction2
fi
elif est équivalent à else if . Ainsi l'instruction2 n'est exécutée que si condition1 et
condition2 sont toutes deux vraies en même temps.
case
case chaine in
motif_1) instruction1;;
motif_2) instruction2;;
...
motif_k) instructionk;;
esac
Si la chaine de caractères est semblable au motif_1 (qui est une chaîne d'expansion de
chemin, accepte les méta caractères * ?, [], {} et ~) alors l'instruction1 est exécutée.
La chaine peut tout à fait vérifier simultanément plusieurs motifs différents, dans ce cas
de figure les instructions (ou blocs d'instructions) correspondantes seront tous exécutés.
for
Structure répétitive bornée : boucle dont on connait avant le premier passage le nombre
total d'itérations.
On fait donc varier la variable en lui faisant prendre successivement toutes les valeurs de
l'ensemble.
while
while condition
do
instructions
done
Boucle dont les instructions sont exécutées tant que l'expression condition est vrai.
until
Structure répétitive jursqu'à ce que la condition soit vraie (i.e. tant qu'elle est fausse).
until condition
do
instructions
done
Boucle dont les instructions sont exécutées tant que l'expression condition est fausse.
Tests
Les conditions des structures peuvent être évaluées grace à la commande test.
Chaînes de caractères
test -z chaine
Renvoie vrai si chaine est vide.
test -n chaine
Renvoie vrai si chaine n'est pas vide.
Chaînes numériques
Opérateur Signification
-eq =
-ne <>
-lt <
-le <=
-gt >
-ge >=
Fichiers
-f fichier ordinaire
-d répertoire
-r accès en lecture
-w accès en écriture
-x accès en exécution
Autres opérateurs
Il est possible de combiner des tests grâce au parenthésage et à l'utilisation des opérateurs
booléens du tableau suivant :
Opérateur Signification
! négation
-a conjonction (et)
-o disjonction (ou)
Responsable bénévole de la rubrique Linux Professionnel : Olivier Van Hoof - Contacter par email
Vos questions techniques : forum d'entraide Linux Professionnel - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2010 www.developpez.com - Legal informations.