User Tools

Site Tools


informatique:linux:bash

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
informatique:linux:bash [2019/09/10 15:11] – [Raccourcis] reverse-i-search pteuinformatique:linux:bash [2020/11/11 16:53] – Options & co pteu
Line 1: Line 1:
 ======Bash====== ======Bash======
 +
 +{{:informatique:linux:bash_logo.png?nolink&200 |}}
  
 **Bash** est un interpréteur de commande, un "shell". Il possède beaucoup de caractéristiques et fonctions communes avec ''sh'' ou ''zsh''. **Bash** est un interpréteur de commande, un "shell". Il possède beaucoup de caractéristiques et fonctions communes avec ''sh'' ou ''zsh''.
Line 6: Line 8:
  
  
-=====Raccourcis=====+=====Raccourcis clavier=====
  
-  * ''ctrl+d'' pour se délogger +====Généraux====
-  * ''ctrl+a'' début de ligne +
-  * ''ctrl+e'' fin de ligne +
-  * ''ctrl+l'' effacer l'écran (clear) +
-  * ''ctrl+s'' masque la saisie clavier +
-  * ''ctrl+q'' pour revenir +
-  * ''ctrl+u'' efface tout à gauche du curseur +
-  * ''ctrl+k'' efface tout à doite du curseur +
-  * ''ctrl+w'' efface le mot à gauche du curseur +
-  * ''ctrl+r'' pour faire des recherches dans l'historique +
-  * ''ctrl+h'' efface le caractère à gauche du curseur (backspace) +
-  * ''ctrl+flèche droite ou gauche'' pour se déplacer d'un mot à l'autre dans un texte+
  
-  * ''ctrl+c'' envoie un SIGINT au processus en cours +  * ''Ctrl+d'' pour se délogguer 
-  * ''ctrl+z'' suspent le processus courant (cf ''fg'' et ''bg'')  +  * ''Ctrl+l'' effacer l'écran (=''clear''
-  * ''ctrl+alt+-'' ou ''ctrl+alt++'' permet de changer la résolution de X +  * ''Ctrl+s'' masque la saisie clavier 
-  * ''ctrl+alt+Fn'' change de terminal virtuel (avec n de 1 à 8) +  * ''Ctrl+q'' pour revenir 
-  * ''ctrl+alt+backspace'' ferme la session graphique +  * ''Ctrl+c'' envoie un SIGINT au processus en cours 
-  * ''ctrl+alt+suppr'' la pluspart du temps, sert à rebooter +  * ''Ctrl+z'' suspend (passe en background) le processus courant (voir commandes ''fg'' et ''bg'')  
-  * ''ctrl+r'' //reverse-i-search// : recherche d'une commande précédemment saisie ; à nouveau ''ctrl+r'' permet de faire défiler les résultats en cas de réponses multiples ; ''ctrl+s'' permet de revenir au résultat précédent. NB : certain terminaux utilisent déjà la séquence ''Ctrl+S'' ; pour la désactiver, insérer ''stty -xion'' dans votre ''.bash_profile'' ou ''.bashrc''.+  * ''Ctrl+alt+-'' ou ''Ctrl+alt++'' permet de changer la résolution de X 
 +  * ''Ctrl+alt+Fn'' change de terminal virtuel (avec n de 1 à 8) 
 +  * ''Ctrl+alt+backspace'' ferme la session graphique 
 +  * ''Ctrl+alt+suppr'' la plupart du temps, sert à rebooter
  
-  * ''alt+u'' et ''alt+l'' : passe, respectivement, en majuscules (Uppercase) et minuscules (Lowercase) le texte suivant le curseur+====Déplacement curseur====
  
 +  * ''Ctrl+a'' place le curseur en début de ligne
 +  * ''Ctrl+e'' place le curseur en fin de ligne
 +  * ''Ctrl+flèche droite ou gauche'' pour se déplacer de mot en mot sur la ligne
   * ''maj+pageup'' ou ''maj+pagedown'' faire défiler la console   * ''maj+pageup'' ou ''maj+pagedown'' faire défiler la console
-  * ''esc+.'' pour rapeller le premier argument de la dernière commande + 
-  * ''esc+@'' pour complèter les //hostnames// +====Édition de la ligne==== 
-  * ''esc+$'' pour complèter les variables + 
-  * ''!motif'' permet de lancer la dernière commande saisie commançant par //motif// +  * ''Ctrl+u'' efface toute la ligne à gauche du curseur 
-  * ''!!'' lancer la dernière commande+  * ''Ctrl+k'' efface toute la ligne à droite du curseur 
 +  * ''Ctrl+w'' efface le mot à gauche du curseur 
 +  * ''Esc+d'' efface le mot à droite du curseur 
 +  * ''Ctrl+h'' efface le caractère à gauche du curseur (=backspace) 
 +  * ''alt+u'' et ''alt+l'' : passe, respectivement, en majuscules (Uppercase) et minuscules (Lowercase) le texte suivant le curseur jusqu'à la fin du mot 
 +  * ''Ctrl+x'' ''Ctrl+e'' : copie la ligne courante dans l'étiteur de texte par défaut, pour l'éditer, puis l'exécuter quand on quittera l'éditeur 
 + 
 +====Rappels et substitutions==== 
 + 
 +  * ''Ctrl+r'' //reverse-i-search// : recherche d'une commande dans l'historique ; à nouveau ''Ctrl+r'' permet de faire défiler les résultats en cas de réponses multiples ; ''Ctrl+s'' permet de revenir au résultat précédent(NB : certain terminaux utilisent déjà la séquence ''Ctrl+S''pour la désactiver, insérer ''stty -xion'' dans votre ''.bash_profile'' ou ''.bashrc''. Quand le prompt contient déjà une commande, Ctrl+r permet de rechercher et se rendre à l'endroit du motif : ''bla bli blu'' ''Ctrl+r'' ''bli'' permet de positionner le curseur sur "bli", très pratique quand la ligne de commande est longue ! 
 +  * ''Esc+@'' pour compléter les //hostnames// 
 +  * ''Esc+$'' pour compléter les variables 
 +  * ''Esc+.'' affiche le dernier argument de la dernière commande 
 +  * ''Esc+#'' commente la ligne courante et annule la commande. Ca permet de la conserver dans l'historique sans l'avoir exécutée, pour la rappeler plus tard (c'est utile quand il nous manque une info en plein milieu de lécriture de la ligne) 
 +  * ''!motif'' permet de lancer la dernière commande saisie commençant par //motif// 
 +  * ''!!'' (re)lancer la dernière commande
   * ''!$'' le dernier argument de la dernière commande   * ''!$'' le dernier argument de la dernière commande
   * ''^foo^bar'' lancer la dernière commande en remplaçant "foo" par "bar". Pour supprimer "foo" : ''^foo'' tout court.   * ''^foo^bar'' lancer la dernière commande en remplaçant "foo" par "bar". Pour supprimer "foo" : ''^foo'' tout court.
  
