¿Hay algún manual para obtener la lista de teclas de método abreviado bash?

21

Hay muchos accesos directos que uso al interactuar con la línea de comandos bash para facilitar y agilizar el trabajo.

Me gusta:

  • ctrl + L : para borrar la pantalla
  • ctrl + a / ctrl + e : para mover el inicio / final de la línea
  • ctrl + r : para buscar el historial del comando simplemente escribiendo algunos caracteres
  • ctrl + u / ctrl + y : para cortar / pegar la línea.

y muchos más, que quiero saber y que definitivamente serán útiles para aprender.

¿Quiero saber de dónde puedo obtener la lista de estos accesos directos en Ubuntu? ¿Hay algún manual que enumere estos accesos directos?

NOTA:

Quiero obtener la lista de accesos directos y sus acciones en un solo lugar. Realmente ayudará a aprender muchos de ellos en un período de tiempo corto. Entonces, ¿hay forma de que podamos obtener la lista de esta manera? Aunque gracias por la respuesta dada aquí ...

    
pregunta Saurav Kumar 07.04.2014 - 22:40

5 respuestas

22

Los valores predeterminados están en man bash , junto con detalles sobre lo que hace cada comando. Consulte la respuesta de BroSlow si ha cambiado sus enlaces de teclas.

   Commands for Moving
       beginning-of-line (C-a)
              Move to the start of the current line.
       end-of-line (C-e)
              Move to the end of the line.
       forward-char (C-f)
              Move forward a character.
       backward-char (C-b)
              Move back a character.
       forward-word (M-f)
              Move forward to the end of the next word.  Words are composed of alphanumeric characters (letters and digits).
       backward-word (M-b)
              Move back to the start of the current or previous word.  Words are composed of alphanumeric characters (letters and digits).
       shell-forward-word
              Move forward to the end of the next word.  Words are delimited by non-quoted shell metacharacters.
       shell-backward-word
              Move back to the start of the current or previous word.  Words are delimited by non-quoted shell metacharacters.
       clear-screen (C-l)
              Clear the screen leaving the current line at the top of the screen.  With an argument, refresh the current line without clearing the screen.

...

       reverse-search-history (C-r)
              Search backward starting at the current line and moving 'up' through the history as necessary.  This is an incremental search.

...

       unix-line-discard (C-u)
              Kill backward from point to the beginning of the line.  The killed text is saved on the kill-ring.

...

       yank (C-y)
          Yank the top of the kill ring into the buffer at point.

EDITAR

Estos comandos están todos en una sección contigua del manual, por lo que puede navegar desde Commands for Moving . Alternativamente, puede guardar esta sección completa en un archivo de texto con

man bash | awk '/^   Commands for Moving$/{print_this=1} /^   Programmable Completion$/{print_this=0} print_this==1{sub(/^   /,""); print}' > bash_commands.txt

(N.B. imprime toda la sección, incluidos los comandos sin atajo de teclado predeterminado).

Explicación del código awk

  • En la (única) aparición de Commands for Moving , establezca la variable print_this en 1.
  • En la (única) aparición de Programmable Completion , que es la siguiente sección, establezca la variable en 0.
  • Si la variable es 1, deshágase del espacio en blanco inicial (tres espacios) e imprima la línea.
respondido por el Sparhawk 07.04.2014 - 23:25
18

Puede enumerar todos los accesos directos en su shell bash actual llamando al bash incorporado bind con la opción -P .

por ej.

bind -P | grep clear
clear-screen can be found on "\C-l".

Para cambiarlos, puedes hacer algo como

 bind '\C-p:clear-screen'

Y colóquelo en un archivo init para hacerlo permanente (tenga en cuenta que solo puede tener una combinación de teclas ligada a una cosa a la vez, por lo que perderá cualquier enlace que haya tenido anteriormente).

    
respondido por el BroSlow 08.04.2014 - 01:06
7

El siguiente comando proporciona un buen resultado en columnas que muestra el uso y los accesos directos.

bind -P | grep "can be found" | sort | awk '{printf "%-40s", } {for(i=6;i<=NF;i++){printf "%s ", $i}{printf"\n"}}'

Esto da una salida, que se ve como

abort                                   "\C-g", "\C-x\C-g", "\e\C-g". 
accept-line                             "\C-j", "\C-m". 
backward-char                           "\C-b", "\eOD", "\e[D". 
backward-delete-char                    "\C-h", "\C-?". 
backward-kill-line                      "\C-x\C-?". 
backward-kill-word                      "\e\C-h", "\e\C-?". 
backward-word                           "\e\e[D", "\e[1;5D", "\e[5D", "\eb". 
beginning-of-history                    "\e<". 
beginning-of-line                       "\C-a", "\eOH", "\e[1~", "\e[H". 
call-last-kbd-macro                     "\C-xe". 
capitalize-word                         "\ec". 
character-search-backward               "\e\C-]". 
character-search                        "\C-]". 
clear-screen                            "\C-l". 
complete                                "\C-i", "\e\e". 
...

Obtenga este resultado en un archivo de texto usando el siguiente comando

