Dans un terminal virtuel, j'ai (accidentellement) appuyé sur Win+1 et a une nouvelle ligne composée de
(arg: 1)
Tant que je garde Win appuyez sur, tous les chiffres sur lesquels j’appuie sont ajoutés au nombre entre parenthèses, par ex. Win et 1+4 renvoie (arg:14)
.
Quand je (après avoir relâché Win) appuyez sur n’importe quelle touche, ce caractère est imprimé autant de fois que le nombre est lu et l’expression (arg: ...)
est remplacée par l’invite standard.
Est-ce que quelqu'un sait ce qui se passe ici?
C’est un argument numérique , une fonctionnalité de la bibliothèque readline intégrée à bash
:
digit-argument (M-0, M-1, ..., M--)
Add this digit to the argument already accumulating, or start a
new argument. M-- starts a negative argument.
Cette fonctionnalité simplifie l'ajout ou la suppression de texte dans la ligne de commande en cours d'édition. Supposons que vous souhaitiez écrire echo gggg
:
echo
suivi d'un espace4g
Mais combien de fois avez-vous besoin de taper une seule lettre si souvent que cela vous épargnerait quelque chose? Cette fonctionnalité est principalement conçue pour les commandes readline , voir chapitres 8.2.1–8.2.3 du Manuel de référence (“C " sens Ctrl, "M" signifiant Meta).
Vous pouvez revenir en arrière d’un mot avec Meta et B, mais si vous vouliez reculer de plusieurs mots à la fois? Vous pouvez soit tenir Alt et appuyez sur B plusieurs fois, ou utilisez l'argument digit:
Il y a une faute de frappe sur votre ligne de commande cinq mots en retour:
$ echo one two tree four five six seven█
Appuyez sur la touche Meta, tapez 5
et appuyez sur Meta. B. Et violà:
$ echo one two █ree four five six seven
Vous pouvez supprimer un seul mot en appuyant sur Meta et Backspace, mais si vous vouliez supprimer plusieurs mots à la fois?
Vous avez oublié un mot sur votre ligne de commande:
$ echo one two four five six seven█
Appuyez sur la touche Meta, tapez 4
et appuyez sur Meta. Backspace.
$ echo one two █
Tapez le mot manquant suivi d'un espace et appuyez sur Ctrl+Y coller ce qui vient d'être supprimé. Et violà:
$ echo one two three four five six seven█
Vous avez raison, vous auriez également pu vous déplacer comme expliqué ci-dessus sans rien supprimer. Nous sommes sous Linux, il y a toujours plusieurs façons de faire la même chose.
Et quel est un "argument négatif"? Il en va de même, mais dans le sens opposé, donc Meta -2
Meta Backspace supprime les deux mots suivants de la ligne de commande. “Mais on pourrait utiliser Meta 1
Meta D faire la même chose! ”Heureux de l'avoir eu, bienvenue dans votre ligne de commande.
Lectures complémentaires: