Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
doc:programmation:shell:shell [09/10/2015 18:03] milou [Le shell pour tous] |
doc:programmation:shell:shell [26/01/2016 17:35] milou [Variables et environnement] |
||
---|---|---|---|
Ligne 131: | Ligne 131: | ||
Dans un shell, il faut penser //flux//. Un flux est une sorte de fichier, qui se construit au fur et à mesure et n'est présent qu'en mémoire. | Dans un shell, il faut penser //flux//. Un flux est une sorte de fichier, qui se construit au fur et à mesure et n'est présent qu'en mémoire. | ||
Par exemple, | Par exemple, | ||
- | * tout ce qu'affiche un programme (comme ''ls'' ou ''pwd'' est un flux, affiché directement sur le terminal. | + | * tout ce qu'affiche un programme (comme ''ls'' ou ''pwd'' est un flux, affiché directement sur le terminal). |
* tout ce que tape un utilisateur pendant qu'il utilise un programme du terminal est un flux. | * tout ce que tape un utilisateur pendant qu'il utilise un programme du terminal est un flux. | ||
- | <note info>Cela vaut en particulier pour le shell ! Vous pouvez le vérifier en tapant la combinaison de touche correspondant à une //fin de fichier// (ou fin de flux) : <key>C-d</key> **paf** le shell se ferme, parce que son flux d'entré est terminé :-) | + | <note info>Cela vaut en particulier pour le shell ! Vous pouvez le vérifier en tapant la combinaison de touches correspondant à une //fin de fichier// (ou fin de flux) : <key>C-d</key> **paf** le shell se ferme, parce que son flux d'entrée est terminé :-) |
</note> | </note> | ||
Ligne 147: | Ligne 147: | ||
Admettons que vous vouliez lancer un premier programme, qui fournit alors un flux de sortie, puis donner ce flux de sortie à un deuxième programme pour qu'il y fasse un second traitement. | Admettons que vous vouliez lancer un premier programme, qui fournit alors un flux de sortie, puis donner ce flux de sortie à un deuxième programme pour qu'il y fasse un second traitement. | ||
- | Par exemple, vous voulez lister l'ensemble des fichiers dans ''/usr/bin'' (via ''ls'') mais vous ne voulez garder seulement les fichiers comportant ''term'' dans leur nom. Vous utiliserez alors la commande ''grep'' pour faire la 2e opération, qui fonctionne à la manière d'un filtre : | + | Par exemple, vous voulez lister l'ensemble des fichiers dans ''/usr/bin'' (via ''ls'') mais vous ne voulez garder seulement que les fichiers comportant ''term'' dans leur nom. Vous utiliserez alors la commande ''grep'' pour faire la 2e opération, qui fonctionne à la manière d'un filtre : |
<code user>ls /usr/bin | grep 'term'</code> | <code user>ls /usr/bin | grep 'term'</code> | ||
Ligne 165: | Ligne 165: | ||
<note info>Notez qu'ici, nous avons donné trois arguments à ''echo'' : | <note info>Notez qu'ici, nous avons donné trois arguments à ''echo'' : | ||
* Le premier argument est du texte simple, ils est donc entre guillemets simples : '' ' ''. | * Le premier argument est du texte simple, ils est donc entre guillemets simples : '' ' ''. | ||
- | * Le second argument comporte un code qui doit être interprété par le shell ''$(pwd)'' il doit donc donné entre guillemets doubles : '' " ''. | + | * Le second argument comporte un code qui doit être interprété par le shell ''$(pwd)'' il doit donc donner entre guillemets doubles : '' " ''. |
* Pour ne pas confondre l'apostrophe du troisième argument avec la fin d'un argument, il est indiqué entre guillemets doubles également. | * Pour ne pas confondre l'apostrophe du troisième argument avec la fin d'un argument, il est indiqué entre guillemets doubles également. | ||
</note> | </note> | ||
Ligne 185: | Ligne 185: | ||
===== Variables et environnement ===== | ===== Variables et environnement ===== | ||
- | Dans un shell, il y a tout un tas de variables qui lui sont transmises la le processus l'ayant lancé. On les appelles les variables d'environnement, et elles sont listées par la commande ''env'' : | + | Dans un shell, il y a tout un tas de variables qui lui sont transmises par le processus l'ayant lancé. On les appelle les variables d'environnement, et elles sont listées par la commande ''env'' : |
<code user>env</code> | <code user>env</code> | ||
Ligne 275: | Ligne 275: | ||
<code user>ls /usr/tmp/coucou || touch /usr/tmp/coucou</code> | <code user>ls /usr/tmp/coucou || touch /usr/tmp/coucou</code> | ||
- | <note tip>On peut combiner ces opérateur. Il suffit de se rapeller qu'il vont prendre en compte le code retour de la dernière commande exécutée.:-)</note> | + | <note tip>On peut combiner ces opérateur. Il suffit de se rappeler qu'il vont prendre en compte le code retour de la dernière commande exécutée.:-)</note> |
Ces opérateurs fonctionnent un peu comme des tests //if//. Pour plus de précision sur les tests, on peut consulter : [[doc:programmation:shell:avancee|Fonctionnalités avancées du Shell]] | Ces opérateurs fonctionnent un peu comme des tests //if//. Pour plus de précision sur les tests, on peut consulter : [[doc:programmation:shell:avancee|Fonctionnalités avancées du Shell]] | ||
+ | ==== Quelques raccourcis en shell Linux ==== | ||
+ | Quelques raccourcis en shell Linux (a apprendre par cœur :P) : | ||
+ | * <CTRL> + a : Déplace le curseur au début de la ligne | ||
+ | * <CTRL> + e : Déplace le curseur à la fin de la ligne | ||
+ | * <CTRL> + k : Efface la fin de la ligne | ||
+ | * <CTRL> + u : Efface la ligne | ||
+ | si vous utilisé zsh | ||
+ | * <ESC> + h : Aide de la commande en cours de saisie | ||
+ | * <ESC> + q : Efface la ligne courante, mais la ré-affichera une fois la commande courante terminée(Ma préféré :-)) | ||
===== Tableau des Shell disponibles ===== | ===== Tableau des Shell disponibles ===== | ||