Sous Linux, l’importance de Bash ne peut être ignorée. La gestion et les opérations quotidiennes sous Linux se font essentiellement dans Bash. Par conséquent, pour améliorer l’efficacité au travail sous Linux, la question devient naturellement comment utiliser Bash efficacement. Utiliser quelques raccourcis dans Bash est la manière la plus simple et la plus directe d’améliorer l’efficacité. Cet article vise exactement cet objectif !

Bash 快捷键大全

Quelques explications à propos des raccourcis :

  1. CTRL=C : Cette touche désigne la touche Ctrl sur un clavier de PC.
  2. ALT=M : Cette touche est la touche ALT sur un clavier de PC. Si votre clavier ne possède pas cette touche, vous pouvez essayer d’utiliser la touche ESC à la place.
  3. SHIFT=S : Cette touche est la touche Shift sur un PC.
  4. ESC=E : Cette touche est la touche ESC sur un clavier de PC, généralement située dans le coin supérieur gauche du clavier.
  5. BACKSPACE=DEL : Cette touche est la touche Backspace sur un clavier de PC, généralement située dans le coin supérieur droit de la zone principale du clavier.
  6. Dans cet article, le contenu entre « [] » est le contenu des touches de raccourci. De part et d’autre de « - » signifie maintenir enfoncée la touche de gauche, puis appuyer sur la touche de droite. De part et d’autre de « , » (virgule) signifie appuyer d’abord sur la touche de gauche, la relâcher, puis appuyer sur la touche de droite. Par exemple, [CTRL-v] signifie appuyer sur la touche Ctrl, ne pas la relâcher, puis appuyer sur la touche v.
  7. Par défaut, le format de composition d’un raccourci est : <CTRL | ALT | ESC >-[SHIFT-]<char>. C’est-à-dire qu’il commence par l’un de Ctrl, Alt, Esc, suivi d’un trait d’union, de Shift, d’un trait d’union et d’un caractère. Parmi ceux-ci, le Shift et le « - » à l’intérieur des crochets peuvent parfois être omis.
  8. Par défaut, seule la dernière touche d’un raccourci est un caractère ; les autres valeurs de touche sont toutes des touches de fonction.
  9. Pour les raccourcis comme [CTRL-?], étant donné que « ? » est un caractère qui nécessite la touche Shift pour être saisi, de tels raccourcis correspondent par défaut à [CTRL-SHIFT-?].

