Académique Documents
Professionnel Documents
Culture Documents
Shell
Un shell est une interface utilisateur pour le
système d’exploitation UNIX (ou LINUX), i.e., un
programme qui prend les commandes d’un
1
Scripts SHELL 1 utilisateur et les traduit en instructions que l’OS
peut comprendre
Matière de Max Mignotte
Modifications: Alena Tsikhanovich
3 Shell 4 Scripts
Responsabilités
Fournir
Une interface de ligne de commande (interpréteur)
Ensemble de commandes système mises
Un langage de programmation qui permet d’exécuter
ensemble dans un fichier texte et combiner
des Scripts (programmes shell) entre eux par un langage de programmation
Faire une redirection des I/O destiné à être interprété (Shell)
Faire une substitution de paramètres, variables, …
Exemple
sort –n phonelist > phonelist.sorted
Trier (sort) dans l’ordre numérique (–n) et rediriger (>) le
résultat de l’exécution de la commande dans le fichier
phonelist.sorted
5 Shell et Administrateur Système 6
Historique
Utilise le shell pour communiquer avec le noyau du L’indépendance du Shell de l’OS a conduit au
système développement de douzaine de shells différents (très
similaires mais avec leurs propres sémantiques et
Configurer le système, les services du réseau, syntaxes)
variables d’environnement etc. Bourne Shell (Steven Bourne) – sh
La plupart de l’administration d’un système est Inclus dans la première version de UNIX en 1979
contrôlée par des scripts shell C Shell - csh, Structure syntaxique très similaire au langage C
Korne Shell – ksh, extension du Bourne Shell, produit commercial
d’IBM & AT & T pour la version d’UNIX d’IBM (AIX), incorporant les
meilleurs caractéristiques des 2 premiers
‘ Guillemet fort
“ Guillemet faible
15 16
Exemples Exemples
Les crochets permettent de spécifier un ensemble de
Supposons qu’on a les fichiers bob, darien, dave, ed, frank, caractères explicite ou intervalle de caractères séparés par
fred dans le répertoire courant un tiré
Expression Désignation Expression Désignation
fr* frank, fred [abc] a, b, c
*ed ed, fred [-_] -, _
b* bob [a-c] a, b, c
*e* dariene, dave, ed, fred [a-z] Toutes les lettres minuscules
*r* dariene, frank, fred [!0-9] Tout ce qui n’est pas chiffre
* bob, darien, dave, ed, frank, fred [0-9!] Tous les chiffres et symbole !
d*e dariene, dave [a-zA-Z] Toutes les lettres majuscules/minuscules
17 18 Scripts SHELL, base
Scripts SHELL, base
Pour afficher beds, bolts, bars
Pour lister tous les fichiers .c, .h et .o echo b{ed,olt,ar}s
ls *.[cho] Pour afficher bards, barns, barks, beds
ls *.{c,h,o} echo b{ar{d,n,k},ed}s}
* - une suite quelconque (éventuellement vide) de Les caractères spécieux doivent être protégés si on désire les
caractères afficher, les rechercher, etc.
Pour lister tous les fichiers commençants par « b » et « e » de echo “2*3 > 5 est vrai”
tous les utilisateurs (usr1, usr2, etc.) echo 2\*3\> est vrai
ls /usr*/[be]*
Exemple de commandes qui utilisent souvent des caractères
Pour afficher tous les noms de fichier commençants par spécieux
code. et finissants par un caractère au plus echo
ls code.? find: find –name \*.jpg
grep: grep image *.tex
echo $1 est le premier argument Syntaxe : shift [ n ] echo $1 est le premier argument
n (nb 1-9) Nième argument
* Tous les arguments
echo $2 est le second argument (n+1) => 1 , (n+2) => 2 , etc. echo $2 est le second argument
echo $3 est le troisième argument
@ Tous les arguments
echo $3 est le troisième argument Une fois le décalage effectué, le
echo Tous les arguments: $@ echo Tous les arguments: $@
$ ID process
paramètre spécial # est mis à jour
echo Numéro du process:$$ shift
argv.sh arg1 arg2 arg3 echo Après le shift
> Il y a 3 arguments echo $1 est le premier argument
> Le nom du script est argv.sh echo $2 est le second argument
> arg1 est le premier argument echo $3 est le troisième argument
> arg2 est le second argument echo Tous les arguments: $@
> arg3 est le troisième argument
> Tous les arguments: arg1 arg2 arg3
> Numéro du process:30116
Scripts SHELL, Variables Arguments
33
Commande shift
shiftarv.sh arg1 arg2 arg3 #!/bin/sh