Vous êtes sur la page 1sur 27

Unix/Linux : Shell

Shell : Définition

¤ Le shell est un interpréteur de commandes utilisé pour


démarrer, suspendre/stopper, terminer et éventuellement
écrire des programmes.

¤ Le shell fournit une interface à Linux permettant de réaliser


toutes ces opérations de gestion de programmes.
Le shell : Définition

Although most users think of the shell as an interactive


command interpreter, it is really a programming
language in which each statement runs a command.
Because it must satisfy both the interactive and
programming aspects of command execution, it is a
strange language, shaped as much by history as by
design.

Brian Kernighan and Rob Pike, The UNIX Programming


Environment, Prentice-Hall, 1984
Travailler avec le Shell
Le shell contient un ensemble de fonctionnalités permettant de

facilement travailler avec des fichiers et des programmes :

¤ Historique des commandes

¤ Compléter des chemins (Paths)

¤ Expansion des noms

¤ Aliases

¤ Variables des environnements

¤ Configuration de votre shell


Commande history
¤ Le shell garde une trace de chaque commande entrée sur l’invite
de commande, formant ainsi un historique des commandes.

Commandes Signification
history Affiche l’historique des commandes
<flèche-up>/<flèche-down> Parcourt interactivement l’historique des
commandes

!N Exécute la commande numérotée N

!-N Exécute la Nième précédente


commande

!! Exécute la dernière commande


!string Exécute la dernière commande
commençant avec string
Commande history : Exemple
Complétion des chemins
¤ Quand vous commencez à entrer un chemin sur votre invite de
commandes :

La touche du clavier <tab> vous permettra :


¤ De compéter le chemin si il est unique, ou
¤ Vous proposera l’ensemble des solutions possibles pour le
compléter

¤ Fonctionne aussi pour les noms de fichiers


Variables d’environnement
¤ Les variables d'environnement sont un ensemble spécial de
variables utilisées pour partager certaines informations entre les
processus imbriqués.

¤ La commande set affiche les variables d'environnements

¤ Quelques unes très utiles:


¤ PS1- Définit le look de votre invite de commandes
¤ PATH : spécifie un chemin de recherche composé de l’ensemble de
répertoire contenant des programmes exécutables
¤ HOME : le chemin absolu du répertoire home de l’utilisateur
¤ SHELL : le shell courant
¤ PWD : le chemin du répertoire courant

¤ On accède au contenu d’une variable en précédant son


nom par $
Expansion des nom de fichiers
¤ Expansion des noms de fichiers, ou file globbing, est une technique
permettant de spécifier plusieurs fichiers via une pattern (modèle)
qui peut inclure les syntaxes spéciales suivantes :
* Correspondance avec zéro ou plusieurs
caractères alphanumériques
? Correspondance avec un caractère
alphanumérique quelconque
[chars] Correspondance avec tout un
caractère dans chars

{str,str2,...} Correspondance avec toute string entre


les deux accolades

¤ La pattern est remplacée par la liste de fichiers correspondante

¤ Si aucun fichier ne correspond au pattern, le mot reste inchangé.

¤ C’est le shell qui est chargé d’effectuer la substitution de ces


caractères avant le passage des paramètres à une commande.
Expansion nom fichiers : Exemple
Symboles avec des quotes
¤ Plusieurs symboles ont une signification spéciale, tel que ~, >, &, |,
*, et $. Ces meta-caractères peuvent être quotés ou précédés
d’un backslach désactivant temporairement leur traitement
spécial.

\char Désactive le traitement


spécial de char
‘str’ Traiter str comme une chaîne
de caractère littérale
”str” Comme pour ‘str’, mais
permet quelques expansions
(par exemple le $)
Protection des expressions
¤ Protection par le caractère backslash
Ce caractère sert à désactiver l’interprétation du caractère qu’il
précède.

¤ Le caractère backslash peut servir à préfixer n’importe quel


caractère, y compris lui-même. Lorsqu’il précède un retour chariot,
le backslash a pour effet de l’éliminer et la saisie continue sur la
ligne suivante.
Protection des expressions
¤ Protection par apostrophes
Entre des apostrophes, tous les caractères rencontrés perdent leur
signification spéciale.

¤ Cela signifie que le backslash est un caractère comme les autres,


et que l’on ne peut pas l’employer pour protéger une apostrophe.
Le seul caractère qui ne puisse pas être inclus dans une chaîne
protégée par des apostrophes est donc l’apostrophe elle-même.
Lorsqu’un retour chariot est présent dans une chaîne entre
apostrophes, la représentation du code est inchangée
Protection des expressions
¤ Protection par guillemets