Notez que dans Bash, les raccourcis peuvent être écrits sous forme octale ou hexadécimale (après le caractère d'échappement) ; les raccourcis dans les fichiers de script ne fonctionnent pas toujours. De plus, les raccourcis suivent un modèle :Les raccourcis commençant par Ctrl concernent généralement les caractères, tandis que les raccourcis commençant par Alt concernent généralement les mots.。

Sous Bash, si vous utilisez un fichier de script shell, les raccourcis peuvent ne pas être les mêmes. Parfois, le même raccourci peut se comporter différemment. Cela est généralement dû au fait que Bash se trouve dans des modes différents. Vous pouvez ajuster le mode avec la commande set :

set -o emacs
##切到emacs模式
set -o vi
##切到vi模式
set -o
## 查看当前选项的设置状态

Il s'agit du réglage des options de Bash ; vous pouvez le configurer selon la situation spécifique. Cet article utilise le mode emacs.

Raccourci Description du raccourci
CTRL-A Déplace le curseur au début de la ligne (sur la ligne de commande).
CTRL-B Retour arrière (non destructif). Cela ne fait que reculer la position du curseur d'un espace.
CTRL-C Interrompt, termine une tâche au premier plan.
CTRL-D "EOF" (fin de fichier). Il est utilisé pour indiquer la fin de l'entrée standard (stdin). Lors de la saisie de texte dans une console ou une fenêtre xterm, CTRL-D supprime le caractère sous le curseur.

Quitter un shell (similaire à exit). Si aucun caractère n'est présent, CTRL-D déconnectera la session. Dans une fenêtre xterm, cela aura pour effet de fermer la fenêtre.

CTRL-E Déplacer le curseur à la fin de la ligne (sur la ligne de commande).
CTRL-F Déplacer le curseur d'un caractère vers l'avant (sur la ligne de commande).
CTRL-G BEL. Sur certains anciens terminaux à imprimante, cela fait sonner une cloche. Sur les terminaux xterm, cela peut être un bip.
CTRL-H Effacer (Rubout) (retour arrière destructif). Tandis que le curseur recule, il efface simultanément le caractère situé avant le curseur.
CTRL-I Tabulation horizontale.
CTRL-J Nouvelle ligne (saut de ligne et retour chariot au début de la ligne). Dans les scripts, elle peut aussi être représentée sous forme octale ('/012') ou hexadécimale ('/x0a').
CTRL-K Tabulation verticale. Lors de la saisie de texte dans une console ou une fenêtre xterm, CTRL-K supprime tous les caractères depuis la position du curseur jusqu'à la fin de la ligne.

Dans les scripts, elle peut aussi être représentée sous forme octale ('/013') ou hexadécimale ('/x0b'). Dans les scripts, CTRL-K peut se comporter différemment. L'exemple suivant montre le comportement différent :

#!/bin/bash
## 一个CTRL-K垂直制表符的例子

var=$'/x0aBottom Line/x0bTop line/x0a'
## 直接输出
echo "$var"
## 使用col来过滤控制字符
echo "$var" | col

## 上面的显示将会不一样

exit 0
CTRL-L Saut de page, avance de page, effacer l'écran.

Efface l'écran du terminal. Sur un terminal, cette commande fonctionne comme la commande clear. Mais lorsque cette commande est envoyée à une imprimante, Ctrl-L saute directement à la fin de la feuille de papier.

CTRL-M Retour chariot.
CTRL-N Efface une ligne de texte rappelée depuis le tampon d'historique (sur la ligne de commande). Si l'entrée actuelle est sélectionnée depuis l'historique, à partir de cette entrée d'historique, chaque pression donne une commande plus récente.
CTRL-O Produire une nouvelle ligne (sur la ligne de commande).
CTRL-P Rappeler la commande précédente depuis le tampon d'historique (sur la ligne de commande). Ce raccourci rappelle les commandes dans l'ordre du plus récent au plus ancien ; c'est-à-dire qu'en appuyant une fois, on rappelle la commande précédente, et en appuyant à nouveau, on rappelle la commande d'avant. Ce raccourci et CTRL-N partent tous les deux de la saisie actuelle, mais les deux commandes opèrent dans des directions exactement opposées : CTRL-N va du point de départ du plus ancien au plus récent (si le point de départ est une commande historique).
CTRL-Q Reprendre (XON). Reprendre/dégeler. Cette commande est utilisée pour restaurer le stdin du terminal ; voir CTRL-S.
CTRL-R Recherche vers l'arrière dans le texte du tampon d'historique (sur la ligne de commande). Remarque : après avoir appuyé dessus, l'invite devient `(reverse-i-search)` : le texte de recherche saisi apparaît entre guillemets simples, et la commande d'historique la plus récente qui correspond le mieux apparaît après les deux-points.
CTRL-S Suspendre (XOFF), pause. Cela fige le stdin du terminal. Pour reprendre, appuyez sur CTRL-Q.
CTRL-T Échanger le caractère à la position du curseur avec le caractère situé une position avant le curseur (sur la ligne de commande). Par exemple : `echo $var;`, supposons que le curseur soit sur `a`, puis après avoir appuyé sur C-T, `v` et `a` échangeront leurs positions : `echo $avr;`.
CTRL-U Efface tous les caractères depuis la position du curseur jusqu'au début de la ligne. Dans certains paramètres, CTRL-U supprime toute la ligne de saisie indépendamment de la position du curseur.
CTRL-V Lors de la saisie de texte, après avoir appuyé sur C-V, vous pouvez insérer des caractères de contrôle. Par exemple : `echo -e '/x0a';` et `echo <CTRL-V><CTRL-J>;` ces deux ont le même effet. Cette fonctionnalité est très utile dans les éditeurs de texte.
CTRL-W Lors de la saisie de texte dans une console ou une fenêtre xterm, CTRL-W supprime le contenu depuis la position du curseur vers l'arrière jusqu'au premier caractère d'espacement. Dans certains paramètres, CTRL-W supprime les caractères depuis le curseur vers l'arrière jusqu'au premier caractère qui n'est ni une lettre ni un chiffre.
CTRL-X Dans certains programmes de traitement de texte, ce caractère de contrôle coupe le texte surligné et le copie dans le presse-papiers.
CTRL-Y Recolle le texte précédemment effacé (principalement pour CTRL-U ou CTRL-W).
CTRL-Z Suspend une tâche au premier plan ; dans certains programmes de traitement de texte, il est aussi utilisé comme opération de remplacement ; dans le système de fichiers MSDOS, il sert de caractère EOF (fin de fichier).
CTRL-/ Quitter. Similaire à CTRL-C, cela peut aussi déverser un fichier "core" dans votre répertoire de travail (ce fichier peut vous être inutile).
CTRL-/ Annuler l'opération.
CTRL-_ Annuler l'opération.
CTRL-xx Basculer entre le début de la ligne et la position du curseur ; ici, il y a deux caractères "x".
ALT-B Le curseur recule d'un mot, les mots étant délimités par des caractères non alphabétiques (il se déplace au début du mot courant sous le curseur).
ALT-F Le curseur avance d'un mot (se déplace à la fin du mot courant sous le curseur).
ALT-D Supprimer tout le contenu depuis la position du curseur jusqu'à la fin du mot courant (si le curseur est au début du mot, supprimer le mot entier).
ALT-BASKSPACE Supprimer tout le contenu depuis la position du curseur jusqu'au début du mot.
ALT-C Convertir la lettre à la position du curseur en majuscule (si le curseur est au début d'un mot ou avant celui-ci, mettre en majuscule la première lettre du mot).
ALT-U Convertir toutes les lettres depuis la position du curseur jusqu'à la fin du mot en majuscules.
ALT-L Convertir toutes les lettres depuis la position du curseur jusqu'à la fin du mot en minuscules.
ALT-R Annuler toutes les modifications et restaurer la ligne courante dans son état d'origine dans l'historique (à condition que la commande courante provienne de l'historique ; si elle a été saisie manuellement, elle effacera la ligne).
ALT-T Lorsqu'il y a des mots des deux côtés du curseur, échanger les positions des mots des deux côtés. Par exemple : `abc <ALT-T>bcd -> bcd abc`
ALT-. Utilisez le dernier mot de la commande précédente (la commande elle-même est également considérée comme un mot ; voir le concept d'indicateur de mot dans la section des commandes Bang de l'article suivant).
ALT-_ Identique à ALT-.
ALT-number Cette valeur numérique peut être positive ou négative. Cette touche seule n'a aucun effet ; elle doit être suivie d'un autre contenu. Si elle est suivie d'un caractère, elle indique le nombre de répétitions. Par exemple : [ALT-10,k] insère 10 caractères 'k' à la position du curseur (les valeurs négatives sont invalides dans ce cas) ; si elle est suivie d'une commande, le nombre affecte le résultat d'exécution de la commande suivante. Par exemple : [ALT--10,CTRL-D] exécute l'opération 10 fois dans la direction opposée à la direction par défaut de CTRL-D (négative).
ALT-< Déplacez-vous vers la première commande de l'historique.
ALT-> Déplacez-vous vers la dernière ligne de l'historique, c'est-à-dire la ligne en cours de saisie (vide s'il n'y a aucune saisie).
ALT-P Recherchez vers l'avant à partir de la ligne actuelle, en vous déplaçant « vers le haut » si nécessaire ; pendant le déplacement, utilisez une recherche non incrémentale pour trouver la chaîne fournie par l'utilisateur.
ALT-N Rechercher vers l'avant à partir de la ligne actuelle, en se déplaçant « vers le bas » si nécessaire. Lors du déplacement, utiliser la recherche non incrémentale pour trouver la chaîne fournie par l'utilisateur.
ALT-CTRL-Y Insérer le premier argument de la commande précédente (généralement le deuxième mot de la ligne précédente) au point. Si l'argument n est donné, insérer le nième mot de la commande précédente (la numérotation des mots commence à 0 ; voir Expansion de l'historique). Un argument négatif insère le nième mot à partir de la fin de la commande précédente. L'argument n est passé via M-No., par exemple, [ALT-0, ALT-CTRL-Y] insère le 0e mot de la commande précédente (la commande elle-même).
ALT-Y Faire défiler l'anneau de coupe et copier le nouveau texte du haut. Cette commande ne peut être utilisée qu'après yank [CTRL-Y] ou yank-pop [M-Y].
ALT-? Lister les complétions possibles du texte avant le point.
ALT-* Insérer avant le point toutes les entrées de texte que la commande possible-completions [ALT-?] peut générer.
ALT-/ Tenter la complétion de nom de fichier sur le texte avant le point. [CTRL-X,/] traite le texte avant le point comme un nom de fichier et liste les complétions possibles.
ALT-~ Traiter le texte avant le point comme un nom d'utilisateur et tenter une complétion. [CTRL-X,~] liste les complétions possibles pour le texte avant le point en tant que noms d'utilisateur.
ALT-$ Traiter le texte avant le point comme une variable Shell et tenter une complétion. [CTRL-X,$] liste les complétions possibles pour le texte avant le point en tant que variables.
ALT-@ Traiter le texte avant le point comme un nom d'hôte et tenter une complétion. [CTRL-X,@] liste les complétions possibles pour le texte avant le point en tant que noms d'hôte.
ALT-! Traiter le texte avant le point comme un nom de commande et tenter une complétion. Lors de la complétion d'un nom de commande, les alias, les mots réservés, les fonctions Shell, les commandes internes du shell, et enfin les noms de fichiers exécutables sont utilisés tour à tour. [CTRL-X,!] traite le texte avant le point comme un nom de commande et liste les complétions possibles.
ALT-TAB Comparer le texte avant le point avec le texte de la liste d'historique pour trouver des correspondances et tenter une complétion.
ALT-{ Effectuer une complétion de nom de fichier, en plaçant la liste des complétions possibles entre accolades afin que le shell puisse l'utiliser.

Sous Bash, si vous savez utiliser correctement les raccourcis, les opérations sur un système Linux deviennent très rapides. Par exemple, lorsque nous utilisons cat pour créer un fichier, nous pouvons utiliser le raccourci [CTRL-D] :

## 不用快捷键
cat >>/tmp/test<<_EOF
##这里是内容
##最后我们要在新行里面输入_EOF
##cat见到_EOF才会将内容写到文件中

##使用快捷键
cat >>/tmp/test
##这里输入内容
##输入完毕之后,直接[CTRL-D]结束

Parfois, nous devons créer un fichier puis effectuer des opérations dessus :

touch /tmp/a-test-file-from-blog.useasp.net

## 不使用快捷键,文件名要重新输入
chmod u+x /tmp/a-test-file-from-blog.useasp.net

##使用快捷键
chmod u+x <ALT-.>
## 快捷键[M-.]自动会将上面的最后一个参数附加

Que dites-vous de cela ? N'est-ce pas plus efficace ?

Bien sûr, les raccourcis Bash ne permettent d'atteindre une véritable efficacité que par une utilisation constante. Au début, lorsqu'il faut réfléchir longtemps pour savoir quel raccourci utiliser, être efficace est difficile — mais aiguiser la hache ne retarde pas la coupe du bois, et l'investissement initial en vaut la peine.

Si vous voulez que votre Bash soit un peu différent, vous pouvez aussi personnaliser les raccourcis vous-même en utilisant la commande bind. Les raccourcis dans Bash sont en réalité fournis par Readline ; par conséquent, définir des raccourcis ici revient en fait à configurer Readline. Il existe deux types de raccourcis dans Readline : l'un correspond aux raccourcis de fonctions internes de Readline, et l'autre exécute des commandes Shell. Leur configuration est légèrement différente :

##查看Readline中可以使用的函数名称
bind -l
##查看当前绑定的案件配置与其对应的功能
bind -v
##已经绑定的快捷键
bind -p

##绑定自定义执行命令shell命令的快捷键
bind -x '"/C-x/C-l":ls -al'
## 绑定后,按[C-x,C-L]就能执行ls -al

## 绑定内置函数功能
bind "/C-x":backword-delte-char
##这个是这行Readline库中的函数backword-delte-char

Ce paramétrage n'est valable que pour la session en cours. Une fois la session perdue, les raccourcis définis de cette façon sont perdus. Afin de rendre les raccourcis permanents, nous devons écrire la configuration des raccourcis dans un fichier. Sous Linux, il y a deux emplacements pour enregistrer durablement les raccourcis : les fichiers de configuration global et utilisateur. Le global est /etc/inputrc, et celui de l'utilisateur est ~/.inputrc dans le répertoire personnel de l'utilisateur. Le global affecte tous les utilisateurs, tandis que celui du répertoire personnel de l'utilisateur n'affecte que l'utilisateur correspondant. Un exemple de fichier inputrc ressemble à peu près à ceci :

## 本例来自CentOS6.4的默认配置文件
$if mode=emacs

# for linux console and RH/Debian xterm
"/e[1~": beginning-of-line
"/e[4~": end-of-line
# commented out keymappings for pgup/pgdown to reach begin/end of history
#"/e[5~": beginning-of-history
#"/e[6~": end-of-history
"/e[5~": history-search-backward
"/e[6~": history-search-forward
"/e[3~": delete-char
"/e[2~": quoted-insert
"/e[5C": forward-word
"/e[5D": backward-word
"/e[1;5C": forward-word
"/e[1;5D": backward-word

# for rxvt
"/e[8~": end-of-line
"/eOc": forward-word
"/eOd": backward-word

# for non RH/Debian xterm, can't hurt for RH/DEbian xterm
"/eOH": beginning-of-line
"/eOF": end-of-line

# for freebsd console
"/e[H": beginning-of-line
"/e[F": end-of-line
$endif

Notes :

  1. Dans le fichier de configuration, /C représente CTRL, /M représente ALT, /e représente ESC, // est la barre oblique inverse /, /' est le guillemet simple, et /" est le guillemet double.
    /C-    control prefix
    /M-    meta prefix
    /e     an escape character
    //     backslash
    /"     literal ", a double quote
    /’     literal ’, a single quote
    
  2. Pour voir la séquence de caractères d'une touche de fonction, vous pouvez utiliser [CTRL-V], ou taper cat puis appuyer sur Entrée pour entrer en édition, puis appuyer directement sur le raccourci.
  3. Le fichier de configuration peut utiliser des nombres octaux ou hexadécimaux pour représenter des caractères.

Si nous définissons des raccourcis appropriés pour les opérations courantes, les commandes qui nécessitaient auparavant beaucoup de saisie peuvent être exécutées avec un seul raccourci. Cela améliorera sans aucun doute grandement notre efficacité au travail ! Utilisez les raccourcis, jeune homme !

Source : http://www.codeceo.com/article/bash-shortcut.html