¿Qué significa (arg: n) en el símbolo del sistema?

10

En el curso de la línea de comandos de Codecademy , cuando intenta utilizar el método abreviado de teclado Alt+Shift+#(que se supone que comenta la línea actual) en el símbolo del sistema, cambia el indicador de $a en (arg: 3)lugar de agregar un guión al comienzo de la línea. Alt+Shift+@hará que se muestre en su (arg: 2)lugar, etc. Vea la última línea en la captura de pantalla a continuación. Antes de golpear Alt+Shift+#era justo $.

captura de pantalla

El acceso directo funciona bien en mi máquina.

  1. ¿Qué es esta (arg: n)cosa?
  2. ¿De qué dependen los atajos de teclado para funcionar? ¿Diseño del teclado? Distribución del sistema operativo? Emulador de terminal? CLI predeterminado? ¿Qué?
usuario331380
fuente

Respuestas:

15

Este es el mensaje de la biblioteca readline cuando ingresa un argumento numérico. Al escribir AltShift@en su teclado, aparentemente está ingresando a Alt2qué mapas M-2, que se ejecuta digit-argumenten readline por defecto, y comienza a ingresar un argumento numérico. Si presiona Alt3(que se AltShift#asigna en su caso) verá el cambio rápido a (arg: 23); puede continuar con cualquier Altcombinación de dígitos.

Estos argumentos se utilizan para ciertas funciones de línea de lectura, por ejemplo yank-nth-arg. Para ver esto en acción, ejecute

echo Hello my friend

luego presione Alt2seguido de CtrlAltY; verá aparecer el (arg: 2)aviso, luego desaparecerá, y el segundo argumento del comando anterior ("mi") se agregará a su línea de comando actual.

Consulte la documentación vinculada anteriormente para más detalles. Bash usa readline para manejar su entrada; otros proyectiles no mostrarán el mismo comportamiento.

Algunos emuladores de terminal usan algunas de estas combinaciones de teclas para sus propios fines; por ejemplo, en Terminal GNOME, Alt-dígitos cambia a la n º pestaña. Deberá deshabilitar estas combinaciones para usar las funciones de línea de lectura.

En su caso, el emulador de terminal basado en web Codecademy no parece manejar AltShiftmuy bien las combinaciones. Si no necesita los atajos de argumentos numéricos, puede reutilizarlos ejecutando

bind Meta-3:insert-comment

En teoría, debería poder almacenar esto permanentemente agregando

Meta-3: insert-comment

a un ~/.inputrcarchivo, pero no pude conseguir que funcione en Codecademy.

Stephen Kitt
fuente
1
Gracias. ¿Cómo deshabilito readline o de otra manera solo uso un atajo de teclado para comentar la línea de comando actual?
user331380
¿Qué emulador de terminal estás usando?
Stephen Kitt
Quiero saber cómo hacerlo en Codecademy, no tengo forma de hacer clic derecho y averiguarlo. ps -o 'cmd=' -p $(ps -o 'ppid=' -p $$)salidas /usr/local/bin/ein -service-port 4006 -http-port 4007. ¿Esto ayuda?
user331380
1
@ user331380 Probablemente esté usando bashshell en Codeacademy allí. En el shell interactivo, puede comenzar una nueva instancia con bash --noediting. Eso deshabilitará readline, pero tenga en cuenta que la readlinebiblioteca es responsable de muchas funciones de edición de línea, lo que puede hacer que el uso interactivo de shell sea un poco más incómodo
Sergiy Kolodyazhnyy
Vale la pena mencionar que también ocurre en las combinaciones de teclas vi cuando simplemente escribe el número en modo normal para representar el argumento numérico del siguiente comando en modo normal que escribe.
JoL