Que signifie (arg: n) dans l'invite de commande?

10

Sur le cours de ligne de commande de Codecademy , lorsque vous essayez d'utiliser le raccourci clavier Alt+Shift+#(qui est censé commenter la ligne actuelle) dans l'invite de commande, il bascule l'invite de $vers (arg: 3)au lieu d'ajouter un tiret au début de la ligne. Alt+Shift+@le fera s'afficher à la (arg: 2)place, etc. Voir la dernière ligne dans la capture d'écran ci-dessous. Avant de frapper, Alt+Shift+#c'était juste $.

capture d'écran

Le raccourci fonctionne bien sur ma machine.

  1. Quelle est cette (arg: n)chose?
  2. De quoi dépendent les raccourcis clavier pour fonctionner? Clavier? Distribution OS? Émulateur de terminal? CLI par défaut? Quelle?
user331380
la source

Réponses:

15

Il s'agit de l'invite de la bibliothèque readline lorsque vous saisissez un argument numérique. En tapant AltShift@sur votre clavier, vous saisissez apparemment les Alt2mappages vers M-2lesquels s'exécutent par défaut digit-argumenten ligne de lecture et commencent à saisir un argument numérique. Si vous appuyez ensuite sur Alt3(qui AltShift#correspond à votre cas), vous verrez le changement d'invite sur (arg: 23); vous pouvez continuer avec n'importe Altquelle combinaison de chiffres.

Ces arguments sont utilisés pour certaines fonctions readline, par exemple yank-nth-arg. Pour voir cela en action, exécutez

echo Hello my friend

puis appuyez sur Alt2suivi de CtrlAltY; vous verrez l' (arg: 2)invite apparaître, puis disparaître, et le deuxième argument de la commande précédente («mon») sera ajouté à votre ligne de commande actuelle.

Voir la documentation liée ci-dessus pour plus de détails. Bash utilise readline pour gérer son entrée; les autres obus ne montreront pas le même comportement.

Certains émulateurs de terminaux utilisent certaines de ces combinaisons de touches à leurs propres fins; par exemple dans GNOME Terminal, Alt-digit bascule vers le n ième onglet. Vous devrez désactiver ces combinaisons pour utiliser les fonctions readline.

Dans votre cas, l'émulateur de terminal Web Codecademy ne semble pas AltShifttrès bien gérer les combinaisons. Si vous n'avez pas besoin des raccourcis d'arguments numériques, vous pouvez les réutiliser en exécutant

bind Meta-3:insert-comment

En théorie, vous devriez pouvoir stocker ceci en permanence en ajoutant

Meta-3: insert-comment

dans un ~/.inputrcfichier, mais je n'ai pas réussi à faire fonctionner Codecademy.

Stephen Kitt
la source
1
Je vous remercie. Comment désactiver la ligne de lecture ou utiliser simplement un raccourci clavier pour commenter la ligne de commande actuelle?
user331380
Quel émulateur de terminal utilisez-vous?
Stephen Kitt
Je veux savoir comment le faire sur Codecademy, je n'ai aucun moyen de faire un clic droit et de le découvrir. ps -o 'cmd=' -p $(ps -o 'ppid=' -p $$)sorties /usr/local/bin/ein -service-port 4006 -http-port 4007. est-ce que cela aide?
user331380
1
@ user331380 Vous utilisez probablement le bashshell sur Codeacademy là-bas. Dans le shell interactif, vous pouvez démarrer une nouvelle instance avec bash --noediting. Cela désactivera la lecture en ligne, mais gardez à l'esprit que la readlinebibliothèque est responsable de nombreuses fonctionnalités d'édition de ligne, ce qui peut rendre l'utilisation interactive du shell un peu plus inconfortable
Sergiy Kolodyazhnyy
Il peut être utile de mentionner que cela se produit également sur vi-keybindings lorsque vous tapez simplement le nombre en mode normal pour représenter l'argument numérique de la prochaine commande en mode normal que vous tapez.
JoL