-  * ''`<cmd>`'' les quotes inversés servent à lancer une commande et afficher le résultat. On peut s'en servir pour utiliser le résultat d'une commande en tant que paramètre d'une autre : ''ls -l `which vim`'' +=====Syntaxe===== 
-  * ''&'' permet de lancer une commande en tâche de fond + 
-  * ''<cmd1>;<cmd2>'' permet de lancer //<cmd1>// puis //<cmd2>// sans condition +  * ''`<cmd>`'' les quotes inversés servent à lancer une commande et afficher le résultat. On peut s'en servir pour utiliser le résultat d'une commande en tant que paramètre d'une autre : ''ls -l `which vim`''. Cet usage est aujourd'hui déprécié et remplacé par ''$(commande)'', qui fait pareil. 
-  * ''<cmd1>&&<cmd2>'' permet de lancer //<cmd1>//, et //<cmd2>// uniquement si //<cmd1>// renvoie //true// se termine correctement+  * ''&'' suffixer une commande par ''&'' permet de la lancer en tâche de fond 
 +  * ''<cmd1>;<cmd2>'' permet de lancer //<cmd1>// puis //<cmd2>// sans condition, sur une même ligne (le '';'' remplace le retour chariot) 
 +  * ''<cmd1>&&<cmd2>'' permet de lancer //<cmd1>//, puis //<cmd2>// uniquement si //<cmd1>// renvoie //true// (se termine correctement)
   * ''<cmd1>||<cmd2>'' lancer //<cmd1>//, puis //<cmd2>// uniquement si //<cmd1>// renvoie //false//   * ''<cmd1>||<cmd2>'' lancer //<cmd1>//, puis //<cmd2>// uniquement si //<cmd1>// renvoie //false//
-  * ''<cmd1>|<cmd2>'' redirige la sortie de //<cmd1>// vers l'entrée de //<cmd2>// +  * ''<cmd1>|<cmd2>'' redirige la sortie standart de //<cmd1>// vers l'entrée standard de //<cmd2>// 
-  * ''<cmd1>|xargs <cmd2>'' redirige la sortie de //<cmd1>// dans les paramètres de //<cmd2>//+  * ''<cmd1>|xargs <cmd2>'' convertit la sortie de //<cmd1>// en paramètres de //<cmd2>//
   * ''<cmd> > <fic>'' redirige la sortie (STDOUT) de //<cmd>// vers le fichier //<fic>// (le fichier est vidé (>))   * ''<cmd> > <fic>'' redirige la sortie (STDOUT) de //<cmd>// vers le fichier //<fic>// (le fichier est vidé (>))
   * ''<cmd> >> <fic>'' redirige la sortie de //<cmd>// à la fin du fichier //<fic>// (>>   * ''<cmd> >> <fic>'' redirige la sortie de //<cmd>// à la fin du fichier //<fic>// (>>
Line 66: Line 80:
   * PROMPT_COMMAND : le contenu de cette variable est exécuté à chaque affichage du prompt   * PROMPT_COMMAND : le contenu de cette variable est exécuté à chaque affichage du prompt
   * USER, USERNAME ou LOGNAME : contient le login de l'utilisateur   * USER, USERNAME ou LOGNAME : contient le login de l'utilisateur
 +
 +=====Options=====
 +
 +Les options de bash peuvent se modifier au lancement sous forme de paramètre (''bash -e'' par ex.) ou dans un script via le mot-clé ''set''. Elles permettent de tuner le shell en modifiant son comportement par défaut.
 +
  
 =====Debugger un script===== =====Debugger un script=====
Line 313: Line 332:
 Ce qui donne : ''1710_164245 dude@pc-perso:home $ '' avec des couleurs qui évoluent avec le contexte. Ce qui donne : ''1710_164245 dude@pc-perso:home $ '' avec des couleurs qui évoluent avec le contexte.
  
 +
 +====Afficher n fois un caractère====
 +
 +Afficher $N fois le caractère $C :
 +<code bash>
 +N=10
 +C=#
 +printf "%0.s${C}" $(seq 1 ${N})
 +</code>
informatique/linux/bash.txt · Last modified: 2023/01/09 10:52 by pteu