it-swarm.com.de

Zeigen Sie eine Reihe von Bash-Verlaufsdaten an

Der Befehl history listet den gesamten Verlauf der aktuellen Sitzung auf. Mögen:

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

Um nach interessanten Objekten zu suchen, kann ich history mit grep like pfeifen

history | grep ls
1 ls
6 ls
10 ls

Ich kann auch die letzten 3 Befehle anzeigen wie:

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

Aber wie bekomme ich einen bestimmten Bereich der Geschichte? Zum Beispiel so etwas wie:

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

Anstelle von history können Sie fc verwenden, mit dem Sie den Bereich auswählen können:

fc -l 4 7
58
cuonglm

Wenn Sie müssen den Befehl history verwenden, leiten Sie ihn durch sed oder awk:

history | sed -n '10,20p'

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

Ansonsten ist die Antwort von cuonglm die bessere Option.

11
G.Gabunia

Die Verwendung des Verlaufs mit einem grep auf den Zeilennummern um den Befehl, den ich suche, funktioniert am besten für mich.

Zum Beispiel suche ich nach dem, was ich um ping mybox Gemacht habe, mehr oder weniger 20 Zeilen.

$ history | grep "ping mybox" 20325 ping mybox

Das ist Zeile 20325, Also muss ich die Zeilen nur mit einer Zahl im Bereich [20320..20339] Beginnen.

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

1
Luc Yriarte