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 18:00] milou [Enchaîner plusieurs commandes] |
doc:programmation:shell:shell [26/01/2016 17:34] milou [Rediriger l'affichage] |
||
---|---|---|---|
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 221: | Ligne 221: | ||
<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 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> | <code user>cd /usr ; cd bin ; ls ; cd /tmp ; mkdir coucou ; mkdir coucou/hop ; touch coucou/pouet ;</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 ===== | ||
- | ^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 | |