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

Gnal VALET Version 1.

1 : Aot 2009

 Il sagit dune interface texte entre lutilisateur et le systme


 Tout se fait au clavier
 Pas de clic de souris

 Lutilisateur tape des commandes qui sont excutes par le


systme
 Le shell est donc un interprteur de commandes
 Chaque commande a une syntaxe particulire
 Il existe des milliers de commandes diffrentes

 Les commandes peuvent aussi provenir dun fichier


 Le fichier contient les commandes excuter
 Lutilisateur appel le fichier plutt que de taper toutes les commandes
Utile pour les tches rptitives

 Le shell reste le moyen le plus efficace pour contrler le systme


 Cest aussi le plus utilis sous Linux/Unix

 Le shell est un vritable environnement de programmation


 Variables, boucles, structures de contrle if
 Programmes

 Les programmes crits pour le shell sont interprts au moment


de lexcution
 Aucune compilation pralable nest utile
 Les performances ngalent pas un programme en C

 Les programmes crits pour le shell sont des scripts :

 Il existe plusieurs types de shell









Bourne shell
Korn Shell
Bash (Bourne again shell)
Tcsh (Terminal C shell)
Linterprteur de commande MS-DOS (Sous Windows)
PowerShell (Windows 2008 server)

 Sous Linux, on peut choisir son shell


 Le shell bash domine le march actuellement

 La ligne de commande se prsente sous forme de texte ayant la


signification suivante :
Utilisateur
courant

Rpertoire
courant

root@Nom:/home/karim# |
Nom de la
machine

# : Superutilisateur
$ : Utilisateur normal

 Il suffit alors de taper une commande pour quelle soit excute


 Une commande peut tre appele :
 En tapant son nom puis des arguments ou paramtres
 Exemple permettant de rechercher dans le rpertoire courant les
fichiers dont la taille est suprieure 2Mo
root@Nom:/home/karim# find ./ -size +2M

 Chaque commande dispose dentres/sorties :


 Comme lcran (sortie) ou le clavier (entre)

 3 types diffrents:
 Lentre standard dfinie par le symbole stdin et le descripteur 0
Provenant du clavier par dfaut
 La sortie standard stdout et le descripteur 1
Dirige vers lcran par dfaut
 La sortie derreurs stderr et le descripteur 2
Egalement redirige vers lcran par dfaut

 Possibilit de modifier le comportement par dfaut


 En utilisant les redirections dentres/sorties
stdin

Commande

stdout
stderr

Fichier log

 Chaque commande a une syntaxe particulire


 Elle est compose doptions et de paramtres
 Les paramtres permettent de fournir les donnes ncessaires
lexcution de la commande

Ils sont souvent obligatoires


 Les options permettent doffrir des fonctionnalits supplmentaires
qui sadaptent des besoins spcifiques

Exemple : Commande ls -a qui liste aussi les fichiers cachs

 Exemples de syntaxe (SYNOPSIS de la commande cp )


cp [OPTION]... SOURCE... DIRECTORY
commande
Options
facultatives

Paramtre 1
obligatoire

Paramtre 2
obligatoire

 Les options sont prcdes de signe - :


cp r /etc/apache.conf apache.conf.bckp

 ls liste les fichiers dun rpertoire donn


 SYNOPSIS :
ls [OPTION]... [FILE]...

 Quelques options utiles (Attention la casse) :







a : Liste les fichiers cachs


l : Listing long (Plus dinfos sur les fichiers)
S : Classement par taille de fichiers
t : Classement par date de modification

 Exemples :
 Listing long avec rpertoires cachs et fichiers plus gros en 1er
ls alS /etc

 Listing long avec fichiers plus rcents en 1er :


ls lt

 La commande man (Manual) permet dobtenir de laide sur la


syntaxe dune commande
 Trs souvent en Anglais et rarement en franais
 Laide est en gnrale trs complte
Parfois difficile de trouver linformation manquante

 Une page de manuel se dcompose en plusieurs parties distinctes











