Vous êtes sur la page 1sur 21

Initiation à Linux

Professeur Jaafar Abouchabaka

Pour la filière SMI, Semestre S3


Chapitre 6 : L’interpréteur de commandes

6.1 Les fichiers d’initialisation


6.2 Les variables du Bash
6.3 Les alias
6.4 La fonction shell
6.5 L’édition de commande en ligne
6.5.1 Mécanisme d’historique
6.5.2 L’édition de commande en ligne
6.6 Utilitaires du Bash
6.6.1 Recherche et complètement d’une commande
6.6.2 Recherche et complètement des noms de fichiers
6.6.3 Substitution du caractère tilde :~
6.7 Quelques commandes internes au Bash
6.8 Exécution d’un script

Pr. J.Abouchabaka Initiation à Linux 2


Chapitre 6 : L’interpréteur de commandes

Introduction

• Le système Linux vous prend en charge, une fois connecté, par un


interpréteur de commandes (shell) : le Bash (bash) par exemple.

• L’ interpréteur est une interface entre l’utilisateur et le système


d’exploitation qui a pour rôle de traduire les commandes saisies par
l’utilisateur afin que le système puisse les exécuter.

• Il existe plusieurs interpréteurs de commandes:


➢ Le Bourne-shell (sh, ancêtre de tous les shells) est démodé en interactif mais
encore utilisé en programmation.
➢ Le C-shell (csh) et sa version plus récente le tcshell (tcshell), est utilisable en
interactif mais non compatible avec le Bourne-shell en programmation.
➢ Le Korn-shell (ksh, plus répandu dans le monde Unix) est très agréable en
interactif et compatible avec le Bourne-shell.
➢ Le Bash (plus répandu dans le monde Linux) est compatible avec le Bourne-
shell. Il inclut en plus des caractéristiques du Korn-shell et du C-shell.

Pr. J.Abouchabaka Initiation à Linux 3


Chapitre 6 : L’interpréteur de commandes

Introduction

• Cet interpréteur offre des améliorations aussi bien en interactif qu’en


programmation.

• Il offre la possibilité de créer des scripts contenant une suite de


commandes pouvant être exécutés en évitant la réécriture de cette
suite.

• Les interpréteurs de commandes possèdent aussi un véritable langage


de programmation interprété permettant la réalisation de programmes
de commandes complexes.

• Il est, alors, nécessaire d’introduire une notion importante du système


d’exploitation : le processus, qui correspond à l’exécution d’un
programme à un instant donné en mettant en mémoire centrale ce
fichier exécutable en vue de son exécution.

Pr. J.Abouchabaka Initiation à Linux 4


Chapitre 6 : L’interpréteur de commandes

Introduction

• Chaque connexion d’utilisateur provoque le lancement d’un processus


défini dans le fichier /etc/passwd, généralement l’interpréteur de
commandes Bash (bash).

• Un processus est reconnu par un numéro appelé le PID (Process


Identifier). Il est possible, à partir du processus interpréteur de
commandes, de lancer une nouvelle commande.

• Dans ce cas le processus lancé est alors appelé le processus fils,


l’interpréteur de commandes étant le processus père.

• Il est aussi possible de lancer un autre shell pour exécuter une nouvelle
commande ou bien pour être pris en charge par ce nouveau shell.

Pr. J.Abouchabaka Initiation à Linux 5


Chapitre 6 : L’interpréteur de commandes

Introduction

• Les commandes sont classées en trois catégories :


➢ Les commandes définies par une fonction shell ou par un alias (une façon de
renommer une commande).
➢ Les commandes internes qui font partie intégrante du shell (pas de création
d’un nouveau processus).
➢ Les commandes externes qui sont indépendantes du shell et qui se trouvent
dans différents répertoires (/usr/sbin, /sbin,…). À chaque lancement d’une de
ces commandes il y a création d’un nouveau processus.

• L’ordre indiqué ci-dessus est celui dans lequel le shell recherche la


commande. Par exemple, en Bash, si un alias porte le même nom
qu’une commande, le shell exécutera l’alias.

Exemple d’un alias


xstra> alias ls="echo Bonjour"
xstra> ls –l /tmp
Bonjour -l /tmp
xstra> unalias ls

Pr. J.Abouchabaka Initiation à Linux 6


Chapitre 6 : L’interpréteur de commandes

Introduction

Les variables shell


• Tout interpréteur de commandes permet de définir des variables shell.

• Une variable est définie par son nom et contient une valeur.
• Le nom d’une variable shell est une chaîne de caractères alphanumériques, le
premier étant alphabétique.
• La valeur d’une variable shell est une chaîne de caractères.

• Les variables internes ne sont connues que par le shell, les variables
d’environnement sont connues par le shell et les processus fils de ce
shell.

Remarques
➢ Le caractère (souligné) est le seul caractère non alphanumérique qui peut apparaître dans
un nom de variable.
➢ La syntaxe de définition et d’assignation des variables internes et d’environnement sera
explicitée plus loin.

Pr. J.Abouchabaka Initiation à Linux 7


Chapitre 6 : L’interpréteur de commandes

6.1 Les fichiers d’initialisation

• À la connexion, avant l’apparition à l’écran du prompt, le Bash interprète


les fichiers d’initialisation : /etc/profile et .bash_profile.
• Le fichier /etc/profile est géré généralement par l’administrateur
• alors que le fichier .bash profile est à la disposition de l’utilisateur

