Cómo obtener el rango del historial del shell Bash

Cómo obtener el rango del historial del shell Bash

¿Cómo puedo obtener/filtrar entradas del historial en un rango específico?

Tengo un archivo de historial grande y uso con frecuencia

history | grep somecommand

Ahora, mi memoria es bastante mala y también quiero ver qué más hice cuando ingresé el comando.

Por ahora hago esto: conseguir pareja, digamos 4992 somecommand, luego lo hago

history | grep 49[0-9][0-9]

Esto suele ser bastante bueno, pero preferiría hacerlo con mayor precisión, es decir, ver los comandos del 4972 al 5012, es decir, 20 comandos antes y 20 después.

Me pregunto si hay una manera más fácil. Sospecho que es necesario un script personalizado, pero quizás alguien más haya hecho algo similar antes.

Respuesta1

Puede indicar grepque se imprima algunas líneas que rodean el partido, por ejemplo, 3 antes y 5 después:

history | grep -B 3 -A 5 somecommand

grep -C 4es equivalente a grep -A 4 -B 4.

Pero a menudo no sabrá exactamente cuántas líneas desea de antemano. Así que usa menos y busca en su interior. Incluso puedes iniciar la búsqueda desde la línea de comando:

history | less +/somecommand

Respuesta2

Prueba fc:

fc -l 4972 5012

... es un comando integrado de bash. (así que no lo intentes en tcsh :>)

Respuesta3

intentarhistory | grep -C20 '^4992'

información relacionada