Wenn Sie häufig die Linux-Befehlszeile verwenden, kann die effektive Nutzung des Verlaufs eine große Produktivitätssteigerung sein. Sobald Sie die 15 Beispiele beherrschen, die ich hier bereitgestellt habe, werden Sie feststellen, dass die Verwendung der Befehlszeile angenehmer und unterhaltsamer ist.
1. Zeitstempel mit HISTTIMEFORMAT anzeigen
Wenn Sie den Verlauf über die Befehlszeile eingeben, werden normalerweise die Befehlsnummer und der Befehl angezeigt. Zu Prüfzwecken kann es vorteilhaft sein, den Zeitstempel zusammen mit dem Befehl anzuzeigen, wie unten gezeigt.
# export HISTTIMEFORMAT='%F %T ' # history | more 1 2008-08-05 19:02:39 service network restart 2 2008-08-05 19:02:39 exit 3 2008-08-05 19:02:39 id 4 2008-08-05 19:02:39 cat /etc/redhat-release
2. Durchsuchen Sie den Verlauf mit Strg+R
Ich bin fest davon überzeugt, dass dies Ihre am häufigsten verwendete Funktion der Geschichte sein könnte. Wenn Sie bereits einen sehr langen Befehl ausgeführt haben, können Sie den Verlauf einfach mit einem Schlüsselwort durchsuchen und denselben Befehl erneut ausführen, ohne ihn vollständig eingeben zu müssen. Drücken Sie Strg+R und geben Sie das Schlüsselwort ein . Im folgenden Beispiel habe ich nach rot gesucht , der den vorherigen Befehl „cat /etc/redhat-release“ anzeigte ” im Verlauf, der das Wort rot enthielt.
# [Press Ctrl+R from the command prompt, which will display the reverse-i-search prompt] (reverse-i-search)`red': cat /etc/redhat-release [Note: Press enter when you see your command, which will execute the command from the history] # cat /etc/redhat-release Fedora release 9 (Sulphur)
Manchmal möchten Sie einen Befehl aus dem Verlauf bearbeiten, bevor Sie ihn ausführen. Für z.B. Sie können nach httpd suchen , wodurch service httpd stop angezeigt wird Wählen Sie aus dem Befehlsverlauf diesen Befehl aus und ändern Sie den Stopp zum Start und führen Sie es wie unten gezeigt erneut aus.
# [Press Ctrl+R from the command prompt, which will display the reverse-i-search prompt] (reverse-i-search)`httpd': service httpd stop [Note: Press either left arrow or right arrow key when you see your command, which will display the command for you to edit, before executing it] # service httpd start
3. Wiederholen Sie den vorherigen Befehl schnell mit 4 verschiedenen Methoden
Aus verschiedenen Gründen kann es vorkommen, dass Sie die vorherigen Befehle wiederholen. Im Folgenden finden Sie die 4 verschiedenen Möglichkeiten, den zuletzt ausgeführten Befehl zu wiederholen.
- Verwenden Sie den Pfeil nach oben um den vorherigen Befehl anzuzeigen und drücken Sie die Eingabetaste, um ihn auszuführen.
- Geben Sie !! ein und drücken Sie die Eingabetaste auf der Befehlszeile
- Geben Sie !-1 ein und drücken Sie die Eingabetaste in der Befehlszeile.
- Drücken Sie Strg+P zeigt den vorherigen Befehl an, drücken Sie die Eingabetaste, um ihn auszuführen
4. Einen bestimmten Befehl aus dem Verlauf ausführen
Wenn Sie im folgenden Beispiel den Befehl Nr. 4 wiederholen möchten, können Sie !4 ausführen wie unten gezeigt.
# history | more 1 service network restart 2 exit 3 id 4 cat /etc/redhat-release # !4 cat /etc/redhat-release Fedora release 9 (Sulphur)
5. Vorherigen Befehl ausführen, der mit einem bestimmten Wort beginnt
Typ ! gefolgt von den Anfangsbuchstaben des Befehls, den Sie erneut ausführen möchten. Im folgenden Beispiel wird durch Eingabe von !ps und Enter der vorherige Befehl ausgeführt, beginnend mit ps, also „ps aux |“. grep yp’.
# !ps ps aux | grep yp root 16947 0.0 0.1 36516 1264 ? Sl 13:10 0:00 ypbind root 17503 0.0 0.0 4124 740 pts/0 S+ 19:19 0:00 grep yp
6. Steuern Sie die Gesamtzahl der Zeilen im Verlauf mit HISTSIZE
Hängen Sie die folgenden zwei Zeilen an .bash_profile an und melden Sie sich erneut bei der Bash-Shell an, um die Änderung zu sehen. In diesem Beispiel werden nur 450 Befehle im Bash-Verlauf gespeichert.
# vi ~/.bash_profile HISTSIZE=450 HISTFILESIZE=450
7. Ändern Sie den Namen der Verlaufsdatei mit HISTFILE
Standardmäßig wird der Verlauf in ~/.bash_history gespeichert Datei. Fügen Sie die folgende Zeile zu .bash_profile hinzu und melden Sie sich erneut bei der Bash-Shell an, um den Verlaufsbefehl in der Datei .commandline_warrior anstelle der Datei .bash_history zu speichern. Ich muss noch einen praktischen Nutzen dafür finden. Ich sehe, dass dies verwendet wird, wenn Sie Befehle verfolgen möchten, die von verschiedenen Terminals mit unterschiedlichen Verlaufsdateinamen ausgeführt werden.
# vi ~/.bash_profile HISTFILE=/root/.commandline_warrior
Wenn Sie einen guten Grund haben, den Namen der Verlaufsdatei zu ändern, teilen Sie ihn mir bitte mit, da ich daran interessiert bin, herauszufinden, wie Sie diese Funktion verwenden.
8. Eliminieren Sie den ständig wiederholten Eintrag aus der Historie mit HISTCONTROL
Im folgenden Beispiel wurde pwd dreimal eingegeben, wenn Sie den Verlauf ausführen, können Sie alle 3 fortlaufenden Vorkommen davon sehen. Um Duplikate zu eliminieren, setzen Sie HISTCONTROL wie unten gezeigt auf "ignoriert".
# pwd # pwd # pwd # history | tail -4 44 pwd 45 pwd 46 pwd [Note that there are three pwd commands in history, after executing pwd 3 times as shown above] 47 history | tail -4 # export HISTCONTROL=ignoredups # pwd # pwd # pwd # history | tail -3 56 export HISTCONTROL=ignoredups 57 pwd [Note that there is only one pwd command in the history, even after executing pwd 3 times as shown above] 58 history | tail -4
9. Löschen Sie Duplikate im gesamten Verlauf mit HISTCONTROL
Die oben gezeigten ignorierten Aktionen entfernen Duplikate nur, wenn es sich um aufeinanderfolgende Befehle handelt. Um Duplikate im gesamten Verlauf zu eliminieren, stellen Sie HISTCONTROL wie unten gezeigt auf erasedups ein.
# export HISTCONTROL=erasedups # pwd # service httpd stop # history | tail -3 38 pwd 39 service httpd stop 40 history | tail -3 # ls -ltr # service httpd stop # history | tail -6 35 export HISTCONTROL=erasedups 36 pwd 37 history | tail -3 38 ls -ltr 39 service httpd stop [Note that the previous service httpd stop after pwd got erased] 40 history | tail -6
10. Erzwinge mit HISTCONTROL
, dass sich der Verlauf nicht an einen bestimmten Befehl erinnertWenn Sie einen Befehl ausführen, können Sie den Verlauf anweisen, den Befehl zu ignorieren, indem Sie HISTCONTROL auf „ignorespace“ setzen UND ein Leerzeichen vor dem Befehl eingeben, wie unten gezeigt. Ich sehe viele Junior-Systemadministratoren, die sich darüber aufregen, da sie einen Befehl aus der Historie verstecken können. Es ist gut zu verstehen, wie Ignorierspace funktioniert. Als Best Practice sollten Sie jedoch nichts absichtlich vor dem Verlauf verbergen.
# export HISTCONTROL=ignorespace # ls -ltr # pwd # service httpd stop [Note that there is a space at the beginning of service, to ignore this command from history] # history | tail -3 67 ls -ltr 68 pwd 69 history | tail -3
11. Löschen Sie den gesamten vorherigen Verlauf mit der Option -c
Manchmal möchten Sie vielleicht den gesamten vorherigen Verlauf löschen, aber den Verlauf weiterführen.
# history -c
12. Ersetzen Sie Wörter aus Verlaufsbefehlen
Wenn Sie den Verlauf durchsuchen, möchten Sie vielleicht einen anderen Befehl ausführen, aber denselben Parameter aus dem Befehl verwenden, den Sie gerade durchsucht haben.
Im Beispiel unten ist das !!:$ neben dem vi-Befehl erhält das Argument vom vorherigen Befehl zum aktuellen Befehl.
# ls anaconda-ks.cfg anaconda-ks.cfg # vi !!:$ vi anaconda-ks.cfg
Im Beispiel unten ist das !^ neben dem vi-Befehl erhält das erste Argument vom vorherigen Befehl (d. h. cp-Befehl) zum aktuellen Befehl (d. h. vi-Befehl).
# cp anaconda-ks.cfg anaconda-ks.cfg.bak anaconda-ks.cfg # vi !^ vi anaconda-ks.cfg
13. Ersetzen Sie einen bestimmten Befehl durch ein bestimmtes Argument.
Im Beispiel unten !cp:2 sucht nach dem vorherigen Befehl im Verlauf, der mit cp beginnt, nimmt das zweite Argument von cp und ersetzt es wie unten gezeigt durch den Befehl ls -l.
# cp ~/longname.txt /really/a/very/long/path/long-filename.txt # ls -l !cp:2 ls -l /really/a/very/long/path/long-filename.txt
Im Beispiel unten !cp:$ sucht nach dem vorherigen Befehl im Verlauf, der mit cp beginnt, und nimmt das letzte Argument (in diesem Fall auch das zweite Argument, wie oben gezeigt) von cp und ersetzt es durch den Befehl ls -l, wie unten gezeigt.
# ls -l !cp:$ ls -l /really/a/very/long/path/long-filename.txt
14. Deaktivieren Sie die Verwendung des Verlaufs mit HISTSIZE
Wenn Sie den Verlauf vollständig deaktivieren möchten und nicht möchten, dass sich die Bash-Shell die von Ihnen eingegebenen Befehle merkt, setzen Sie HISTSIZE wie unten gezeigt auf 0.
# export HISTSIZE=0 # history # [Note that history did not display anything]
15. Ignorieren Sie bestimmte Befehle aus der Historie mit HISTIGNORE
Manchmal möchten Sie Ihren Verlauf vielleicht nicht mit einfachen Befehlen wie pwd und ls überladen. Verwenden Sie HISTIGNORE, um alle Befehle anzugeben, die Sie aus dem Verlauf ignorieren möchten. Bitte beachten Sie, dass das Hinzufügen von ls zu HISTIGNORE nur ls und nicht ls -l ignoriert. Sie müssen also genau den Befehl angeben, den Sie aus dem Verlauf ignorieren möchten.
# export HISTIGNORE="pwd:ls:ls -ltr:" # pwd # ls # ls -ltr # service httpd stop # history | tail -3 79 export HISTIGNORE="pwd:ls:ls -ltr:" 80 service httpd stop 81 history [Note that history did not record pwd, ls and ls -ltr]
Empfohlene Lektüre
Bash 101 Hacks, von Ramesh Natarajan . Ich verbringe die meiste Zeit in der Linux-Umgebung. Daher bin ich natürlich ein großer Fan von Bash-Befehlszeilen- und Shell-Skripten. Vor 15 Jahren, als ich an verschiedenen Varianten von *nix arbeitete, habe ich viel Code auf der C-Shell und der Korn-Shell geschrieben. Später, als ich anfing, als Systemadministrator an Linux zu arbeiten, automatisierte ich so ziemlich jede mögliche Aufgabe mit Bash-Shell-Scripting. Basierend auf meiner Bash-Erfahrung habe ich das eBook „Bash 101 Hacks“ geschrieben, das 101 praktische Beispiele sowohl für die Bash-Befehlszeile als auch für Shell-Scripting enthält. Wenn Sie darüber nachgedacht haben, Bash zu meistern, tun Sie sich selbst einen Gefallen und lesen Sie dieses Buch, das Ihnen helfen wird, die Kontrolle über Ihre Bash-Befehlszeile und Ihr Shell-Skripting zu übernehmen.
Tolle Linux-Artikel
Es folgen einige tolle 15 Beispiele Artikel, die Sie möglicherweise hilfreich finden.
- Unix LS-Befehl:15 praktische Beispiele
- Bekomme den Grep in den Griff! – 15 praktische Grep-Befehlsbeispiele
- Linux Crontab:15 fantastische Cron-Job-Beispiele
- Mama, ich habe es gefunden! — 15 praktische Beispiele für Linux-Suchbefehle