El history
comando 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 history
con me grep
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 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
x
comandos y luego canalizarloshead
.history | grep something
muestra los resultados de los comandos numerados123 234 345
en el historial y es posible que no sepa el número del último comando ejecutado (history
en 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 últimosx
comandos y luego a la tuberíahead
Respuestas:
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
head
ytail
resolverí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 mybox
Esa es la línea,
20325
así 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