bind -P|grep "can be found"|sort | awk '{printf "%-40s", } {for(i=6;i<=NF;i++){printf "%s ", $i}{printf"\n"}}' > ~/shortcuts

El archivo se crea en su directorio $ HOME.

Explicación

  • obtiene todos los accesos directos.

    bind -P
    
  • elimina todos los accesos directos no asignados

    grep "can be found"
    
  • ordena la salida

    sort
    
  • imprime la primera columna (es decir, la función) y justifica el texto

    awk '{printf "%-40s", }
    
  • Esto es parte del comando anterior. Imprime columnas 6+ (es decir, accesos directos).

    {for(i=6;i<=NF;i++){printf "%s ", $i}{printf"\n"}}'
    
  • Pone la salida en un buen archivo de texto en el directorio de inicio denominado accesos directos

    > shortcuts
    

Puede obtener la idea de cómo funciona el comando ejecutando los siguientes comandos.

bind -P
bind -P | grep "can be found"
bind -P | grep "can be found" | sort
    
respondido por el Registered User 08.04.2014 - 07:59
1

De acuerdo, tengo una forma de obtener la lista de accesos directos filtrando el manual de bash . También dará la descripción de lo que hace exactamente cada atajo. Gracias a Sparhawk que me iluminó para encontrar la solución. Lo que necesitaba era aprender el uso de expresiones regulares aunque todavía no soy bueno en eso:)

  

Así que aquí está el comando de una línea:

man bash | grep "(.-.*)$" -A1
  

Aquí hay una pequeña extracción de la salida:

   beginning-of-line (C-a)
          Move to the start of the current line.
   end-of-line (C-e)
          Move to the end of the line.
   forward-char (C-f)
          Move forward a character.
   backward-char (C-b)
          Move back a character.
   forward-word (M-f)
          Move forward to the end of the next word.  Words are composed of alphanumeric characters (letters and digits).
   backward-word (M-b)
          Move back to the start of the current or previous word.  Words are composed of alphanumeric characters (letters and digits).
   clear-screen (C-l)
          Clear the screen leaving the current line at the top of the screen.  With an argument, refresh the current line without clearing the
   previous-history (C-p)
          Fetch the previous command from the history list, moving back in the list.
   next-history (C-n)
          Fetch the next command from the history list, moving forward in the list.
   beginning-of-history (M-<)
          Move to the first line in the history.
   end-of-history (M->)
          Move to the end of the input history, i.e., the line currently being entered.
   reverse-search-history (C-r)
          Search backward starting at the current line and moving 'up' through the history as necessary.  This is an incremental search.
   forward-search-history (C-s)
          Search forward starting at the current line and moving 'down' through the history as necessary.  This is an incremental search.
  

Ahora, para guardar los accesos directos a un archivo:

man bash | grep "(.-.*)$" -A1 > bash_shortcuts

Eso es todo lo que necesitaba. Solo quería saber las teclas de método abreviado asignadas a bash y no he reconfigurado ninguna clave como me preguntó BroSlow .

Una vez más, gracias a todos por sus contribuciones.

Nota :

Si alguien quiere mejorar esto, es bienvenido. Solo mencioné la forma de enumerar los accesos directos asignados por algunas teclas. Así que si alguien sabe cómo hacer una lista de las acciones que no han sido asignadas con la descripción de esta manera , es bienvenido:)

    
respondido por el Saurav Kumar 08.04.2014 - 10:21
1

Mientras el manual de bash no se modifique de forma que este comando sea incorrecto (lo que no es muy probable), el siguiente comando mostrará todos los accesos directos predeterminados para bash .

man bash | grep -A294 'Commands for Moving'

Esto da un resultado que se ve así:

 Commands for Moving
   beginning-of-line (C-a)
          Move to the start of the current line.
   end-of-line (C-e)
          Move to the end of the line.
   forward-char (C-f)
          Move forward a character.
   backward-char (C-b)
          Move back a character.
   forward-word (M-f)
          Move forward to the end of the next word.  Words are composed of alphanumeric characters (letters and digits).
   backward-word (M-b)
          Move back to the start of the current or previous word.  Words are composed of alphanumeric characters (letters  and
          digits).
   shell-forward-word
          Move forward to the end of the next word.  Words are delimited by non-quoted shell metacharacters.
   shell-backward-word
          Move back to the start of the current or previous word.  Words are delimited by non-quoted shell metacharacters.
   clear-screen (C-l)
          Clear  the  screen  leaving  the  current line at the top of the screen.  With an argument, refresh the current line
          without clearing the screen.
   redraw-current-line
          Refresh the current line.

Commands for Manipulating the History
   accept-line (Newline, Return)
          Accept the line regardless of where the cursor is.  If this line is non-empty, add it to the history list  according
          to  the state of the HISTCONTROL variable.  If the line is a modified history line, then restore the history line to
          its original state.
   previous-history (C-p)
          Fetch the previous command from the history list, moving back in the list.
   next-history (C-n)
...

Si se modifica el manual de bash, este comando puede cambiarse fácilmente para adaptarse a las necesidades.

    
respondido por el Registered User 20.04.2014 - 05:09

Lea otras preguntas en las etiquetas