Veja uma série de históricos do bash

Veja uma série de históricos do bash

O historycomando lista todo o histórico da sessão atual. 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 pesquisar itens de interesse, posso historyusar greplike

history | grep ls
1 ls
6 ls
10 ls

Também posso ver os últimos três comandos como:

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

Mas como obtenho um intervalo específico de histórico? Por exemplo algo como:

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

Responder1

Em vez de history, você pode usarfc, que permite selecionar o intervalo:

fc -l 4 7

Responder2

Se vocêdeveuse o comando history, canalize-o através do sed ou awk:

history | sed -n '10,20p'

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

Caso contrário, a resposta do cuonglm é a melhor opção.

Responder3

Usando o histórico com umgrep nos números de linhaem torno do comando que estou procurando funciona melhor para mim.

Por exemplo, estou procurando o que fiz por aí ping mybox, mais ou menos 20 linhas.

$ history | grep "ping mybox" 20325 ping mybox

Essa é a linha 20325, então só preciso digitar as linhas começando por um número no [20320..20339]intervalo.

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

Responder4

Se você precisar usar 'history', esta é uma versão mais correta baseada em sed, para as linhas de histórico 4-7:

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

Isso captura a intenção do autor da postagem original de imprimir as enésimas linhas do histórico, não as enésimas linhas de saída do comando histórico. Quase sempre os dois não serão os mesmos. Por exemplo, os números com os quais o autor da postagem se preocupa nesta saída histórica:

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

são 12134,12135,12136, e não 21,22,23, e o comando sed deve capturar isso, neste caso algo assim:

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

O formato específico para os números:

'/^n[space]/'

captura a intenção de que o número esteja no início da linha e seja seguido por um espaço. (Quando olho para isso, acho que o espaço é desnecessário, mas me faz sentir melhor, ha.)

E sim, como @G.Gabunia disse acima, fc é mais fácil

informação relacionada