Ver una variedad de historial de bash

Ver una variedad de historial de bash

El historycomando enumera todo el historial de la sesión actual. Como:

1 ls 
2 cd /root
3 mkdir something
4 cd something
5 touch afile
6 ls
7 cd ..
8 rm something/afile
9 cd ..
10 ls
11 history

Para buscar artículos de interés, puedo canalizar historycon grepme gusta

history | grep ls
1 ls
6 ls
10 ls

También puedo ver los últimos 3 comandos como:

history 3
11 history
12 history | grep ls
13 history 3

Pero, ¿cómo obtengo un rango específico de historial? Por ejemplo algo como:

history range 4 7
4 cd something
5 touch afile
6 ls
7 cd ..

Respuesta1

En lugar de history, puedes usarfc, que le permiten seleccionar el rango:

fc -l 4 7

Respuesta2

Si usteddebeuse el comando de historial, canalícelo a través de sed o awk:

history | sed -n '10,20p'

history | awk 'NR >= 10 && NR <= 20'

De lo contrario, la respuesta de cuonglm es una mejor opción.

Respuesta3

Usando la historia con ungrep en los números de líneaalrededor del comando que estoy buscando funciona mejor para mí.

Por ejemplo, estoy buscando lo que hice ping mybox, más o menos 20 líneas.

$ history | grep "ping mybox" 20325 ping mybox

Esa es la línea 20325, así que solo tengo que agarrar las líneas que comienzan con un número en el [20320..20339]rango.

$ history | grep ^203[2-3][0-9]

Respuesta4

Si debe usar 'historial', esta es una versión más correcta basada en sed, para las líneas de historial 4-7:

history | sed '/^4 /,/^7 /!d;/^7 /q'

Esto captura la intención del autor original de imprimir las enésimas líneas del historial, no las enésimas líneas de salida del comando de historial. Casi todo el tiempo los dos no serán iguales. Por ejemplo, los números que le interesan al cartel en este resultado histórico:

... 20 preceding lines.
12134 ls dataDir
12135 ls myDir
12136 ls something
... some more lines

son 12134,12135,12136, y no 21,22,23, y el comando sed debería capturar eso, en este caso algo como esto:

history | sed '/^12134 /,/^12135 /!d;/^12135 /q'

El formato específico para los números:

'/^n[space]/'

captura la intención de que el número esté al principio de la línea y que vaya seguido de un espacio. (Mientras veo esto creo que el espacio es innecesario, pero me hace sentir mejor, ja.)

Y sí, como dice arriba @G.Gabunia, fc es más fácil

información relacionada