Hier ein paar kleine Tipps und Tricks für die Bash.
Livesuche in der History
Sucht man ein Kommando, welches man schon einmal eingegeben hat, so kann man die History (welche in der Datei ~/.bash_history gespeichert wird) durchsuchen. Die Bash stellt dafür sogar eine Livesuche bereit. Diese wird mit der Tastenkombination Strg+r eingeleitet. Danach kann man eine beliebige Zeichenkette eingeben, die in irgendeinem Befehl schonmal vorgekommen ist. Mit jedem eingegebenen Buchstaben werden Vorschläge gemacht, wobei die Suche immer Rückwärts läuft.
Durch erneutes Drücken von Strg+r kann man weiter suchen. So kann man dann z.b. mit Strg+r sudo Strg+r zum vorletzten sudo-Befehl gelangen.
Weitere History-Funktionen
Mit dem Befehl history werden alle eingegebenen Kommandos, die sich in der History befinden mit Zeilennummer ausgegeben. Gibt man dem Befehl noch eine Zahl x als Parameter mit, so werden nur die letzten x Einträge angezeigt. Mit der Option -c (clear) kann man die History löschen.
Normalerweise wird die Datei ~/.bash_history erst beim beenden der Shell geschrieben. Man kann sie aber auch sofort schreiben, indem man den Befehl history -w ausführt. Umgekehrt kann man die aktuelle History auch mittels history -r aus der Datei ~/.bash_history einlesen.
Praktische Tastenkombinationen
- Strg+l – (kleines L) löscht den Bildschirm
- Strg+u – löscht alles vor dem Cursor
- Strg+t – tauscht die letzten beiden Zeichen
- Alt+. – fügt das letzte Argument ein
- Strg+d – beendet die Sitzung bzw. sendet ein EOF (z.B. für at).
Praktische Variablen
- !! – kompletter letzter eingegebener Befehl
- !$ – letztes Argument
- $$ – PID der aktuellen Bash
- !String – letztes Kommando, das mit String angefangen hat
- !?String – letztes Kommando, welches String enthielt.
So kann man mit sudo !! den letzten Befehl mit root-Rechten erneut ausführen oder ihn mit echo “!!” > script.sh in eine Datei schreiben.
Nach einem Kopierbefehl wechselt man mit cd !$ in das Verzeichnis, wohin die Datei(en) kopiert wurde(n).
Mit kill -9 $$ wird die Bash geschlossen ohne dass die Historydatei geschrieben werden kann.
vi-Modus
Die Bash beinhaltet einen vi-Modus, wodurch man vi-Befehle in der Bash nutzen kann. Den Modus startet man mittels
set -o vi
Danach kann man mit ESC in den Kommandomodus gelangen und mit hjkl statt Pfeiltasten navigieren. auch dd, D , p , A, 0 und $,… funktionieren.
Die obige Zeile kann man sich auch in die ~/.bashrc schreiben, damit der vi-Modus standardmäßig aktiviert ist.
Leider funktioniert danach die Tastenkombination Strg+l nicht mehr. Diese kann man jedoch mit einem Binding wieder aktivieren. Dafür schreibt man folgendes in die ~/.bashrc:
# Strg+l - clear screen bind -m vi-insert "\C-l":clear-screen
Geänderte Konfigurationsdatei einlesen ohne neues Terminal aufzumachen
kann man mit folgendem Befehl:
source ~/.bashrc
Prozesskontrolle
Um ein Programm im Hintergrund zu starten hängt man dem Befehl ein & an.
Hat man dies vergessen, so kann man das Programm mit Strg+z anhalten, wodurch man wieder einen Prompt bekommt. Dann kann man den Prozess mittels bg im Hintergrund weiterlaufen lassen. Um ihn wieder in den Vordergrund zu holen genügt ein fg.
Wenn mehrere Prozesse im Hintergrund laufen, so holt fg den letzten Prozess zurück, der in den Hintergrund geschickt wurde. Möchte man einen anderen Prozess in den Vordergrund holen, so kann man fg die entsprechende Job-ID (diese steht in Eckigen klammern, wenn ein Prozess gestoppt oder in den Hintergrund verschoben wird) als Argument mitgeben. Alternativ kann man als Paramter für fg ein % gefolgt von einigen Anfangsbuchstaben des Befehls mitgeben.
fg %v
holt zum Beispiel einen vim-Prozess aus dem Hintergrund (wenn keine anderen Prozesse mit v im Hintergrund sind).
Um zwei Befehle nacheinander auszuführen, kann man sie mit einem Semikolon trennen. Möchte man, dass der 2. Befehl nur ausgeführt wird, wenn der erste Befehl erfolgreich war, so trennt man sie mit &&. dies ist praktisch beim compilieren von Programmen:
./configure && make && make install
So wird make nur ausgeführt, wenn das configurescript ohne Fehler durchgelaufen ist. make install wird nur ausgeführt, wenn make auch wirklich compiliert hat.
Folgende Beiträge könnten Dich auch interessieren:
Schlagworte: Bash, History, Konsole, Prozesse








