G3L Lionel JAMES
Shell Bash
Shell Bash Niveau d butant
Introduction
Les distributions actuelles de GNU/Linux offrent lutilisateur un environnement graphique
quivalant aux syst mes dexploitation propri taires du march . Mais cette ergonomie et
confort dutilisation sous Linux pour lutilisateur d butant nest r ellement pr sente que
depuis quelques ann es. Les distributions actuelles GNU/Linux rivalisent m me
denvironnement graphique tr s divers et avanc s avec lintroduction de la 3D et le support de
lacc l ration des cartes graphiques. Ceci permis aux syst mes sous GNU/Linux de se
d mocratiser dans le grand public avec lapparition des mini-laptop et sur les postes
bureautique pour sa s curit , Linux tant auparavant souvent consid r pour des rudits
ou experts en informatique.
Lhistorique des syst mes sous Linux a, au travers des ann es, gard cet attachement aupr s
dune certaine communaut d' rudits ou dexperts, on peut y voir cet attachement au travers
de ce que lon appel le Shell o lon voit ces dits experts crire des lignes de textes dans
un langage incompr hensif, tout a dans une fen tre noire d nu e de tout esth tisme,
accompagn dune s rie de manipulation des doigts sur le clavier digne dun pianiste !
Ce cours est donc fait pour ces personnes d butants sous un syst me GNU/Linux, car ils
seront coup s re amen s utiliser ce fameux Shell , car certaines choses ne peuvent se
faire que via le Shell et parce que Linux besoin d' tre proche de son utilisateur, et son
utilisateur proche de son Linux, avec tous les avantages et inconv nients que cela impose ;-).
Ce cours ne va clairement pas vous montrer les arcanes dans la manipulations du shell et ses
interactions les plus puissantes avec le Kernel Linux, le Shell tant aussi un langage de
programmation, des ann es de pratiques tant n cessaires.
Ce cours va juste permettre aux d butants dappr hender les principes et les fonctions de
bases du Shell en temps que logiciel, pour comprendre un peu mieux ces fameuses lignes
textes trouv es sur un forum d' rudits Linuxiens et que vous devrez entrer dans votre
terminal .
Document sous licence CC (Cr ative Commons)
- 1 -
G3L Lionel JAMES
Shell Bash
D finition
Le Shell est ce que lon appel un Interpr teur de commandes . Il date de l poque d
UNIX, o le seul moyen de communiquer avec sa machine tait d crire des lignes textes au
clavier, dans un langage compr hensible la fois par lhumain et la machine.
Le r le de la machine tant d'ex cuter les commandes de lutilisateur et dafficher le r sultat
l cran.
Le shell c'est un programme qui se trouve dans le r pertoire /bin.
Par d finition, il doit tre l ger et rapide, et reste un service dacc s privil gi aux Noyau
Linux (Kernel) pour l'ex cution de primitives syst me.
Depuis, cette interface avec la machine a perdur e car elle est rapide et fiable pour
lutilisateur qui la maitrise. Le shell a volu e aux travers des ann es, plusieurs types de Shell
existent :
- le /bin/sh shell Bourne
- le /bin/bash shell Bourne Again SHell
- le /bin/csh C shell
- le /bin/ksh Korn shell
- le /bin/tcsh C shell am lior
mais le principe de base et toujours rest le m me : Les shells sont des interpr teurs, ils lisent
chaque commande saisie par lutilisateur (ou lue partir dun fichier), v rifient et traitent la
syntaxe pour lex cuter.
Ici, nous utiliserons le Shell Bash, lun des plus couramment utilis sur les syst mes
GNU/Linux. Bash est un logiciel libre publi sous GNU GPL.
Les bons c t s du shell
-
-
-
-
facilit de mise en Suvre et install doffice sous tous syst me GNU/Linux (pas
besoin d'installer un autre langage sur votre syst me).
le shell manipule essentiellement des cha nes de caract res : pas de structures
complexes, pointeurs, etc&
le langage est adapt au prototypage rapide dapplications : ex cutions dinstructions
syst mes fiables, rapides et robustes. Le bash se r v le un outil puissant lorsquon le
maitrise.
cest un langage glu : ex cuter et agglom rer des composants divers crits dans
dautres langages.
Les moins bons c t s du shell
- Le nombre de commandes et la documentation difficile d'acc s pour le d butant.
- messages d'erreurs parfois difficiles exploiter, ce qui rend la mise au point des
scripts fastidieuse.
- Temps dapprentissage : la syntaxe est coh rente mais ardue. De nombreuses ann es
dutilisation sont n cessaires pour tre laise avec la ligne de commande.
Document sous licence CC (Cr ative Commons)
- 2 -
G3L Lionel JAMES
Shell Bash
Rappels
Avant de lancer un shell, je pense quil est n cessaire de rappeler quelques bases bien utiles.
Le shell permet avant tout d'ex cuter des commandes, d'explorer l'arborescence du syst me,
de cr er, d' diter et de supprimer des fichiers, etc.
Au travers du Shell, vous touchez donc des parties tr s importantes et sensibles de votre
syst me dexploitation, et ex cuter des commandes que lon ne comprend pas peut vraiment
avoir des cons quences catastrophiques sur ce dernier ! raison de plus pour faire quelques
rappels et d tre laise avec ces commandes.
La recommandation principale dans lutilisation du shell est la prudence ! executer des
commandes en root ne doit seffectuer que pour des t ches bien specifiques
dadministration que lutilisateur maitrise parafaitement.
Les commandes effectu es dans ce cours peuvent seffectuer avec un simple compte
utilisateur, pas besoin d tre en root !
Larborescence sous Linux
Sous Linux, on ne le rappellera jamais assez, tout est fichier !
Chacun de ces fichiers est plac quelque part en dessous de la racine / ( root )
Dans /, il faut un ensemble de r pertoires syst mes dont la pr sence de certains est imp rative
(*), et pour d'autre, pr f rable.
"
"
"
"
"
"
"
/dev : C'est ici que les p riph riques (r els et virtuels) sont accessibles (partitions,
disques, cartes son, ports SCSI, ports USB, etc.), mais en mode "donn es brutes". Il
est souvent n cessaire d'utiliser des programmes pour interpr ter ces contenus (par
exemple, en montant la partition /dev/hda1 dans /mnt/hda1 pour acc der aux fichiers).
/mnt : C'est en g n ral cet endroit qu'on acc de aux autres syst mes de fichiers
(autres partitions, CD/DVD, cl s USB, serveurs de fichiers...)
/etc(*) : Ici sont regroup s tous les fichiers de configurations des diff rents logiciels
install s sur la machine ainsi que des fichiers de configuration syst me utilis s au
d marrage de la machine.
/media : Certaines distributions montent les p riph riques amovibles cet endroit.
/var : Fichiers dont le contenu varie
o /var/log : On trouve ici les logs des diff rents logiciels et serveurs. Cela
permet de voir ce qui s'est pass quand quelque chose ne va pas.
o /var/spool : Fichiers en cours de traitement (file d'impression, mails en cours
d'envoie...)
o /var/tmp : Fichiers temporaires (voir aussi /tmp).
/home : Chaque utilisateur poss de son propre r pertoire pour y stocker ses fichiers
personnels et la configuration des programmes.
/usr(*) : R pertoire contenant les fichiers du syst me partageables en r seau et en
lecture seule.
Document sous licence CC (Cr ative Commons)
- 3 -
G3L Lionel JAMES
Shell Bash
"
"
Publicité
"
"
"
"
/opt : R pertoire contenant les applications compl mentaires (dites : add-on)
nappartenant pas la distribution install e.
/tmp : Sont stock s ici les fichiers temporaires (fichiers cr s pendant le
fonctionnement des logiciels et supprim s la fin). (Voir aussi /var/tmp)
/boot(*) : Sont stock s ici les fichiers de d marrage du syst me (noyau du syst me,
etc.). On y trouve aussi certains fichiers de configuration (GRUB...)
/lib(*) : Ce sont des biblioth ques utilis es par divers programme (C'est l' quivalent
des DLL Windows). Par exemple, libjpeg.so permet tous les programme de lire et
crire des fichiers JPEG.
/sbin(*) : Ce r pertoire contient les programmes syst mes et les outils d'administration
(par exemple les outils permettant de formater un disque).
/bin(*) : Ici sont situ s les programmes utilis s la fois par les utilisateurs et les
administrateurs. Ensemble de fichiers ex cutables repr sentant les commandes.
Lancer un Shell (mode console ou terminal)
Pour acc der la ligne de commande, il est possible d'utiliser un terminal (xterm, kterm,
gterm) ou encore une console virtuelle.
Pour ce faire, plusieurs possibilit s sont offertes :
" utiliser le menu du bureau (Gnome, Kde, etc.). Il s'agit de la m thode conseill e.
" utiliser le menu lancer une application. Dans la fen tre ainsi ouverte, taper le nom de
terminal et valider. La fen tre lancer une application peut tre ouverte avec Alt+F2
" Utiliser les consoles virtuelles (il y en a 6).
La console virtuelle
La console virtuelle (tty1 tty6) est un cran noir o une invite de commande appara t, de la
forme login :
Depuis l'interface graphique, il est possible de se connecter une console virtuelle en utilisant
la combinaison de touches Ctrl+Alt+FN, o N est un chiffre de 1 6.
Pour revenir au mode graphique depuis une console virtuelle, utiliser la combinaison de
touches ALT+F7.
Document sous licence CC (Cr ative Commons)
- 4 -
G3L Lionel JAMES
Shell Bash
Les utilisateurs
Linux a t pens d s lorigine comme tant s curis , multi-t che et donc multi-utilisateurs
(gestion de droits multiples).
Rappelez-vous qu une certaine poque, les premiers utilisateurs ne disposaient que dun
seul ordinateur sur lequel chacun se partageait des ressources (temps processeur,
espace disque, m moire, etc&). Les utilisateurs se connectaient alors via des terminaux
( cran, clavier, m me pas de souris !) pour acc der lordinateur central distance via un
proto-reseau (au d but, une simple liaison s rie suffisait !), do linter t dauthentifier
chaque utilisateur et processus qui sy executait.
Cest pourquoi lorsquun utilisateur veut utiliser le syst me sous GNU/Linux, la premi re
tape est tout dabord de sauthentifier aupr s du syst me, se dernier lui attribuant les droits,
des espaces propres qui lui ont t pr definis et attribu s lors de la configuration du syst me :
administrateur, utilisateurs, invit .
Connexion dans une console virtuelle
A l'invite login:, saisir l'identifiant (login) de l'utilisateur, puis valider en appuyant sur Entr e,
l'invite Password: s'affichera. Saisir le mot de passe de l'utilisateur et valider.
"
le mot de passe n'est pas affich l' cran pour des raisons de s curit . Le fait de ne pas
voir l' cran ce que vous tapez, ne doit pas vous inqui ter.
" Si le mot de passe est valide, une invite de commande comme suite doit s'afficher,
indiquant que la connexion a r ussie.
L'invite de commande du shell apr s la connexion
Document sous licence CC (Cr ative Commons)
- 5 -
G3L Lionel JAMES
Shell Bash
Suite la connexion, l'invite de commande (ou prompt) du shell appara t et a en g n ral la
forme suivante :
utilisateur@machine ~ $
" utilisateur - repr sente l'identifiant ou le nom de l'utilisateur connect
" machine- repr sente le nom de la machine sur laquelle l'utilisateur est connect
" ~ est un raccourci qui signifie le r pertoire personnel /home/utilisateur
" $ signifie que vous tes connect en tant qu'utilisateur
utilisateur@machine ~ #
Si au lieu de $ le signe # appara t, alors vous tes connect en tant que superutilisateur
(root).
Gardez l' sprit que les syst mes GNU/Linux utilisent par convention # pour root et $ pour
un utilisateur autre que root.
Ce comportement peut tre chang en modifiant la variable d'environnement PS1, mais cela
est vivement d conseill !
Rappel : root tous les droits, celui aussi de casser votre syst me lors de lexecution
dune commande hazardeuse& pensez donc rester le maximum avec vos droits utilisateur,
la simple commande exit devrait vous permettre de vous reloguer sous votre utilisateur.
Changer didentit
Depuis votre shell vous avez la possibilit de prendre l'identit d'un autre utilisateur existant
sur votre syst me, y compris l'utilisateur "root" (utilisateur qui dispose de tous les privil ges).
Pour faire cela vous avez votre disposition la commande su ou su -
Regarder utiliser la commande su pour plus de d tails.
L'utilisation des commandes
Le principe d'ex cution des commandes repose sur un principe de fonctionnement simple.
L'ex cution est s quentielle, les commandes sont ex cut es les unes la suite des autres. Les
commandes peuvent se suivre sur la m me ligne mais il faut les s parer par des ;
L'execution de la commande s'effectue pas l'appuie de la touche entr e .
Exemples:
$ commande1 ; commande2
La suite de commande : % commande1 ; commande2 ; commande3
correspond la s quence :
$ commande1
$ commande2
$ commande3
Ex cution en tache de fond :
Document sous licence CC (Cr ative Commons)
- 6 -
G3L Lionel JAMES
$ commande &
Ex cution asynchrone :
$ commande1 & commande2
Shell Bash
Nous tudierons plus en d tails lutilisation de caract re & dans la partie Pipeline et
parall lisme du cours.
Quelques commandes de base
Le catalogue de quelques commandes de bases est d j assez fournit comme vous allez
pouvoir le constater. L'int r t tant d'en conna tre le maximum sinon la commande man sera
toujours l pour vous aider!
Toutes ces commandes sont sensibles la case (majuscule/miniuscule), le caract re
d'espacement servant de s parateur.
cat : Lit (concat ne) un ou plusieurs fichier(s), affichage sur la sortie standard
cd : ChangeDirectory, change de r pertoire. 'cd' seul permet de revenir dans le home directory
chmod : CHangeMODe - change le mode d'acc s (permissions d'acc s) d'un ou plusieurs
fichier(s)
chown : CHangeOWNer - change le propri taire d'un ou de plusieurs fichier(s)
cp : copier des fichiers
crontab : planification de t ches
cut : Retire des parties pr cises de texte dans chaque ligne d'un fichier
date : Affiche la date selon le format demand
dd : DevicetoDevice - Recopie octet par octet tout ou partie du contenu d'un p riph rique
(habituellement de stockage) vers un autre p ripherique.
df : affichage de la quantit d'espace libre disponible sur tous les syst mes de fichiers
du : DiksUsage - l'utilisation de disque
Publicité
echo : Affiche du texte sur la sortie standard ( l' cran)
exit : arr te l'ex cution du shell
find : recherche de fichiers
fsck : FileSystemChecK - v rification d'int gralit de syst me de fichiers
grep : recherche dans un ou plusieurs fichiers les lignes qui correspondent un motif
groupadd : Ajouter un groupe d'utilisateurs
gunzip : d compression de fichiers
gzip : compression de fichiers
head : affiche les premi res lignes (par d faut 10) d'un fichier
help : affiche une aide sur les commandes internes de bash
history : affiche lhistorique des commandes d j utilis es
kill : envoyer un signal un processus
less : programme d'affichage l' cran
ln : cr ation de liens
ls : liste le contenu des r pertoires
man : Une des plus importantes! affiche les pages de manuel de la commande qui suit.
mkdir : MaKeDIRectory - cr e un r pertoire
mkfs : MaKeFileSystem - cr ation de syst mes de fichiers
more : programme d'affichage l' cran
mount : monter un syst me de fichiers
Document sous licence CC (Cr ative Commons)
- 7 -
G3L Lionel JAMES
Shell Bash
mv : d placer, renommer un fichier
ps : affiche les processus en cours d'ex cution
pwd : Print name of current/working directory - affiche le chemin complet du repertoire
courant
rm : suppression de fichiers
rmdir : Remove empty directories - suppression d'un dossier vide
tail : affiche les 10 derni res lignes d'un fichier
tar : cr ation d'archives
su : Substitute User identity ou Switch User - prendre l'identit d'un utilisateur
uname : Affiche des informations sur le syst me.
useradd : ajouter un utilisateur
whereis : localiser une commande ( quivalent which).
Les man pages
Comme on la vu, le nombre de commandes est assez importante, et encore, nous nen avons
vu quune toute petite partie ! Acc der la documentation en ligne de commande se r v le
donc Essentielle tout utilisateur du shell, m me lexpert.
La syntaxe pour appeler la documentation dune commande est simple :
man commande
man n commande
n - le num ro de la page man (vous le verrez en haut gauche)
$ man crontab
En r gle g n rale dans la partie SEE ALSO d'une page de "man", vous trouverez la liste des
commandes qu'il est conseill de consulter ayant un rapport direct avec la commande dont
vous lisez le manuel.
Regardez la partie SEE ALSO et vous remarquerez les pages qui sont conseill es de
consulter. Cela veut dire qu'on peut taper :
$ man 5 crontab
$ man 8 cron
la touche "q" pour quitter la page man et revenir l'invite de commande (prompt)
Pour obtenir la description succincte d'une commande, on va utiliser l'option "-f"
man -f commande
whatis commande
Pour conna tre les rubriques qui contiennent dans leur pr sentation un mot cl , l'option "-k" :
man -k commande
Document sous licence CC (Cr ative Commons)
- 8 -
G3L Lionel JAMES
Shell Bash
Manipuler des variables
Apr s connexion, l'utilisateur est connect dans son environnement. Cela signifie que le shell
met sa disposition des variables d'environnement, c'est- -dire un conteneur m moire dans
lequel des donn es propre chaque utilisateur ou au syst me sont stock es.
Pour afficher le contenu d'une variable d'environnement, la commande echo
$NOM_VARIABLE peut tre utilis e.
Le nom des variables d'environnement est par convention en majuscules, il est donc
n cessaire de respecter la case pour ces variables.
Variables d'environnement conna tre
HOME, USER, GROUPS, UID, PWD, SHELL, PATH, HOSTNAME
" HOME contient le r pertoire d'utilisateur
" USER contient le login d'utilisateur
" PWD contient le r pertoire courant
" SHELL contient le nom du shell de connexion
" PATH contient la liste des r pertoires o se trouvent les commandes que l'utilisateur
peut ex cuter
" HOSTNAME contient le nom de la machine
" HISTSIZE contient la taille maximale des commandes ex cut es contenues dans le
fichier historique
" PS1 contient les param tres d'affichage de l'invite de commande du shell
" PS2 contient le prompt
Exemples:
R cu rer les variables globales denvironnement :
$ env
R cu rer toutes les variables denvironnement + variables locales :
$ set
Donne linvite de commande du shell :
$ echo $PS1
Donne linvite du prompt :
$ echo $PS2
Variables locales
Ici, nous allons juste voire comment bash peut se transfromer en petite calculatrice ou
executer de petites commandes tr s simples. Cela nous donnera un aper u de ce quest une
variable locale et louverture que cela propose lorsque nous tudierons les scripts .
Document sous licence CC (Cr ative Commons)
- 9 -
G3L Lionel JAMES
Shell Bash
Ici, nous effectuerons juste un affichage Hello world et laddition de 2 variables A et B :
Exemples:
Pour faire afficher au terminal sur l cran la cha ne Hello world au travers dune variable
locale :
$ var=Hello world
$ echo bonjour, $var
Maintenant le calcul de A + B :
$ A=1 ;B=2
$ echo $A+$B
ne donne pas ce quoi lon sattend& normalement, bash traite les valeurs des variables
comme des cha nes de caract res. On peut effectuer des calculs sur des nombres entiers, en
utilisant la syntaxe $(( ... )) pour d limiter les expressions arithm tiques:
$ echo $(($A+$B))
Fichiers de configuration du shell
Au moment de la connexion, dans une console virtuelle ou l'ouverture d'un terminal en
mode graphique, le shell utilise des informations qui se trouvent dans certains fichiers
(.bashrc, .bash_profile, etc)
Le comportement du shell peut tre modifi en ditant ces fichiers.
Le fichier .bashrc est par exemple utilis dans le chapitre sur les alias.
Pour ce qui est de la configuration de votre shell vous devez attendre un peu, a ne sera pas
pour tout de suite. Vous apprendrez le faire avec le temps, donc patience&
Document sous licence CC (Cr ative Commons)
- 10 -
G3L Lionel JAMES
Shell Bash
Publicité
De la navigation lutilisation
Naviguer dans larborescence du syst me de fichiers
Dans les syst mes de la famille Unix, la racine repr sente le sommet de l'arborescence des
r pertoires
Elle est repr sent e par le caract re / (slash) et signifie "root" (racine en fran ais).
Tous les r pertoires de votre syst me sont li s la racine de fa on directe ou indirecte.
Concernant les syntaxes utiliser pour naviguer dans larborescence du syst me de fichiers :
O suis-je ?
Une chose tr s importante savoir quand on est connect dans un shell, c'est de savoir o lon
se trouve dans l'arborescence :
La commande pwd (PrintWorkingDirectory) affiche votre localisation dans l'arborescence.
$ pwd
Le chemin absolu
Le chemin absolu repr sente l'arborescence compl te de fichiers, en partant de la racine
Exemple :
Le fichier b.txt se trouve dans /home/user/doc/text
Vous vous trouvez dans /home/user/ascii
Le chemin absolu vers b.txt est donc /home/user/doc/text/b.txt
Quelque soit votre localisation dans l'arborescence l'utilisation du chemin absolu est le moyen
le plus s r pour acc der au fichier d sir .
Le chemin relatif
Le chemin relatif correspond lacc s un fichier dans l'arborescence rapport votre
localisation dans le shell.
On utilise les notations . et/ou ..
. nous permet de descendre dans l'arborescence du r pertoire courant : indique le r pertoire
courant.
.. nous permet dans un 1er temps de monter en arborescence dans le but d'atteindre d'autres
r pertoires : indique le r pertoire parent.
$ cd ..
Se deplacer dans laborescence
La navigation dans larborescence revient donc utiliser les commandes vues ci-dessus. Mais
l criture des chemins absolus peut tre fastidieux et souvent des erreurs se glissent dans la
syntaxe, cest l que la compl tion de commande nous vient en aide.
Document sous licence CC (Cr ative Commons)
- 11 -
G3L Lionel JAMES
Shell Bash
Compl tion de commandes
Tapez une commande dans un terminal ou ne serait-ce que de se rappeler de sa syntaxe n'est
pas une chose toujours facile.
Malgr a, il existe une touche tr s pratique sous le shell qui vous permet la compl tion des
commandes .
Supposons que jai a taper /usr/bin/tail
La compl tion s'obtient en utilisant la touche TAB
Pour a on va commencer avec le 1er caract re...
"
Je tape /u et j'appuie sur TAB
o Le shell va compl ter et il va crire /usr/
o A ce moment j'ajoute un b donc je suis avec /usr/b
o J'appuie de nouveau sur TAB et j'aurai /usr/bin/
o A ce moment j'ajoute ta, donc j'aurai /usr/bin/ta
o J'appuie 2 fois sur TAB
(cid:1) Le shell sur mon syst me trouve 4 correspondances
(cid:1) tac tack tail tasksel
(cid:1) Je vais continuer et je vais ajouter un i
(cid:1) donc j'aurai /usr/bin/tai
(cid:1) J'appuie de nouveau sur TAB
(cid:1) et j'obtiens /usr/bin/tail
Ainsi, la compl tion nous permet de faire des conomies en ce qui concerne l' criture de la
commande et dans le m me temps la s ret de la syntaxe. Donc utiliser sans mod ration.
Historique des commandes
Les commandes ex cut es sont enregistr es dans un historique.
La variable HISTSIZE contient le nombre maximal des commandes enregistrer.
Vous pouvez acc der l'historique avec la commande history
$ history n | less
" n - l'option n permet d'afficher les n derni res commandes (facultatif)
"
less - la commande "less" vous permet de naviguer dans l'historique
o les fl ches haut et bas vous permettent de naviguer dans l'historique
o !n - permet d'ex cuter la commande correspondant au num ro "n" dans la liste
sans avoir la retaper
Document sous licence CC (Cr ative Commons)
- 12 -
G3L Lionel JAMES
Les raccourcis clavier
Shell Bash
cd : revenir dans le r pertoire personnel
cd - : revenir dans le r pertoire pr c dent (uniquement si vous avez ex cuter un cd)
Ctrl+l : effacer l' cran
Ctrl+c : arr t d'une commande
Ctrl+z : suspendre(mettre en pause) une commande
CTRL+t : corr ction d'une erreur de frappe en inversant 2 lettres
Ctrl+a : aller au d but de ligne
Ctrl+e : aller la fin de ligne
Ctrl+s : interruption de la sortie de terminal (masquer la saisie)
Ctrl+q : annuler l'interruption de la sortie (afficher la saisie)
Ctrl+u : efface tout gauche du curseur
Ctrl+w : efface le mot gauche du curseur
Ctrl+k : efface le mot droite du curseur
Ctrl+y : coller la saisie pr c dente
Ctrl+d : efface le caract re courant, si la ligne est vide deconnexion
Alt+b : se d placer en avant, mot par mot dans la ligne de commande
Alt+f : se d placer en arri re mot par mot dans la ligne de commande
Alt+d : efface le mot suivant
Alt+t : change le mot courant avec le mot pr c dent
Alt+c : met en majuscule la lettre courante, tout le reste dut mot courant en minuscules, puis
se deplace au mot suivant
Alt+l : met en majuscules partir de la lettre courante jusqu' la fin de mot, puis se deplace au
mot suivant
Alt+u : met en minuscules partir de la lettre courante jusqu' la fin de mot, puis se deplace
au mot suivant
Alt+Backspace : effacer le mot pr c dent ( quivalent Ctrl+w)
Document sous licence CC (Cr ative Commons)
- 13 -
G3L Lionel JAMES
Shell Bash
Les entr es/sorties et redirection
Redirections standards
Une partie qui peut se reveler obscure mais qui est vraiement tr s pratique lorsquon la
ma trise est la notion de redirection des entr es / sorties standard.
Pour comprendre, il faut visualiser lutilisateur devant son clavier et son cran. Il a donc a sa
disposition :
" Son clavier : qui lui permet dins rer des commandes, dans le jargon informatique cela
correspond stdin
" Son cran : qui lui permet de voire safficher les commandes trait s par son terminal,
et qui dans le jargon informatique correspond stdout, voir m me les erreurs
eventuelles suite au traitement de commandes par le terminal, correspond stderr.
Ensuite, chacun de ces 2 p riph riques poss de un num ro de fichier descripteur de 0 2
(cid:3) clavier
Stdin
Stdout (cid:3) ecran
Stderr (cid:3) ecran
(cid:3) 0
(cid:3) 1
(cid:3) 2
Publicité
La redirection consiste rediriger un flux dinformation ou une commande vers le bon
descripteur de fichier en utilisant le symbole > ou < suivant le sens de la direction du flux
ou en utilisant d'autres destinations que les descripteurs standards.
Pour r aliser une redirection on utilise la syntaxe :
commande > fichier - redirection en mode criture vers le fichier, le fichier est cr s'il
n'existe pas et son contenu sera remplac par le nouveau si le fichier existe d j .
commande >> fichier - redirection en mode ajout vers le fichier, le fichier est cr s'il
n'existe pas et le r sultat sera ajout la fin de fichier.
commande < fichier - la commande lit depuis le fichier
Combin des commandes de base, ceci permet de r aliser des traitements tonnants ! mais
necessite aussi une longue pratique& mais des commandes simples peuvent se r v ler d j
tr s utiles pour faire un peu de tout.
2>fichier et/ou 2>>fichier : pour rediriger la sortie d'erreur standard vers fichier.
>&2 : redirige la sortie standard vers la sortie d'erreur.
2>&1 : redirige la sortie d'erreur standard vers la sortie standard.
n>&m : tout ce qui crit sur le descripteur n sera envoy vers le descripteur m.
Exemples:
Document sous licence CC (Cr ative Commons)
- 14 -
G3L Lionel JAMES
Shell Bash
- envoyer le contenu de fichier1 dans le fichier2. Si le fichier2 existe son contenu d'origine
sera supprim , le fichier2 est cr s'il n'existe pas
$ cat fichier1 > fichier2
- envoyer le contenu de fichier1 dans le fichier2 - mode ajout
si le fichier2 existe, le contenu du fichier1 est ajout la fin de fichier2, si le fichier2 n'existe
pas, il sera cr
$ cat fichier1 >> fichier2
- Recherche dans la racine le fichier appel fichier.txt, les erreurs au lieu d' tre envoy es sur
STDERR ( l' cran) sont envoy es dans /dev/null (sorte de poubelle sans fin)
$ find / -name fichier.txt 2>/dev/null
- Recherche dans la racine le fichier appell fichier.txt, les erreurs au lieu d' tre envoy es sur
STDERR ( l' cran) sont envoy es dans le fichiers erreur.txt
$ find / -name fichier.txt 2>erreurs.txt
- On veut afficher un message d'erreur, donc utiliser la sortie d'erreur.
echo "$0 : vous n'avez pas le droit d' crire dans le fichier $1">$2
Pipeline et parall lisme
Donc en plus des redirection, il existe aussi les commandes pip es ou pipe (tune en
anglais), encha n es par un | et des commandes execut es en parall le &. Le shell cr e les
processus associ s chaque commande, et d tourne la sortie du premier sur l'entr e du
second.
commande1 | commande2 - le r sultat de la commande1 est utilis par la commande2
commande1 & commande2 - les commandes sont ex cut es simultan ment, commande1
s'ex cutant en arri re-plan
commande1 && commande2 - si la commande1 r ussi la commande2 est execut e
commande1 || commande2 - la commande2 s'ex cute seulement si la commande1 choue
commande1;commande2 - les commandes sont ex cut es dans l'ordre
Le pipe :
Par exemple, wc est une commande qui calcule le nombre d'octets, de mots, de lignes de son
$ cat *.pas | wc -l
Sans le savoir, cat affiche le contenu sur stdout, mais pas l' cran, sur le stdin de wc. Sans
le savoir, wc lit son stdin et cumule les retours la lignes \n. Il affiche alors sur stdout le
r sultat, qui est le nombre de ligne de tous les fichiers .pas d'un r pertoire. C'est simple, et pas
facile faire dans d'autres environnements.
Le parall lisme et la d pendance :
On peut lancer une commande en parall le pendant que la principale continue son execution :
Document sous licence CC (Cr ative Commons)
- 15 -
G3L Lionel JAMES
$ echo a & echo b
Pour la d pendance des commandes :
Shell Bash
$ commande1 && commande2 && commande3
La commande2 s'ex cute ssi le code de sortie de commande1 vaut 0. De m me commande3
s'ex cute ssi le code de sortie de commande2 vaut 0.
$ commande1 || commande2 || commande3
La commande2 s'ex cute ssi le code de sortie de commande1 est diff rent de 0. De m me
commande3 s'ex cute ssi le code de sortie de commande2 est diff rent de 0.
Exemple :
$ echo si ok && echo reussi
avec une erreur :
$ ech si ok && echo reussi
Vous remarquez que dans le 1er cas les 2 commandes s'ex cutent.
En revanche dans le 2 me cas j'ai fait volontairement une erreur de syntaxe pour la 1 re
commande.
Le shell ne regarde m me pas le 2 me commande et il s'arr te en nous disant que ech n'est
pas une commande connue.
Pour lalternative :
$ echo si ok || echo reussi
Dans le 1er cas vous remarquez que seulement la 1 re commande s'ex cute.
Dans le 2 me cas le shell affiche une erreur pour la 1 re commande mais il ex cute quand
m me la 2 me.
Les scripts
Les shells ne sont pas seulement des interpr teurs de commandes mais galement de
v ritables langages de programmation.
Un script correspond une suite de commandes crite dans un fichier. Ceci permet
dautomatiser certaines t ches r p titives ou de faire de petits programmes adapt s aux
besoins de lutilisateur.
Ici, nous cr erons un script pour le shell bash. 3 tapes suffisent :
" Cr er un fichier contenant comme premi re ligne la syntaxe suivante:
#! /bin/bash
" Rendre ce fichier executable en utilisant la commande:
$ chmod u+x script
" Executer le script en utilisant la commande:
$ script (ou le path s'il ne se trouve pas dans $PATH) ou
$ .\script
Document sous licence CC (Cr ative Commons)
- 16 -
G3L Lionel JAMES
Exemple :
Cr er le fichier test (touch Progtest) et ins rer le contenu suivant :
#! /bin/bash______# interpr teur
commande1
commande2___# m me chose que : commande1; commande2
Shell Bash
Si on ne veut pas que le fin de ligne soit interpr t , il suffit de mettre un "\ " en fin de ligne.
#! /bin/bash
commande\
Suite de la commande tr s longue
Ressources documentaires :
http://www.bash-linux.com/unix-man-pipe-francais.html
http://www.linux-france.org/article/dalox/unix04.htm
http://aral.iut-rodez.fr/fr/sanchis/enseignement/bash/index.html
http://www-gtr.iutv.univ-paris13.fr/Cours/Mat/Systeme/TDTP2003/tp03.html
http://www.commentcamarche.net/faq/sujet-4801-guide-d-utilisation-du-shell-pour-debutant
http://www.commentcamarche.net/faq/sujet-6353-l-arborescence-du-systeme-de-fichiers-de-
linux
http://www.framasoft.net/article2425.html
http://easynux.org/forum/viewtopic.php?id=389
http://www.commentcamarche.net/contents/linux/linusr.php3
http://www.tuteurs.ens.fr/unix/
http://lifc.univ-fcomte.fr/~dedu/docs/script.html#exemple
Document sous licence CC (Cr ative Commons)
- 17 -