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 [24/05/2015 17:59] milou [Alias] |
doc:programmation:shell:shell [26/01/2016 17:45] milou [Enchaîner plusieurs commandes] |
||
---|---|---|---|
Ligne 7: | Ligne 7: | ||
* Suivi : {{tag>à-completer à-tester}} | * Suivi : {{tag>à-completer à-tester}} | ||
* Création par [[user>captnfab]] 30/09/2013 | * Création par [[user>captnfab]] 30/09/2013 | ||
- | * Testé par <...> le <...> FIXME | + | * Testé par <...> le <...> |
* Commentaires sur le forum : [[http://debian-facile.org/viewtopic.php?pid=68350 | ici]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) | * Commentaires sur le forum : [[http://debian-facile.org/viewtopic.php?pid=68350 | ici]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) | ||
Ligne 33: | Ligne 33: | ||
Pour lancer un shell, il suffit d'ouvrir un émulateur de [[:doc:systeme:terminal | terminal]], comme Gnome-Terminal, XTerm, Rxvt-Unicode, etc. Ce dernier exécutera automatiquement votre shell utilisateur. \\ | Pour lancer un shell, il suffit d'ouvrir un émulateur de [[:doc:systeme:terminal | terminal]], comme Gnome-Terminal, XTerm, Rxvt-Unicode, etc. Ce dernier exécutera automatiquement votre shell utilisateur. \\ | ||
- | Il est aussi possible d'ouvrir une des [[:doc:systeme:console | consoles]] virtuelles du système, par une combinaison de touches telle que CTRL ALT F1 ou en démarrant le système en mode non graphique. | + | Il est aussi possible d'ouvrir une des [[:doc:systeme:console | consoles]] virtuelles du système, par une combinaison de touches telle que <key>C-A-F1</key> ou en démarrant le système en mode non graphique. |
==== Obtenir de l'aide ==== | ==== Obtenir de l'aide ==== | ||
Ligne 39: | Ligne 39: | ||
Une des commandes les plus importantes à lancer dans un shell est la commande ''man'' qui permet d'afficher l'aide d'un programme. Par exemple, jetez un coup d'œil à | Une des commandes les plus importantes à lancer dans un shell est la commande ''man'' qui permet d'afficher l'aide d'un programme. Par exemple, jetez un coup d'œil à | ||
<code user>man bash</code> | <code user>man bash</code> | ||
- | (touche ''q'' pour quitter) | + | (touche <key>q</key> pour quitter) |
==== Le prompt ==== | ==== Le prompt ==== | ||
- | Le //prompt// ou invite de commande est le petit texte qui est déjà affiché quand on lance le shell et qui reste affiché quand on appuie sur la touche entrée. | + | Le //prompt// ou invite de commande est le petit texte qui est déjà affiché quand on lance le shell et qui reste affiché quand on appuie sur la touche <key>Entrée</key> |
Souvent, le prompte ressemble à ça : ''nom-d-utilisateur@nom-de-la-machine:dossier-courant$''. | Souvent, le prompte ressemble à ça : ''nom-d-utilisateur@nom-de-la-machine:dossier-courant$''. | ||
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) : Ctrl-d **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 218: | Ligne 218: | ||
<code user>iceweasel &</code> | <code user>iceweasel &</code> | ||
- | Avec cela, iceweasel va être lancé, mais vous aurez toujours la main dans le shell (tapes entrée pour le vérifier.) | + | Avec cela, iceweasel va être lancé, mais vous aurez toujours la main dans le shell (tape <key>entrée</key> pour le vérifier.) |
<note tip>Oups, j'ai oublié de mettre le ''&'', comment je fais ? | <note tip>Oups, j'ai oublié de mettre le ''&'', comment je fais ? | ||
- | - D'abord, il faut envoyer un SIGSTOP au programme en appuyant sur Ctrl-z | + | - D'abord, il faut envoyer un SIGSTOP au programme en appuyant sur <key>C-z</key> |
- Ensuite, il faut indiquer au programme de reprendre sa marche, mais en arrière plan, avec la commande ''bg''. | - Ensuite, il faut indiquer au programme de reprendre sa marche, mais en arrière plan, avec la commande ''bg''. | ||
</note> | </note> | ||
Ligne 232: | Ligne 232: | ||
<note tip>Oups, j'ai oublié de mettre le ''!'', comment je fais ? | <note tip>Oups, j'ai oublié de mettre le ''!'', comment je fais ? | ||
- | Il suffit de taper ''disown leprogramme'' (faire tab pour voir les propositions)</note> | + | Il suffit de taper ''disown leprogramme'' (faire <key>Tab</key> pour voir les propositions)</note> |
===== Enchaîner plusieurs commandes ===== | ===== Enchaîner plusieurs commandes ===== | ||
Ligne 240: | Ligne 240: | ||
On peut exécuter plusieurs commandes sur la même ligne en les séparant par un **;** | On peut exécuter plusieurs commandes sur la même ligne en les séparant par un **;** | ||
- | On peu reprendre l'exemple [[doc:programmation:shell:shell#naviguer-dans-les-fichiers-et-les-dossiers|Naviguer dans les fichiers et les dossiers]] sur une seule ligne | + | On peut reprendre l'exemple [[doc:programmation:shell:shell#naviguer-dans-les-fichiers-et-les-dossiers|Naviguer dans les fichiers et les dossiers]] sur une seule ligne |
- | <code user>cd /usr ; cd bin ; ls ; cd /tmp ; mkdir coucou ; mkdir coucou/hop ; touch coucou/pouet ; | + | <code user>cd /usr ; cd bin ; ls ; cd /tmp ; mkdir coucou ; mkdir coucou/hop ; touch coucou/pouet ;</code> |
- | mv coucou/pouet coucou/bla ; rmdir coucou/hop ; rm -r /tmp/coucou ; cd | + | <code user>mv coucou/pouet coucou/bla ; rmdir coucou/hop ; rm -r /tmp/coucou ; cd |
</code> | </code> | ||
Ligne 258: | Ligne 258: | ||
<note important>Il ne faut pas confondre le code retour de la commande avec son résultat. Le résultat est ce qui s'affiche à l'écran. Le code de retour est une valeur numérique qui peut être utilisé dans un test par exemple. \\ | <note important>Il ne faut pas confondre le code retour de la commande avec son résultat. Le résultat est ce qui s'affiche à l'écran. Le code de retour est une valeur numérique qui peut être utilisé dans un test par exemple. \\ | ||
- | On peu afficher le code retour de la dernière commande exécutée avec | + | On peut afficher le code retour de la dernière commande exécutée avec |
<code user>echo $?</code></note> | <code user>echo $?</code></note> | ||
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érateurs. 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 ===== | ||
- | ^SHELL ^ NIVEAU ^ COMMENTAIRES ^ | + | ^SHELL ^ COMMENTAIRES ^ |
- | |[[:doc:programmation:bash]] |TOUS |Le shell utilisateur par défaut sous Débian | | + | |[[:doc:programmation:bash]] |Le shell utilisateur par défaut sous Débian | |
- | |dash |TOUS |Le shell système par défaut sous Débian | | + | |dash |Le shell système par défaut sous Débian | |
- | |zsh |TOUS |Un shell utilisateur très paramétrable | | + | |zsh |Un shell utilisateur très paramétrable | |