Shell Bash - Beginner Level Course

Linux Systems and Command Line Interface · course

Voir tous les documents en systèmes d'exploitation et cloud

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 -