NAME : Nom et description rapide de la commande


SYNOPSIS : Syntaxe(s) de la commande
DESCRIPTION : Description complte de la commande
OPTIONS : La description des options
AUTHOR : Un mot sur lauteur
BUGS : bugs connus
SEE ALSO : Autres commandes connexes consulter galement
(Dpend des commandes)

 Syntaxe :
man commande

 Exemple : Obtenir laide en ligne pour la commande cp


~# man cp
CP(1)

User Commands

CP(1)

NAME
cp - copy files and directories
SYNOPSIS
cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
DESCRIPTION
Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.
Mandatory
too

arguments

to

long

options are mandatory for short options

 Il existe plusieurs sections dans une page de manuel


 9 au maximum

 Pour obtenir une section donne


man 2 fork

 Les n de sections correspondent un usage particulier :


N

Signification

Commandes disponibles pour les utilisateurs

Appels systmes (en langage C)

Bibliothque de fonctions (API en C)

Pilotes et protocoles rseau

Format de fichiers (Syntaxe des fichiers de configuration)

Jeux

Divers

Commandes disponibles pour les administrateurs

Appels noyau

 Capacit de rediriger les entres/sorties dune commande


 stdout ou stderr vers un fichier plutt qu lcran
 stdin depuis un fichier plutt que le clavier

 Utilisation des oprateurs suivants :


 > : Redirection de la sortie vers un fichier
 >> : Redirection de la sortie la fin du fichier (concatnation)
 < : Redirection de lentre depuis un fichier

 Exemple de redirection de la sortie vers un fichier :


ls l /etc

> listinglisting-etc.txt

 Le listing est crit dans le fichier listing-etc.txt


/etc tap
au clavier

ls

listing-etc.txt

 Redirection de lentre de la commande wc depuis un fichier


 Compte le nb de lignes du fichier listing-etc.txt
wc -l

< listinglisting-etc.txt

 2 syntaxes supplmentaires possibles pour les redirections


n>&m ou
n>fichier

 n : Numro du descripteur rediriger


 m : Numro du descripteur vers lequel on va rediriger
 fichier : Fichier vers lequel seffectuera la redirection

 Rappel : 0 (entre standard), 1 (sortie standard), 2 (sortie erreur)


 Exemple : Rediriger la sortie derreur vers un fichier
 Les messages derreurs seront crits dans erreurs.log
cp /home/karim /home/Salim 2>erreurs.log

 Exemple : Rediriger la sortie standard vers la sortie derreur


cp /home/karim /home/Salim 1>&2

 Exemple : Rediriger stdout ET stderr vers un fichier


commande > fichier.txt 2>&1

 Il sagit de rediriger la sortie dune commande vers lentre dune


autre avec loprateur |
stdin

commande1

stdout

stdin

commande2

stdout

 laborer des commandes complexes en une seule ligne


 Exemple : Filtrer le rsultat de la commande ls avec grep
ls l /etc

| grep mp3

On obtient la liste des fichiers contenant mp3


stdin

ls -l

rout@fredon:~$ ls
-rw-r--r-- 1 karim
-rw-r--r-- 1 karim
-rw-r--r-- 1 karim
-rw-r--r-- 1 karim

stdout

l /etc
karim
karim
karim
karim

|
0
0
0
0

stdin

grep mp3

grep mp3
2008-08-27
2008-08-27
2008-08-27
2008-08-27

15:16
15:16
15:16
15:16

stdout

morceau1.mp3
morceau2.mp3
morceau3.mp3
morceau4.mp3

 Pour excuter une seule commande, rien de plus simple


 Taper son nom au clavier

 Pour excuter plusieurs commandes la suite


 Lexemple suivant cre un rpertoire, sy dplace et cre un fichier
mkdir toto ; cd toto ; touch alire.txt

 Lexcution conditionnelle de commandes est possible


 Les commandes sexcutent les unes aprs les autres sous
