GNU/Linux >> Tutoriales Linux >  >> Linux

Analizando el historial de Bash en Linux

En Bash, la history El comando es la clave no solo para comprender lo que ha estado haciendo durante su sesión de shell, sino también para obtener materia prima para los nuevos comandos que desea ejecutar en el futuro. History es especialmente útil cuando está ejecutando un servidor sin cabeza. Si no tiene mouse, no puede copiar y pegar fácilmente la última mitad de un comando complejo para ejecutar una versión ligeramente modificada, por lo que debe escribir todo de nuevo, a menos que use history modificadores.

Mantén el historial fuera de tu historial

Antes de discutir la historia, aquí hay un consejo para mantener la history literal entradas fuera de su historial.

El problema con el uso del history Comando para revisar tu history es que agrega una entrada a tu history expediente. Estas entradas no solo saturan tu history , pero también hacen que cada línea se aleje "más" de su posición actual.

$ cd example-project
$ ls
bin doc src
$ touch doc/LICENSE
$ history
102 cd example-project
103 ls
104 touch doc/LICENSE
105 history
$

Un objetivo en movimiento es difícil de rastrear y difícil de alcanzar, así que si planeas usar seriamente tu history para acelerar sus interacciones Bash, agregue esta configuración a su .bashrc archivo:

export HISTCONTROL=$HISTCONTROL:ignorespace

Esta configuración evita que cualquier comando precedido por un espacio se agregue a su history de Bash .

$ cd example-project
$ ls
bin doc src
$ touch doc/LICENSE
$   history
102 cd example-project
103 ls
104 touch doc/LICENSE
$

[ Curso en línea gratuito:Resumen técnico de Red Hat Enterprise Linux. ]

Eventos históricos

La estructura básica del shell history comienza con una lista de events . Un event es cualquier cosa que haya ingresado en el shell, seguido de Return o Enter llave. Cada event se le asigna un número de índice (un número de línea), y puede ver y recuperar eventos usando event designators .

Por ejemplo, para recuperar un elemento de línea específico en su shell history , utilice un signo de exclamación (! ) seguido inmediatamente por el número del history línea:

$   history
102 cd example-project
103 ls
104 touch README
$ !103
ls
bin doc README src

También puede hacer referencia a comandos anteriores en relación con su posición en el history listado. Por ejemplo, para ejecutar un comando dos líneas en el pasado, piense en su solicitud actual como una más grande que la última línea en history y luego reste el número de la línea que desea ejecutar de su número de línea actual. En este ejemplo, la línea 103 es la línea objetivo y 105 es el aviso actual (para un delta de 105-103=2 ):

$   history
102 cd example-project
103 ls
104 touch README
$ !103
ls
bin doc README src

Puede guardar un carácter completo si solo desea volver a ejecutar la última línea. La expresión !! y !-1 son sinónimos:

$   history
102 cd example-project
103 ls
104 touch README
$ !103
ls
bin doc README src

Observe que el comando en sí se repite en la salida cuando history se repite. Para mayor brevedad y claridad, dicha salida se excluye de los ejemplos restantes en este artículo.

Designadores de palabras

Bash tiene características para ayudarte a analizar tu history usando word designators y herramientas que le permiten modificar los comandos en su history . Podría ser útil pensar en el history de su shell como una matriz indexada, o incluso como un gran objeto de historial que consta de muchos elementos más pequeños. Cada palabra en cada línea de tu history está indexado, comenzando en 0 (que suele ser el comando, pero los comandos de varias partes y los prefijos de variables de entorno son excepciones notables). Puede acceder a cada índice agregando dos puntos (: ) a su referencia de línea, seguido inmediatamente por el word designator .

Aquí hay un ejemplo accediendo a la primera palabra:

$   history
102 cd example-project
103 ls
104 touch README
$ !103
ls
bin doc README src

Debido a que agarrar el primer argumento es común, el acento circunflejo (o el "sombrero":^ ) es un alias para :1 .

$ echo foo
$ !!^
foo

En el otro extremo del espectro, el dólar ($ ) el signo representa el argumento final:

$ echo foo bar baz
$ echo !!$
baz

Rangos de palabras

No tienes que conformarte con un solo argumento. También puede extraer rangos de un índice. Todos los argumentos excepto el cero están disponibles con un asterisco (* ).

$ echo foo bar baz
$ touch !!*
$ ls
foo bar baz

Este es en realidad un sinónimo de 1-$ (es decir, del primer argumento al último argumento). Como era de esperar, puede definir arbitrariamente su rango utilizando esta notación no abreviada. Este ejemplo hace referencia del segundo al quinto argumento, ignorando el primero y los dos últimos argumentos:

$ cp foo a.sh spacer.sh rev.bin sync.py baz ~/dest
$ cd ~/dest
$ chmod ug+x !-2:2-5
$ ls -l --classify
a.sh*  baz  foo  rev.bin*  spacer.sh*  sync.py*

Si solo necesita excluir la palabra única final en un índice, puede proporcionar un rango sin terminación:

$ cp foo a.sh spacer.sh ~/dest
$ cd ~/dest
$ chmod ug+x !-2:2-
$ ls -l --classify
a.sh*  foo  spacer.sh*

Uso de la historia para obtener velocidad y precisión

La history El comando no siempre se trata de reducir las pulsaciones de teclas. Puedes usar tu history de Bash para evitar excluir accidentalmente un archivo o carpeta de una operación importante, o escribir mal el nombre de un archivo. Siéntete cómodo con el history Comando para interacciones Bash más robustas.

[ ¿Quiere probar Red Hat Enterprise Linux? Descárgalo ahora gratis. ]


Linux
  1. Cómo usar los comandos del historial de Bash

  2. Cómo borrar el historial de línea de comandos BASH en Linux

  3. Cómo borrar el historial de Bash en Linux

  4. Comando de historial en Linux explicado en profundidad

  5. ¿Cómo acortar el indicador de Bash en Linux?

Comando de historial en Linux (Bash History)

Comando de historial en Linux con ejemplos

Cómo evitar entradas duplicadas en el historial de Bash en Linux

Cómo habilitar la marca de tiempo en el historial de Bash en Linux

Cómo instalar Mcfly en Linux.

Cómo borrar el historial de Bash en Linux y Mac