Bash tiene una rica historia. Es decir, es un caparazón antiguo con un ancestro aún más antiguo (el caparazón Bourne), pero también tiene una gran history
Comando que supera a todas las demás interfaces de historial de shell en función de su número de funciones. La versión Bash de history
permite búsquedas inversas, recuperación rápida, reescritura del historial y más.
La history
El comando no es como muchos otros comandos. Es posible que esté acostumbrado a que los comandos sean archivos ejecutables ubicados en ubicaciones comunes a nivel del sistema como /usr/bin
, /usr/local/bin
, o ~/bin
. El history
incorporado el comando no está en tu PATH
y no tiene ubicación física:
$ which history
which: no history in [PATH]
En su lugar, history
es una función integrada del propio shell:
$ type history
history is a shell builtin
$ help history
history: history [-c] [-d offset] [n] or
history -anrw [filename] or
history -ps arg [arg...]
Display or manipulate the history list.
[...]
Por esa razón, la función de historial en cada shell es única, por lo que lo que usa en Bash puede no funcionar en Tcsh o Fish o Dash, y lo que usa en esos puede no funcionar en Bash. En algunos casos, saber lo que Bash puede hacer puede inspirar a los usuarios de otros shells a crear trucos interesantes para clonar el comportamiento de Bash, y puede desbloquear características de Bash que nunca supo que existían.
Ver tu historial de Bash
El uso más básico y frecuente de la history
El comando es ver un historial de su sesión de shell:
$ echo "hello"
hello
$ echo "world"
world
$ history
1 echo "hello"
2 echo "world"
3 history
Designadores de eventos
Más recursos de Linux
- Hoja de trucos de los comandos de Linux
- Hoja de trucos de comandos avanzados de Linux
- Curso en línea gratuito:Descripción general técnica de RHEL
- Hoja de trucos de red de Linux
- Hoja de trucos de SELinux
- Hoja de trucos de los comandos comunes de Linux
- ¿Qué son los contenedores de Linux?
- Nuestros últimos artículos sobre Linux
Los designadores de eventos buscan en su historial por evento. Un evento en este contexto es un comando registrado en su historial, delineado por un carácter de nueva línea. En otras palabras, es una línea, marcada con un número de índice como referencia.
Los designadores de eventos en su mayoría comienzan con un signo de exclamación, a veces también llamado bang (!
).
Para volver a ejecutar un comando de su historial, use el signo de exclamación seguido inmediatamente (sin espacios) por el número de índice del comando que desea. Por ejemplo, suponga que la línea 1 contiene el comando echo "hello"
y desea volver a ejecutarlo:
$ !1
echo "hello"
hello
Puede utilizar el posicionamiento relativo proporcionando un número negativo de líneas desde su posición actual en el historial. Por ejemplo, para retroceder tres entradas en el historial:
$ echo "foo"
foo
$ echo "bar"
bar
$ echo "baz"
baz
$ !-3
echo "foo"
foo
Si solo retrocedes una línea, puedes usar la abreviatura !!
en lugar de !-1
. ¡Eso es un ahorro de una sola pulsación de tecla!
$ echo "foo"
$ !!
echo "foo"
foo
Búsqueda de cadenas
También puede buscar una cadena específica a través de las entradas, a la inversa, para ejecutar un comando. Para buscar un comando empezando con una cadena específica, use un signo de exclamación seguido inmediatamente (sin espacio) por la cadena que desea buscar:
$ echo "foo"
$ true
$ false
$ !echo
echo "foo"
foo
También puede buscar un comando que contenga una cadena en cualquier posición (no solo al principio). Para hacer eso, usa !
más la cadena que está buscando, como de costumbre, pero rodee la cadena con signos de interrogación en cada extremo. Puede omitir el signo de interrogación final si sabe que la cadena está seguida inmediatamente por un carácter de nueva línea (lo que significa que es lo último que escribió antes de presionar Retorno ):
$ echo "foo"
$ true
$ false
$ !?foo?
echo "foo"
foo
Sustitución de cadena
Similar a buscar cadenas al comienzo de una línea, puede buscar una cadena y reemplazarla con una nueva cadena, cambiando el comando:
$ echo "hello"
hello
$ echo "world"
world
$ ^hello^foo
echo "foo"
foo
Hacer útil el historial
En Bash, el comando de historial es capaz de hacer mucho más de lo que se ha cubierto aquí, pero este es un buen comienzo para acostumbrarse a usar su historial en lugar de tratarlo simplemente como una referencia. Usa el history
Comando a menudo y vea cuánto puede hacer sin tener que escribir comandos. ¡Puede que te sorprendas a ti mismo!