condition
 Utilisation des oprateurs && et ||

Lexemple suivant excute commande1 et commande2


seulement si le rsultat renvoy par commande1 est gal 0
commande1 && commande2

Mme chose mais si le rsultat de commande1 est diffrent de 0


commande1 || commande2

 Une commande renvoie toujours une valeur


 0 si la commande sest excute correctement
 1 ou diffrent de zro dans le cas contraire

 Exemple
 La variable $? correspond la valeur renvoye par la dernire
commande excute (Donc la commande cd )
# cd toto
Bash : cd toto : Le rpertoire nexiste pas
# echo $?
1

 Cette valeur peut-tre exploite dans un script pour connatre le


rsultat dune commande avant dexcuter la suite

 Copier le fichier /etc/syslog.conf vers son rpertoire home


cp /etc/syslog.conf ~/

 A laide de la commande cat , filtrer les lignes contenant le mot


internet dans le fichier toto.txt
cat toto.txt | grep internet

 Renommer le rpertoire rapports vers rapport2007 et


stocker les messages derreurs dans un fichier mv-rapport.log
mv rapport/ rapports2007 2>mv-rapport.log

 Crer le fichier rap2009 dans le rpertoire rapports


seulement sil existe
test e rapports && touche rapports/rap2009

 Certains caractres ont une signification particulire


 Interprts par le shell

 Astrisque ou toile : *
 Interprt comme toute suite de caractres alphanumrique
 Exemple : Effacer tous les fichiers commenant par rapport
rm rapport*

 Point dinterrogation : ?
 Interprt comme un seul caractre alphanumrique
 Exemple : Effacer certains fichiers commenant par rapport?.doc
rm rapport?.doc

rapport1.doc sera effac mais pas rapport12.doc

 Point virgule : ;
 Sparateur de commandes
cp bilan.txt bilan2007.txt ; rm bilan.txt

 Les crochets : []
 Remplace un caractre choisi parmi ceux numrs entre les
crochets
 Exemple : Effacer les fichiers dont la 1re lettre est a ou b et
se terminant par .txt
rm [ab]*.txt
[ab]

args1.txt et bilan.txt seront effacs mais pas


comment.txt
 Exemple : Effacer les fichiers numrots de 10 29
