El historycomando enumera todo el historial de la sesión actual. Me gusta:
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 elementos de interés, puedo canalizar historycon me grepgusta
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 historia? Por ejemplo algo como:
history range 4 7
4 cd something
5 touch afile
6 ls
7 cd ..
bash
command-history
Slartibartfast
fuente
fuente

xcomandos y luego canalizarloshead.history | grep somethingmuestra los resultados de los comandos numerados123 234 345en el historial y es posible que no sepa el número del último comando ejecutado (historyen este caso). Mi último comando podría estar numerado 400, 500 o lo que sea. Así que primero tengo que comprobar ese número, figura la diferencia, la lista de los últimosxcomandos y luego a la tuberíaheadRespuestas:
En lugar de
history, puede usarfc, que le permiten seleccionar el rango:fuente
fc -l -16 -10.Si debe usar el comando de historial, póngalo a través de sed o awk:
De lo contrario, la respuesta de cuonglm es una mejor opción.
fuente
headytailresolvería este problema de una manera aún menos elegante. Para el rango 10-> 25 tendrías que usarhistory | head 25 | tail 15.Usar el historial con un grep en los números de línea alrededor del comando que estoy buscando funciona mejor para mí.
Por ejemplo, estoy buscando lo que hice alrededor
ping mybox, más o menos 20 líneas.$ history | grep "ping mybox" 20325 ping myboxEsa es la línea,
20325así que solo tengo que seleccionar las líneas comenzando por un número en el[20320..20339]rango.$ history | grep ^203[2-3][0-9]fuente