Kurze Bash: Bash-Shortcuts
Im unzusammenhängenden Sammelsurium von Posts auf dieser Seite hatte ich noch eine neue Idee: Mir ist aufgefallen, dass es einige wenige Bash-Shortcuts gibt, die ich nahezu täglich verwende und die mir Dinge schneller und einfacher machen, die aber nicht besonders bekannt sind.
Tote ssh-Verbindungen
Wer häufiger SSH nutzt und möglicherweise auch noch häufiger mit instabilen Netzwerken zu tun hat, kennt einfrierende SSH-Sessions.
Wenn diese einfrieren, blockieren sie das Terminal und lassen sich mit gängigen Shortcuts (ctrl+c, ctrl+d, …) nicht beenden. Die korrekte Tastenkombination zum beenden der toten Session und um das Terminal wieder frei zu geben, ist nacheinander Enter ~ .
zu drücken.
Letzten Befehl recyclen
Die Verwendung von !!
wird von Bash bei Ausführung durch den letzten ausgeführten Befehl ersetzt.
Das ist zum Beispiel sehr praktisch, wenn sudo vor einem Befehl vergessen wurde. Statt den Befehl neu einzutippen oder aber mit den Pfeiltasten wieder in die aktuelle Zeile zu ziehen, an den Anfang des Befehls zu gehen und dort “sudo” anzufügen, funktioniert
❯ pacman -Syu
error: you cannot perform this operation unless you are root.
❯ sudo !!
[sudo] password for user:
:: Synchronizing package databases...
deutlich schneller und komfortabler.
Letztes Argument des letzten Befehls recyclen
Mit der Tastenkombination Esc .
(Esc gedrückt halten und solange . drücken) wird das letzte Argument des letzten Befehls an der Stelle des Cursors in den aktuellen Command eingefügt.
Anwendungsmöglichkeit ist zum Beispiel in einen Ordner zu springen, den wesen sich vorher anzeigen lassen hat:
❯ ls /etc/systemd/
coredump.conf journal-upload.conf oomd.conf system user
homed.conf logind.conf pstore.conf system.conf user.conf
journald.conf network resolved.conf system.control
journal-remote.conf networkd.conf sleep.conf timesyncd.conf
❯ cd
jetzt die Tastenkombination drücken und “/etc/systemd” wird nach “cd” eingefügt. Gerade für lange Pfade spart das Zeit.
Ultimatives Recycling: Rückwärtssuche
Wer längere Befehle immer wieder nutzt, kann diese entweder als Alias anlegen oder mit Strg+R aus seiner History heraussuchen. Strg+R öffnet dabei einen Eingabepromt “(reverse-i-search)`:” Dort einen Teil des gesuchten Befehls eingeben, die Konsole wird automatisch den letzten Befehl aus der History suchen, der den eingebenen Suchbegriff an irgendeiner Stelle enthält und wenn Enter gedrückt wird, ausführen.
Exit code nachträglich bestimmen
Wer herausfinden will, warum ein Befehl gescheitert ist, interessiert sich mitunter für den Exit-Code. Wenn dieser nicht angezeigt wird, lässt er sich mit ausgeben, indem die Variable $? ausgeben wird, diese enthält immer den Exit-Code des letzten Befehls.
❯ ( exit 0 )
❯ echo $?
0
❯ ( exit 3 )
❯ echo $?
3
❯ ls /etc/systemd >/dev/null
❯ echo $?
0
❯ ls /etc/nonexistent >/dev/null
ls: cannot access '/etc/nonexistent': No such file or directory
❯ echo $?
2
Ich habe diesen Artikel zwar nach Bash benannt, aber alles genannte funktioniert auch in den meisten gängigen anderen Shells. Zumindest in zsh habe ich alles davon reproduzieren können.
Über Hinweise auf andere praktische Shortcuts freue ich mich natürlich, gerne per Mastodon oder auch Mail input@ diese Domain an mich.