Die Linux Bash speichert die zuletzt eingegebenen Befehle ab, die man dann mit dem Befehl history abrufen kann.

History entschlacken

Über die Konfigurationsdati der Bash lassen sich hier noch ein paar nützliche Optimierungen vornehmen, z.B. lassen sich Duplikate auslenden oder Befehle, die mit einem vorangestellten Leerzeichen eingegeben werden.

Linux Bash History

Dazu bearbeitet man die Datei .bashrc seines Benutzers:

nano ~/.bashrc

HISTORY-Befehle in der BASH-History nicht anzeigen:

HISTIGNORE=history:fc*

Dubletten und Befehle mit vorangestelltem Leerzeichen in der History ignorieren:

HISTCONTROL=ignoreboth

Danach müssen dei Einstellungen noch dauerhaft gespeichert werden:

source ~/.bashrc

History Session-übergreifend verfügbar machen

Diesen Tipp habe ich aus der c’t 20/2020.

Damit man in allen Terminal-Sessions eine einheitliche History bekommt, gibt es folgenden Trick:

nano ~/.bashrc

PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"

Nun die bashrc veröffentlichen:

source ~/.bashrc

Wenn man nun einen Befehl eingibt und ein neues Terminalfenster öffnet, wird man dort dieselbe History vorfinden. Eine Bedingung gibt es allerdings: Da die History nur nach jedem Befehl aktualisiert wird, muss man in dem neu geöffneten Terminal einmal Enter drücken, damit sich die Befehle in die neue Session übertragen.

Hilfreiche Kommandos / Parameter für die History

Parameter Bechreibung
!! Zuletzt aufgerufene Befehl
:h In einer Pfadangabe das Ende abschneiden (alles hinter dem letzten Slash)
:r Alles hinter dem letzten Punkt abschneiden (hilfreich bei Dateinamen)
:e Alles hinter dem letzten Punkt (Dateiendung)
!* Alle Parameter vom vorherigen Befehl
!$ Letzter Parameter vom vorherigen Befehl
:1-3 Der zweite bis vierte Parameter des Befehls (erster Parameter wäre 0)
:1-$ Ab dem zweiten und alle weiteren Parameter des Befehls
:* Alle Parameter des Befehls

Beispiel: Mehrere Pakete mit apt-install hintereinander installieren

Man installiert ein Paket über apt install, dann fällt einem ein das man ja noch mehr Pakete installieren muss. Man möchte aber nicht jedesmal apt install eingeben, sondern diese zwei Befehle (“apt” und “install”) weiter verwenden.

(Mir ist durchaus bewusst, dass man mit apt install auch mehrere Pakete hintereinander installieren kann, aber das dient ja hier nur als Beispiel)

apt install php7.4

Nun möchte man zusätzlich das Paket php7.4-cli installieren. Dazu führt man folgendes Kommando aus:

!:0-1 php7.4-cli

Das “!:0-1” bedeutet, dass man die ersten beiden Befehle es letzten Kommandoaufrufs weiter verwenden möchte.

Linux Bash History

Beispiel: Ordner wechseln anhand einer vorher geöffneten Datei

Man gibt die Datei /etc/ssh/sshd/config aus und möchte nachher in das entspr. Verzeichnis springen. Die Datei am Ende soll also abgeschnitten werden.

cat /etc/ssh/sshd_config

Um nun in den Ordner /etc/ssh/ zu springen, geben wir folgendes ein:

cd !!:$:h

!! steht in dem Fall für den letzten Parameter des vorherigen Befehls, das :h scneidet alles ab dem letzten Schrägstrich ab. So bleibt folgendes Kommando übrig:

cd /etc/ssh