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:shells:bash-les-differents-caracteres-speciaux [19/07/2014 07:43] Hypathie [Métacaractères et métacaractères !] |
doc:programmation:shells:bash-les-differents-caracteres-speciaux [04/10/2015 18:38] milou [Quotes, apostrophe, guillemets et apostrophe inversée] |
||
---|---|---|---|
Ligne 2: | Ligne 2: | ||
* Objet : Vue d'ensemble du shell Bash et présentation des différentes fonctionnalités. | * Objet : Vue d'ensemble du shell Bash et présentation des différentes fonctionnalités. | ||
- | * Niveau requis : {{tag>débutant}} | + | * Niveau requis : {{tag>débutant avisé}} |
+ | * Commentaires : FIXME | ||
+ | * Suivi : | ||
* Création par [[user>Hypathie]] 20/03/2014 | * Création par [[user>Hypathie]] 20/03/2014 | ||
- | * Testé par Hypathie en Avril 2014 | + | * Testé par [[user>Hypathie]] en Avril 2014 |
- | * Suivi : {{tag>à-placer}} | + | * Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?pid=87499#p87499| ici]]((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) |
- | * Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?pid=87499#p87499| ici]]((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) | + | |
+ | **Nota :** Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! | ||
+ | |||
+ | ===== Introduction ===== | ||
> Voici une étude du Bash qui prend comme entrée les différents caractères. | > Voici une étude du Bash qui prend comme entrée les différents caractères. | ||
Ligne 21: | Ligne 26: | ||
* [[atelier:chantier:page-man-bash-v-les-tableaux|Les tableaux]] | * [[atelier:chantier:page-man-bash-v-les-tableaux|Les tableaux]] | ||
* [[atelier:chantier:man-bash-vi-les-caracteres-de-transformation-de-parametres|Caractères de transformation de paramètres]] | * [[atelier:chantier:man-bash-vi-les-caracteres-de-transformation-de-parametres|Caractères de transformation de paramètres]] | ||
- | * [[atelier:chantier:bash-vii-globs-etendus-regex|Globs étendus et regex]] | + | * [[atelier:chantier:bash-vii-globs-etendus-regex|Bash : Variables, globs étendus, ERb, ERe]] |
**Dans ce tuto** : | **Dans ce tuto** : | ||
Ligne 55: | Ligne 60: | ||
La commande ''env'' permet de lister les variables d'environnement du contexte qui l'exécute. | La commande ''env'' permet de lister les variables d'environnement du contexte qui l'exécute. | ||
<code user>env</code> | <code user>env</code> | ||
- | <code>SHELL=/bin/bash</code> | + | <file config retour de la commande>SHELL=/bin/bash</file> |
>Le retour est copieux ! | >Le retour est copieux ! | ||
>Mais on trouve dans la liste la ligne ci-dessus | >Mais on trouve dans la liste la ligne ci-dessus | ||
Ligne 66: | Ligne 71: | ||
Plus directement, on peut faire : | Plus directement, on peut faire : | ||
<code user>echo $SHELL</code> | <code user>echo $SHELL</code> | ||
- | <code>/bin/bash</code> | + | <file config retour de la commande>/bin/bash</file> |
;-) | ;-) | ||
Ligne 73: | Ligne 78: | ||
Pour connaître la version de votre shell Bash, tapez : | Pour connaître la version de votre shell Bash, tapez : | ||
<code user>bash --version</code> | <code user>bash --version</code> | ||
- | <code>GNU bash, version 3.2.39(1)-release (i486-pc-linux-gnu) | + | <file config retour de la commande>GNU bash, version 3.2.39(1)-release (i486-pc-linux-gnu) |
- | Copyright (C) 2007 Free Software Foundation, Inc.</code> | + | Copyright (C) 2007 Free Software Foundation, Inc.</file> |
=== En savoir plus === | === En savoir plus === | ||
Ligne 108: | Ligne 113: | ||
<note> | <note> | ||
* Pour connaître la liste des commandes installées sur son système, on peut lister le contenu des dossiers suivants : | * Pour connaître la liste des commandes installées sur son système, on peut lister le contenu des dossiers suivants : | ||
- | * ''/bin/''((''ls /bin'' affiche la liste des commandes externes essentielles utilisées par le système pendant le démarrage, mais utilisables par tous les utilisateurs.)) | + | * ''/bin/''((''ls /bin'' affiche la liste des commandes externes essentielles utilisées par le système pendant le démarrage, mais utilisables par tous les utilisateurs.))\\ |
- | * ''/sbin/''((''ls /sbin'' affiche la liste des commandes externes essentielles utilisées par le système pendant le démarrage, et souvent réservées à l'administrateur (root))) | + | * ''/sbin/''((''ls /sbin'' affiche la liste des commandes externes essentielles utilisées par le système pendant le démarrage, et souvent réservées à l'administrateur (root)))\\ |
- | * ''/usr/bin/'' et ''/usr/sbin/''((''ls /usr/bin /usr/sbin'' affiche la liste des commandes externes secondaires, non utilisées pendant le démarrage du système, et respectement utilisables par tous ou plutôt réservées à l'administrateur)) | + | * ''/usr/bin/'' et ''/usr/sbin/''((''ls /usr/bin /usr/sbin'' affiche la liste des commandes externes secondaires, non utilisées pendant le démarrage du système, et respectement utilisables par tous ou plutôt réservées à l'administrateur)) |
- | * Pour affiche le chemin d'une commande ainsi que celui de sa page man : | + | * Pour afficher le chemin d'une commande ainsi que celui de sa page man : |
<code user>whereis nom_commande</code> | <code user>whereis nom_commande</code> | ||
Ligne 128: | Ligne 133: | ||
**Pour connaître le statut d'une commande, avec bash, on peut utiliser la commande interne type**:\\ | **Pour connaître le statut d'une commande, avec bash, on peut utiliser la commande interne type**:\\ | ||
<code user>type cd</code> | <code user>type cd</code> | ||
- | <code>cd est une primitive du shell | + | <file config retour de la commande>cd est une primitive du shell |
- | </code> | + | </file> |
<code user>type cp</code> | <code user>type cp</code> | ||
- | <code>cp est /bin/cp</code> | + | <file config retour de la commande>cp est /bin/cp</file> |
<code user>type sleep</code> | <code user>type sleep</code> | ||
- | <code>sleep est /bin/sleep</code> | + | <file config retour de la commande>sleep est /bin/sleep</file> |
>''/bin/commande'' signifie donc que c'est une commande externe. | >''/bin/commande'' signifie donc que c'est une commande externe. | ||
<code user>type ls</code> | <code user>type ls</code> | ||
- | <code>ls est un alias vers « ls --color=auto »</code> | + | <file config retour de la commande>ls est un alias vers « ls --color=auto »</file> |
<code user>whereis ls</code> | <code user>whereis ls</code> | ||
- | <code>ls: /bin/ls /usr/share/man/man1/ls.1.gz</code> | + | <file config retour de la commande>ls: /bin/ls /usr/share/man/man1/ls.1.gz</file> |
<code user>which ls</code> | <code user>which ls</code> | ||
- | <code>/bin/ls</code> | + | <file config retour de la commande>/bin/ls</file> |
>''ls'' est donc l'alias de la commande externe ''/bin/ls'' | >''ls'' est donc l'alias de la commande externe ''/bin/ls'' | ||
</note> | </note> | ||
Ligne 202: | Ligne 207: | ||
=== Exemple pratique : tuer un processus === | === Exemple pratique : tuer un processus === | ||
- | Imaginons que vous vous êtes endormi devant votre messagerie.\\ A votre réveille 8-o : impossible de fermer la fenêtre de icedove avec la souris.\\ | + | Imaginons que vous vous êtes endormi devant votre messagerie.\\ A votre réveil 8-o : impossible de fermer la fenêtre de icedove avec la souris.\\ |
Dans ce cas, le plus simple est tuer le processus d'exécution de icedove. | Dans ce cas, le plus simple est tuer le processus d'exécution de icedove. | ||
* Retrouver le processus : | * Retrouver le processus : | ||
- | - ouvrir par exemple tty1 : ''ctrl+Alt+F1'' | + | - ouvrir par exemple tty1 : <key>C-A-F1</key> |
- se loguer et entrer son mot de passe utilisateur | - se loguer et entrer son mot de passe utilisateur | ||
- récupérer le PID du processus icedove : | - récupérer le PID du processus icedove : | ||
Ligne 213: | Ligne 218: | ||
ps -A | grep icedove | ps -A | grep icedove | ||
</code> | </code> | ||
- | <code> | + | <file config retour de la commande> |
4245 pts/0 00:00:02 icedove | 4245 pts/0 00:00:02 icedove | ||
- | </code> | + | </file> |
>Ici ''4245'' est le PID du processus. | >Ici ''4245'' est le PID du processus. | ||
>Il ne sera pas le même si vous exécutez cette commande sur votre machine, ou d'une fois à l'autre. | >Il ne sera pas le même si vous exécutez cette commande sur votre machine, ou d'une fois à l'autre. | ||
Ligne 228: | Ligne 233: | ||
>Mieux prendre l'habitude de ne pas laisser une console ''tty'' sans surveillance après s'y être loguer, et cela d'autant plus pour le compte root -;) | >Mieux prendre l'habitude de ne pas laisser une console ''tty'' sans surveillance après s'y être loguer, et cela d'autant plus pour le compte root -;) | ||
- | * Revenir sur l'interface graphique : ''ctrl+Alt+F7'' | + | * Revenir sur l'interface graphique : <key>A-F7</key> |
Quelques exemples pour illustrée la notion de processus : | Quelques exemples pour illustrée la notion de processus : | ||
Ligne 243: | Ligne 248: | ||
<code user>variable='secret' | <code user>variable='secret' | ||
echo 'Mon mot de passe est $variable.'</code> | echo 'Mon mot de passe est $variable.'</code> | ||
- | <code>Mon mot de passe est $variable.</code> | + | <file config retour de la commande>Mon mot de passe est $variable.</file> |
==== Doubles quotes ou guillements ==== | ==== Doubles quotes ou guillements ==== | ||
Ligne 250: | Ligne 255: | ||
<code user>variable="secret" | <code user>variable="secret" | ||
echo "Mon mot de passe est $variable."</code> | echo "Mon mot de passe est $variable."</code> | ||
- | <code>Mon mot de passe est secret.</code> | + | <file config retour de la commande>Mon mot de passe est secret.</file> |
Ceci est utile pour générer des messages dynamiques au sein d'un script. | Ceci est utile pour générer des messages dynamiques au sein d'un script. | ||
Ligne 275: | Ligne 280: | ||
* soit un dossier ''Dossier.txt'' contenant les fichiers ''dossier1''; ''dossier2'' ; ''dossier3''. | * soit un dossier ''Dossier.txt'' contenant les fichiers ''dossier1''; ''dossier2'' ; ''dossier3''. | ||
- | <code user>cd /tmp | + | <code user>cd /tmp</code> |
- | mkdir Dossier.txt | + | <code user>mkdir Dossier.txt</code> |
- | cd Dossier.txt/ | + | <code user>cd Dossier.txt/</code> |
- | touch dossier1 | + | <code user>touch dossier1</code> |
- | touch dossier2 | + | <code user>touch dossier2</code> |
- | touch dossier3 | + | <code user>touch dossier3 |
</code> | </code> | ||
* toujours au niveau de Dossier.txt : | * toujours au niveau de Dossier.txt : | ||
<code user>ls</code> | <code user>ls</code> | ||
- | <code>dossier1 dossier2 dossier3</code> | + | <file config retour de la commande>dossier1 dossier2 dossier3</file> |
<code user>rm `ls`</code> | <code user>rm `ls`</code> | ||
<note warning> | <note warning> | ||
Ligne 297: | Ligne 302: | ||
* comparez maintenant avec : | * comparez maintenant avec : | ||
- | <code user>touch dossier1 | + | <code user>touch dossier1</code> |
- | touch dossier2 | + | <code user>touch dossier2</code> |
- | touch dossier3 | + | <code user>touch dossier3</code> |
- | ls</code> | + | <code user>ls</code> |
- | <code>dossier1 dossier2 dossier3</code> | + | <file config retour de la commande>dossier1 dossier2 dossier3</file> |
<code user>ls | xargs rm | <code user>ls | xargs rm | ||
Ligne 407: | Ligne 412: | ||
>tous les fichiers cachés normaux et les fichiers cachés de type-répertoire, | >tous les fichiers cachés normaux et les fichiers cachés de type-répertoire, | ||
>avec les noms des fichiers cachés contenus dans ces répertoires ! | >avec les noms des fichiers cachés contenus dans ces répertoires ! | ||
- | Ça fait fait beaucoup trop :-/ | + | Ça fait beaucoup trop :-/ |
<note tip> | <note tip> |