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

History anpassen

Ü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

Bestimmte Befehle in der BASH-History nicht anzeigen:

HISTIGNORE="?:??:???:bash:clear:exit:man*:*--help*"

Die jeweiligen Werte sind mit Doppelpunkt getrennt. Erklärung:

  • Alle Befehl mit einer Länge von 1-3 ausblenden
  • Alle Befehle mit bash, clear, exit, man*, –help ebenfalls ausblenden

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

Damit wird die History nach jedem Projekt vom Arbeitsspeicher direkt in die History-Datei geschrieben. So bekommt man in allen Terminal-Sessions eine einheitliche History, ohne sich mit exit abmelden zu müssen:

nano ~/.bashrc

PROMPT_COMMAND="history -a

Nun die bashrc veröffentlichen:

source ~/.bashrc

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