Wenn du mit Strg+r eine Eingabe suchst, kannst du durch erneutes drücken der Kombination Strg+r weitersuchen, also zum Vorletzten, 3. Letzten usw. Treffer wechseln.
Hi Hagis,
vielen Dank für den Tipp, genau das hab ich gesucht
Gruß
zimon
Hi,
sehr schöne Sachen schreibst du hier, irgendwas ist immer dabei, was man noch nicht kannte.
Wenn ich dich richtig verstehe, dann müsste es einfach reichen, nochmal Ctrl-R zu drücken, oder? Kann aber auch sein, dass ich gerade irgendwie auf dem Schlauch stehe. %)
Cheers!
… irgendwie war ich da jetzt zu langsam. Sorry.
Hallo Vain,
Ist schon klar, das viele der genannen Tipps einigen Lesern schon bekannt sind. Von daher soll und darf sich jeder das raussuchen, was ihm gefällt. Ich schreib das ja auch teilweise für mich selbst als Gedächtnisstütze auf und freu mich natürlich wenn auch andere was davon haben
Macht ja nix, trotzdem Danke.
Gruß
zimon
Danke an Hagis für die tolle Ergänzung. Dank natürlich auch an die Blogbetreiber hier. Ich konnte schon ‘n paar nützliche Sachen mitnehmen.
Der Ubuntuusers-Planet hat schon ‘ne nette Sammlung und es ist schön, dass ihr dabei seid
Vielen Dank. Ctrl-R war genau richtig. Früher habe ich mir immer Page-Up bzw. Page-Down umkonfiguriert.
Feine Sammlung.
Ich könnte da noch ein Strg+d beisteuern, was die aktuelle Session beendet.
Die für mich nützlichsten Kandidaten sind wohl Strg+l und !$.
Für das oben aufgeführte Strg+t versuche ich immer noch ein Anwendungsszenario zu finden *grübel*.
Hallo waste,
werde Strg+d noch mit aufnehmen, Danke.
Strg+t soll wohl für Vertipper gedacht sein. Wirklich angewendet habe ich es aber auch noch nicht.
Ich find Strg+u auch sehr praktisch, wenn man mit Pfeil-hoch durch seine History gescrollt ist und man plötzlich was eingeben möchte, kann man so recht schnell die aktuelle Zeile löschen.
Statt $! nutze ich meist lieber Alt+. weil es schneller getippt ist und man auch direkt sieht, was dabei raus kommt und nicht erst, wenn man den Befehl abgeschickt hat. Außerdem kann man vor dem Abschicken noch was ändern.
Gruß
zimon
[...] Tipps und Tricks für die Bash [...]
Hallo,
wenn ihr mich schon zwei Mal mit Google hier her holt (Ihre Suche nach: shell rausfinden wohin geschrieben wird
Du kommst von w*w.google.de und suchst nach shell rausfinden wohin geschrieben wird:-) stelle ich jetzt auch meine Frage. Wie kann ich rausfinden, (mit der bash auf BSD/MAC) wohin ein Prozess gerade schreibt? Konkret möchte ich wissen wohin Simplyburns beim kopieren einer DVD sein Image versteckt, also den Cache führt? Vielleicht hat ja einer eine Idee!
Grüße
Jens
Der Befehl lsof (list open files) hilft dir hierbei…
Danke für die tollen Tipps! Super Programm für die Eingabe von Befehlen. Die angegebenen Tastenkombinationen machen die Arbeit viel leichter.