La protection par des apostrophes est totale, chaque caractère


gardant sa signification littérale (on parle de protection forte). Il
arrive pourtant que l’on préfère quelque chose d’un peu moins
strict.

La protection par les guillemets est plus adaptée dans ce cas.

Entre les guillemets, les caractères $, backquote ` et backslash \


retrouvent leur signification spéciale, alors que les autres sont
réduits à leur acception littérale.

NB :

$ : substitution d’une variable ou une commande

` ` : substitution d’une commande


Protection des expressions
¤ Protection par guillemets (suite)
En fait, le backslash et le $ n’ont un sens particulier que s’ils sont
suivis d’un caractère pour lequel l’interprétation spéciale a un
sens.
Les aliases
¤ Un alias est un pseudonyme d’une commande permettant de
changer le comportement par défaut de commandes existantes.

¤ Syntaxe : alias pseudonym=command

¤ Défaire : unalias pseudonym

¤ La commande alias sans arguments, liste les alias actuels.


Les aliases : exemples
¤ Création de nom de commandes alternatifs

¤ Personnalisez vos commandes


Les alias : suite
¤ Si vous voulez passer outre un alias précédez le avec un
antislash (exemple \rm)
Personnalisez votre shell
¤ Les variables d’environnements et les alias sont spécifiques à
chaque processus shell. On peut les rendre “globales” si on les
rajoute dans un script de démarrage. Il en existe plusieurs scripts
de démarrage en fonction du type du processus shell.

¤ Un login shell (ou shell de connexion), est un processus shell


démarré immédiatement après que l’utilisateur se connecte
(se loggue).

¤ Un interactif shell est un processus shell connecté au terminal.


Le shell de connexion
¤ Le shell de connexion est lancé après la

saisie du login et du mot de passe sur la


login shell :
console. C’est celui précisé à la fin de
/etc/profile
chaque ligne de /etc/passwd.

Dans ce mode, le shell cherche à exécuter,

dans cet ordre et s’ils sont présents :


/etc/profile
~/.bash_profile ~/.profile ~/.bash_profile
~/.bash_login
~/.bash_login ~/.profile
Le shell interactif
¤ Le shell interactif simple correspond à

l’exécution du bash dans une fenêtre


shell interactif :
(xterm, konsole), une console ou à la main
~/.bashrc
(taper bash dans une console). Dans ce cas

seul le fichier suivant sera exécuté s’il existe :


~/.bashrc
Personnalisez votre script de démarrage

¤ Pour voir les effets des changements que vous aurez faites :
¤ Démarrez un nouveau shell, ou
¤ Utilisez la commande source
Unix/Linux : Editeurs de texte
Editeurs de texte
¤ Un nombre important de programmes utilisent des données
stockées dans des fichiers texte. Par conséquent, l'édition de texte
est une compétence importante pour les utilisateurs de Linux.

¤ Les trois éditeurs de texte les plus courants dans un système


Unix/Linux sont :
¤ emacs - Editor macros.
¤ vi
¤ nano - Nano’s ANOther editor
nano
Plus

¤ Interface et structure de commandes simples.

¤ Système d’aide intégré.

¤ correcteur orthographique intégré.

¤ Bon pour les documents courts ou simples.

Moins

¤ Les capacités d'édition rares.


Vi
¤ Aucune interface window (: help pour avoir de l’aide) (regarder
aussi vim ou gvim).

¤ L'éditeur vi alterne entre deux modes de fonctionnement, le mode


de commande et le mode d'insertion. Pour passer du mode
commande au mode insertion, on sélectionne une commande
d'insertion :
¤ a ou A – pour un append de texte
¤ i ou I – pour insertion de texte

¤ Pour passer du mode d'insertion au mode commande, on presse


<esc>.

¤ Certaines commandes en mode commande :


¤ dd - Supprime la ligne courante
¤ :w - Sauvegarde
¤ :q - Quit
Emacs
Comme nano, emacs utilise des control-commandes pour
l’édition.

Des commandes communes d’emacs :

¤ <Ctrl-k> - Supprimer jusqu'à la fin de la ligne


¤ <Ctrl-Y> - Coller le texte supprimé
¤ <Ctrl-x> u - Annuler la dernière édition
¤ <Ctrl-x> <Ctrl-s> - Enregistrer
¤ <Ctrl-x> <Ctrl-c> - Quitter
¤ <Ctrl-H> t - course tutorial

¤ Plus : voir la carte de référence.

Vous aimerez peut-être aussi