• Ces fichiers d’initialisation permettent de modifier ou de créer des


variables internes au shell, ou des variables d’environnement, de créer
des fonctions, etc.

• Lorsque le Bash est utilisé en mode interactif et n’est pas un shell


obtenu après une connexion, il exécute le fichier .bashrc, s’il existe.

• Souvent l’utilisateur intègre dans le fichier .bash_profile, l’exécution du


fichier .bashrc (voir exemple ci-après) afin d’obtenir une initialisation
commune au shell de login.

Pr. J.Abouchabaka Initiation à Linux 8


Chapitre 6 : L’interpréteur de commandes

6.1 Les fichiers d’initialisation

• Enfin, lorsque le Bash est invoqué par un fichier de commandes (un


script, voir chapitre 8), il exécute un fichier dont le nom a été défini dans
la variable d’environnement BASH_ENV.

Pr. J.Abouchabaka Initiation à Linux 9


Chapitre 6 : L’interpréteur de commandes

6.1 Les fichiers d’initialisation

Pr. J.Abouchabaka Initiation à Linux 10


Chapitre 6 : L’interpréteur de commandes

6.1 Les fichiers d’initialisation

Pr. J.Abouchabaka Initiation à Linux 11


Chapitre 6 : L’interpréteur de commandes

6.2 Les variables du bash

• Un certain nombre de variables ont pour le Bash une signification


prédéfinie. Il est possible de classer les variables du Bash en deux
catégories : les variables booléennes et les variables ordinaires.

a) Les variables booléennes


• Ces variables permettent, selon qu’elles sont positionnées (set o option)
ou non (set +o option), de modifier le comportement de l’interpréteur
de commandes. Chacune de ces options est contenue dans une variable
ordinaire SHELLOPTS. Les principales sont les suivantes :

Pr. J.Abouchabaka Initiation à Linux 12


Chapitre 6 : L’interpréteur de commandes

6.2 Les variables du bash

b) Les variables ordinaires


• La liste des variables et leur valeur sont obtenues à l’aide de la
commande set sans argument.

Exemple
xstra> set
HOME /home/xstra
IFS
...
LOGNAME xstra
PATH /bin:/usr/bin:/usr/contrib/bin:/home/xstra/bin:.
xstra>

• Pour affecter une valeur à une variable on utilise simplement le signe égalité (=)
sans espace de part et d’autre du signe. La syntaxe de l’affectation est :
nom_variable=valeur

Pr. J.Abouchabaka Initiation à Linux 13


Chapitre 6 : L’interpréteur de commandes

6.2 Les variables du bash

• La commande declare permet également de créer une variable, de lui


assigner une valeur et d’en spécifier certains attributs tels que nombre
entier, tableau, lecture seule, etc.
• Pour déclarer une variable interne en variable d’environnement, il faut
utiliser la commande export nom_variable.

Exemple : export IMPRIMANTE=laser

• La valeur (ou référence) d’une variable est obtenue en faisant précéder


le nom de la variable du signe $. Ainsi, la commande echo $nom variable
affichera le contenu de la variable.

Exemple
xstra> VAR1=florent; echo $VAR1
florent

Pr. J.Abouchabaka Initiation à Linux 14


Chapitre 6 : L’interpréteur de commandes

6.2 Les variables du bash

• Les commandes env et printenv permettent de visualiser la liste et le


contenu des variables d’environnement (set nous donne la liste de
toutes les variables et leur valeur).

Exemple
xstra> IMPRIMANTE=laser
xstra> export IMPRIMANTE
xstra> set
...
IMPRIMANTE laser
...

• La commande unset nom_variable permet de supprimer une variable.


Attention : cette commande peut supprimer les variables PATH, PS1, PS2
et modifier fortement le fonctionnement de votre shell.

Pr. J.Abouchabaka Initiation à Linux 15


Chapitre 6 : L’interpréteur de commandes

6.2 Les variables du bash

• Les principales sont indiquées ci-dessous par ordre alphabétique.

Pr. J.Abouchabaka Initiation à Linux 16


Chapitre 6 : L’interpréteur de commandes

6.2 Les variables du bash

Pr. J.Abouchabaka Initiation à Linux 17


Chapitre 6 : L’interpréteur de commandes

6.2 Les variables du bash

Pr. J.Abouchabaka Initiation à Linux 18


Chapitre 6 : L’interpréteur de commandes

6.2 Les variables du bash

Pr. J.Abouchabaka Initiation à Linux 19


Chapitre 6 : L’interpréteur de commandes

6.2 Les variables du bash

Pr. J.Abouchabaka Initiation à Linux 20


Chapitre 6 : L’interpréteur de commandes

6.3 Les alias

• La commande alias nom_alias=’commandes’ permet de donner une


équivalence entre une ligne de commandes Linux et une chaîne de
caractères. Les alias servent surtout à définir des abréviations ou de
nouveaux noms pour des commandes.
• Sans argument, la commande alias permet d’afficher la liste des alias
définis.

Exemple
xstra> alias lsf=’ls FCa’
xstra> alias
lsf ls FCa

• La commande unalias nom alias permet de supprimer l’alias dont le


nom est nom alias.

Pr. J.Abouchabaka Initiation à Linux 21

Vous aimerez peut-être aussi