Linux Bash – History optimieren / Nützliche Parameter
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.
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.
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