GNU/Linux >> LINUX-Kenntnisse >  >> Linux

15 Beispiele zur Beherrschung der Linux-Befehlszeilengeschichte

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.

  1. Verwenden Sie den Pfeil nach oben um den vorherigen Befehl anzuzeigen und drücken Sie die Eingabetaste, um ihn auszuführen.
  2. Geben Sie !! ein und drücken Sie die Eingabetaste auf der Befehlszeile
  3. Geben Sie !-1 ein und drücken Sie die Eingabetaste in der Befehlszeile.
  4. 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 erinnert

Wenn 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

Linux
  1. Linux-Verlaufsbefehl

  2. rm-Befehlsbeispiele unter Linux

  3. ps-Befehlsbeispiele in Linux

  4. ac-Befehlsbeispiele in Linux

  5. df-Befehlsbeispiele in Linux

Diff-Befehl in Linux mit Beispielen

Verlaufsbefehl in Linux mit Beispielen

Meistern Sie die Linux-Befehlszeile

Verwendung des Linux-Befehls sed mit Beispielen

15 Praktische Grep-Befehlsbeispiele in Linux / UNIX

id-Befehlsbeispiele in Linux