Usando la flecha hacia arriba para ejecutar el comando anterior


11

¿Qué configuración necesito para usar la flecha hacia arriba para ejecutar el comando anterior? Con Mac, puedo usar la flecha hacia arriba para volver a ejecutar el comando que acabo de ejecutar, pero no parece funcionar con mi shell bash.

Uso 8.04 (no puedo usar la distribución más reciente debido a algunos problemas con la versión del compilador).

ADICIONAL

No cambié nada, ya que es una instalación nueva con VMWare Fusion en Mac.


3
En la configuración predeterminada, la flecha hacia arriba funciona perfectamente: ¿ha modificado algunas cosas?
enzotib

como @enzotib dice que bash hará esto por defecto, pero algunos otros, por ejemplo, sh no lo hará
Rory Alsop

Respuestas:


10

Asegúrate de que tu historial esté habilitado. Puede verificar el estado actual ejecutando:

set -o

La salida debe contener (tenga en cuenta la history onlínea):

histexpand      on
history         on
ignoreeof       off

Si esto no está habilitado, debe ejecutar set -o history. Para que este cambio sea persistente, debe agregarlo a ~/.bashrc:

set -o history

Si desea ejecutar el comando anterior, también puede ejecutar el siguiente comando:

!!

Desde la página del manual de Bash :

Event Designators
   An event designator is a reference to a command line entry in the history list.

   !      Start a history substitution, except when followed by a blank, newline,
          carriage return, = or ( (when the extglob shell option  is
          enabled using the shopt builtin).
   !n     Refer to command line n.
   !-n    Refer to the current command line minus n.
   !!     Refer to the previous command.  This is a synonym for `!-1'.
   !string
          Refer to the most recent command starting with string.
   !?string[?]
          Refer to the most recent command containing string.  The trailing ? 
          may be omitted if string is followed immediately by a newline.
   ^string1^string2^
          Quick  substitution.  Repeat the last command, replacing string1 with
          string2.  Equivalent to ``!!:s/string1/string2/'' (see Modifiers below).
   !#     The entire command line typed so far.

Si está utilizando Bash, también puede usar los accesos directos predeterminados para navegar por el historial:

  • Ctrl+ P: Comando anterior
  • Ctrl+ N: Siguiente comando

    Comandos para manipular el historial previous-history (Cp) Obtenga el comando anterior de la lista del historial y retroceda en la lista. next-history (Cn) Obtenga el siguiente comando de la lista de historial, avanzando en la lista.


1
Verifiqué que la configuración es correcta, pero la tecla de flecha hacia arriba no funciona. Sin embargo, puedo usar Ctrl-P / N para obtener el mismo resultado. Gracias.
prosseek

@prosseek En ese caso, ¿has cambiado /etc/inputrco ~/.inputrc? Además, ¿qué secuencia de escape produce la flecha hacia arriba y hacia abajo en el terminal que está utilizando? Para verificar, ejecute cat, luego en la línea vacía, presione uparrow y downarrow, luego Ctrl + C para salir de cat. Aquí produce ^[[A^[[B.
geirha

@geirha: No tengo el archivo ~ / .inputrc, y no cambié nada / etc / inputrc. Y para la secuencia de escape, no se ve nada en la pantalla.
prosseek

@prosseek Entonces parece que las teclas de flecha nunca llegan a la terminal. Quizás la interfaz VMWare los está filtrando o algo así.
geirha

14

Asegúrate de estar usando bash. A Gotcha común es la creación de un nuevo usuario con useradden lugar de addusero la aplicación Usuarios y grupos (GUI). Con el primero, el conjunto de shell predeterminado es /bin/sh. Ejecute chsh( ch ange sh ell) para asegurarse de que esté configurado en /bin/bash.


1

En terminal ingrese:

gedit  ~/.inputrc

Luego copie y pegue:

"\e[A": history-search-backward
"\e[B": history-search-forward
"\e[C": forward-char
"\e[D": backward-char

De ahora en adelante en la terminal, puede hacer una búsqueda incremental. Todo lo que necesita hacer para encontrar un comando anterior es ingresar, digamos, las primeras dos o tres letras y la flecha hacia arriba lo llevará rápidamente.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.