rapport12.txt mais pas rapport3.txt
rm rapport[12][0
[12][0[12][0-9].txt
9]

 Lespace
 Utilis comme sparateur de paramtres pour une commande
 Exemple : Effacement de 2 fichiers passs en paramtres
rm rapport.doc rapport2008.txt

 Lantislash : \
 Inhibe le caractre spcial suivant
 Exemple : Effacer un fichier contenant le caractre spcial espace
rm rapport\ .txt

 Autres caractres spciaux : ! , ^, $, <, >,|


 ^ : Exprime la ngation rm [^r]*.txt
 $ : Utilis pour les variables dans les scripts
 ! : Utilis pour accder lhistorique des commandes ( ! suivi du
numro de la commande dans lhistorique. Voir la commande
history )
 <,> : Redirections
 | : pipe (tube)

 Il existe plusieurs dlimiteurs de chanes de caractres


 Apostrophe (simple quote) : texte
Le texte nest pas du tout interprt
 Guillemets (double quotes) : "texte"
Seuls les caractres \ , $ et ` sont interprts
Utilis pour du texte qui contient des variables ou des caractres
spciaux
 Anti-quotes : `texte`
Le texte est interprt comme une commande excuter. Le
rsultat de cette commande sera substitu
Utilis dans le but dexploiter le rsultat dune commande

 Exemples
 Rechercher la chane toto dans tous les fichiers du rpertoire
/home/paul
grep toto /home/karim/*

 Rechercher les fichiers contenant la date daujourdhui


1) Obtenir la date daujourdhui au format JJMMAA
root@Nom:~# date +%d%m%Y
28082008

2) Exploiter ce rsultat pour rechercher cette date dans les


fichiers
root@fredon:~# grep `date +%d%m%Y`
+%d%m%Y` /home/paul/*

 Crer un fichier alire.txt dans le rpertoire home de lutilisateur


La variable $HOME sera remplace par sa valeur
root@Fadma:~# touch "$HOME"
$HOME"/alire.txt

 Dplacer tous les fichiers commenant par bilan vers le


rpertoire bilans quil faut crer avant
mkdir bilans ; mv bilan*.* bilans/

 Afficher la liste des fichiers dont le nom contient bilan2006 et


bilan2007
ls

| grep "bilan" | grep "200[67]"

 Afficher la liste des fichiers dont le nom commence par une


majuscule suivie dune minuscule suivie dun chiffre.
ls | grep "[A-Z][a-z][0-9]"

 Crer un fichier qui sera nomm backup_JJMMAA.dat avec la


date du jour
touch backup_ ` date +%d%m%Y `.dat

 Recherche multicritres
 Par la date, la taille, le nom,

 Syntaxe :
find [-H] [-L] [-P] [path...] [expression]

 path : Chemin o chercher


 expression : Expression permettant de dfinir des critres de
recherche

 Lexpression est construite autour doptions et de tests


 Exemple doption : maxdepth limite la profondeur de recherche
 Exemple de test : name recherche par le nom du fichier

 Rechercher les vidos mpeg dont la taille est suprieure 10Mo


Test sur la taille
find /home/karim/Documents/

-size +10M

+ grand que

-name *.mpeg

Test sur le nom

 Commande puissante permettant de filtrer les lignes dune sortie


de texte
 Affiche uniquement les lignes correspondant aux critres de filtrage
 Trs utilise pour rechercher lintrieur des fichiers

 Syntaxes :
grep [OPTIONS] PATTERN [FILE...]
grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]

 Pattern : Expression rgulire agissant comme filtre


 File : Fichier ou rpertoire o est dbute la recherche

 Options intressantes
 -r : Permet de recherche dans les sous-rpertoires (Peut-tre long)
 -n : Connatre le n de la ligne et donc la position de loccurrence
trouve dans le fichier
 -A : Ajouter la sortie les lignes situes aprs la ligne filtre
 -B : Ajouter la sortie les lignes situes avant la ligne filtre

 Quelques exemples dutilisation de grep


Commande

Signification

grep

"[Mm]icrosoft"

/etc

Recherche Microsoft ou microsoft dans le


rpertoire /etc

grep

"rap200[0-9]"

texte.txt

Recherche rap2001 , rap2002 , etc


jusqu 9

egrep

"[cC]hat|
|[cC]hien"

ls -l | egrep "mpeg|mpg$"

texte.txt

Recherche chien , Chien , chat ou


Chat
Liste tous les fichiers dont lextension est
mpeg ou mpg . Le $ indique que la
chane doit se trouver la fin de la ligne. Le
1er | indique loprateur pipe alors que le
2me indique loprateur ou

 Un script est un fichier contenant un ensemble de commandes


excutes squentiellement
 Sous forme de fichier texte contenant les commandes

 Le script ne peut tre excut que par un interprteur


 /bin/sh pour le shell bash

 Le langage de script shell est un langage volu offrant de


nombreuses possibilits
 Boucles, variables, tests avec if, cration de fonctions,

 Dans quels cas utilise-t-on les scripts ?

Pour effectuer un travail rptitif


Pour des tches dadministration systme
Pour installer des programmes
Au dmarrage du systme pour dmarrer les services et applis
Bref : Tout le temps !!!

 Pour excuter le script, il faut appeler linterprteur


root@Nom:~# sh monscript

 Possibilit de simplifier lappel en ajoutant la ligne suivante en


tte du script
#!/bin/sh

 Lappel est alors plus simple


root@Nom:~# ./monscript

 Lutilisateur courant doit possder le droit x pour le fichier


 Exemple : Seul, lutilisateur karim pourra excuter le script
-rwx
xr--r-- 1 karim ensa 7406 2008-08-15 14:44 script.sh

 Pour autoriser les membres du groupe ensa


chmod g+x script.sh

 Ces variables sont dfinies louverture de session


 Leurs valeurs dpendent de lutilisateur connect
 Exemple : Variable PATH
 Dfini les diffrents chemins o chercher les commandes
root@Fadma:~# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin

 La commande export permet de crer/modifier une variable


 Cette modification est temporaire
root@Nom:~# export VAR=VALEUR

 Pour rendre leffet permanent, il faut ajouter export au fichier


.bashrc

.bashrc est un fichier cach

 Pour modifier la variable PATH sans effacer son contenu


root@Nom:~# export PATH=$PATH:/nouveau/repertoire

 Il sagit dun fichier texte au format suivant :


#! /bin/sh
# Commentaires : Fonction du script
# Auteur : toto
# Version : 1.0 - Oct 2008
# Dbut du script

 Un script peut accepter des arguments


 Il faut donc vrifier ces arguments avant de commencer le traitement
 Rappeler le fonctionnement du script par un message derreur
Usage de la commande : script.sh arg1 arg2 arg3
arg1 : 1er argument , arg2 : 2me

argument, arg3 : 3me

argument

 Elles sont dfinies implicitement et peuvent tre utilises tout


moment dans le script
 Quelques variables utiles






$0 : Nom du script (Utile lorsquon renomme le script)


$1 $9 : Argument 1 9 passs au script
$# : Nombre darguments passs au script
$? : Rsultat de la commande prcdente
Exemple

#! /bin/sh
cp $1 tata.txt
echo $?

 Excution
root@karim:~/Documents/cours-shell# ./script.sh file.txt
cp: ne peut valuer `file.txt': Aucun fichier ou dossier de ce type
1

 Permet deffectuer une excution conditionnelle


if [ expression ]
then
# commandes excuter si la cond. est vraie
else
# commandes excuter si la cond. est vraie
fi

 Lexpression est constitue doprateurs


 Liste des oprateurs numriques
-eq : Egalit (Equals)
-ne : Non galit (Non Equals)
-lt : Infriorit (Less than)
-le : Infriorit ou galit (Less or equals)
-gt : Supriorit (Greater then)
-ge : Supriorit ou galit (Greater equals)

 Liste des oprateurs sur chane de caractre


-z : Chane vide
-n : Chane non vide
= : Egalit de chane
!= : Non galit de chane
 Liste des oprateurs sur fichiers
-L : Lien symbolique
-d , -f : Rpertoire, Fichier
-s : Fichier vide
-r, -w, -x : Droits qui sappliquent (Lecteur, Ecriture, Excution)
-nt : Plus rcent (Newer than)
-ot : Plus vieux (Older than)

 Liste des oprateurs logiques


! : Ngation
-a : Et (And)
-o : Ou (Or)

 Exemples
# Teste si le paramtre $1 est egal 2
if [ $1 -eq 2 ]
then
# Commande
fi
# Teste si le paramtre $1 est un fichier OU un rpertoire
if [ -d $1 o f $2 ]
then
# Commande
fi
# Teste si le fichier existe
if [ ! f "/etc/toto.conf ]
then
# Commande excute si le fichier nexiste pas
fi

 Tester si le paramtre 2 est un fichier


if [ -f $2 ]; then ; fi

 Tester si le paramtre 1 gale toto ET paramtre 2 suprieur 3


if [ $1="toto" a $2 gt 3 ]; then ; fi

 Tester si le paramtre 1 nest pas un rpertoire ET sil a le droit


dcriture
if [ ! d $1 a w $1 ]; then ; fi

 Script capable de crer le rpertoire pass en argument et de


vrifier que sa cration na pas provoqu derreurs
if [ ! d $1 ]; then
mkdir $1
if [ $? eq 0 ]; then
echo "Erreur lors de la cration de $1
exit 1
fi
fi

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