Bash/Kommandozeile

Aus Foxwiki

Beschreibung

  • Wer sich effizient auf der Kommandozeile bewegen kann, hat viele Aufgaben in Windeseile erlegt.
  • Unter Linux wird als Standart-Shell die bash eingesetzt.
  • Diese bietet einige praktische Funktionen und Besonderheiten gegenüber den Gewohnheiten von Windowsbenutzern.
  • Die Hauptaufgabe einer Shell ist die Entgegennahme und Ausführung von Kommandos.
  • Zum Bearbeiten der aktuellen Kommandozeile stehen sowohl Emacs- als auch vi-kompatible Editiermodi zur Verfügung - voreingestellt ist der Emacs-Modus.
  • Wenn Sie lieber im vi-Modus arbeiten, stellen Sie ihn durch den Befehl set -o vi ein, zurück in den Emacs-Modus geht's mit set -o emcas.

Editierfunktionen im Emacs-Modus

[Esc], [F] springt bis zum nächsten Wortende
[Esc], [B] springt bis zum vorigen Wortanfang
[Strg]+[E] springt zum Zeilenende
[Strg]+[A] springt zum Zeilenanfang
[ALT]+[D] Wort löschen
[STRG]+[T] Die beiden vorangegangenen Zeichen vertauschen
[ALT]+[T] Die beiden vorangegangenen Wörter vertauschen
  • Abhängig von der eingesetzten Terminalemulation können Sie Kombinationen mit der [Esc]-Taste oft auch mit der [Alt]-Taste nachbilden.
  • Statt also nacheinander [Esc] und [F] zu drücken, funktioniert meist auch die Kombination [Alt]+[F].
  • Die Fülle der Navigationskommandos der Bash, um sich dem Fehler in der Eingabe anzunähern, sind so mannigfaltig, das wohl die wenigsten Anwender ohne nachzuschlagen, alle aufzählen könnten.
  • Aber zum Glück genügt die Kenntnis einer kleinen Teilmenge, um den Cursor gekonnt in Position zu bringen.
  • Bei entsprechender Konfiguration helfen die Nummern- und Navigationstasten der Tastatur schnell zum Ziel, jedoch sind diese in vielen Terminalemulationen nicht vorhanden, so dass Sie auf die »normalen« Navigationsmechanismen der Bash angewiesen sind.

Kommandozeilen vervollständigen

  • Eine der größten Vorzüge der Bash gegenüber anderen Shells sind die umfangreichen Möglichkeiten, unvollständige Eingaben automatisch zu ergänzen.
  • Die Bash ist somit in der Lage, sowohl Dateinamen, Kommandonamen, Benutzernamen, Rechnernamen als auch Variablennamen zu ergänzen, sofern die bisher eingegebenen Zeichen eine eindeutige Zuordnung zulassen.
  • Eine Variablennamensergänzung wird versucht, wenn das erste Zeichen ein $ ist; einem Benutzernamen muss die Tilde ~ und dem Rechnernamen ein @ voran stehen, um eine solche Ergänzung zu erzwingen.
  • In allen anderen Fällen wird zunächst eine Kommando- und anschließend eine Dateinamensergänzung versucht.

Beispiel

Um den Inhalt der Datei /usr/share/doc/packages/cron/README zu betrachten, geben Sie folgende Zeile ein:

$ less /usr/share/doc/packages/cron/README

Sie mussten 35 mal die Tastatur bemühen... Versuchen Sie nun die folgende Tastenfolge:

$ less /u[Tab]/s[Tab]/d[Tab]/p[Tab]/c[Tab]/R[Tab]
  • Mit etwas Glück steht nun - nach nur 6 Tastaturanschlägen - dieselbe vollständige Kommandozeile zur Verfügung.
  • Falls nicht, hat die Bash sicherlich mit einem Signal reagiert?
  • Die Bash ergänzt Ihre Eingabe nur, wenn beim Drücken der [Tab]-Taste die bislang eingegebene Zeichenkette eindeutig expandiert werden kann.
  • Auf meinem System ist das bei obigem Beispiel der Fall, bei dem Ihren womöglich nicht.

Reagiert die Bash mit einem Signal, so erreichen Sie durch ein zweites Betätigen von [Tab] die Anzeige einer Liste aller Ergänzungen:

y[Tab] # die Bash reagiert mit einem Piepton
y[Tab][Tab]
yacc       ypcat       ypdomainname  ypwhich     yuvtoppm
ybmtopbm   ypchfn      ypmatch       yuvsplittoppm
yes        ypchsh      yppasswd      yuvsum 

Kann die Zuordnung nicht vollzogen werden, müssen Sie weitere Zeichen eingeben und anschließend die [Tab]-Taste erneut bemühen:

yb[Tab]
ybmtopbm

finger @l[Tab]
finger @localhost

ls ~r[Tab]
ls ~root/

Die Tabulatortaste ist somit die nützlichste Eingabehilfe der Bash. Aber sie ist nicht die Einzige:

[Alt]-[?] Zeigt alle Möglichkeiten der Ergänzung an (wie [Tab][Tab])
[Alt]-[*] Fügt eine Liste aller möglichen Ergänzungen ein
[Alt]-[/] Versucht eine Dateinamenergänzung
[Alt]-[$] Versucht eine Variablenergänzung
[Alt]-[@] Versucht eine Rechnernamenergänzung
[Alt]-[~] Versucht eine Benutzernamenergänzung
[Alt]-[!] Versucht eine Kommandonamenergänzung (Alias, Funktion, eingebautes Kommando, Programm)

Beispiel

  • Die Plattenplatzbelegung aller Benutzer soll überprüft werden.
  • Benutzer, die weniger als 1k Speicherkapazität verwenden (0 Blöcke), werden ausgenommen:
$ du -s ~[Alt][*] 2>/dev/null | grep -v ^0

du -s ~adabas ~amanda ~at ~bin ~codadmin ~cyrus ~daemon ~db2as ~db2fenc1 ~db2inst1  ~dbmaker ~dpbox ~fax ~fib ~firewall ~fixadm ~fixlohn ~fnet ~ftp ~games ~gdm ~gnats             ~informix ~ingres ~irc ~ixess ~lnx ~lp ~man ~mdom  ~mysql ~named ~news ~nobody ~nps             ~oracle ~postfix ~postgres ~root ~skyrix ~squid ~thomas ~user1 ~user2 ~user3 ~uucp             ~virtuoso ~wwwrun ~yard ~zope 2>/dev/null | grep -v ^0

5270    /bin
11080   /sbin
39      /var/spool/lpd
1584    /var/cache/man
392240  /home/user

Positionieren des Cursors

[Strg]+[a] bzw. [Strg]+[e] Bewegt den Cursor an den Beginn bzw. das Ende der Zeile
[Strg]+[f] bzw. [Strg]+[b] Bewegt den Cursor ein Zeichen vor bzw. zurück
[Alt]+[f] bzw. [Alt]+[b] Bewegt den Cursor ein Wort vor bzw. zurück

Text Löschen und einfügen

[Strg]+[d] 

Löscht das Zeichen unter dem Cursor

[Strg]+[k] 

Löscht den Text ab der Cursorposition bis zum Zeilenende

[Strg]+[u] 

Löscht den Text links des Cursors bis zum Zeilenanfang

[Alt]+[d] 

Löscht ab dem Cursor bis zum Ende des Wortes

[Strg]+[y] 

Fügt den zuletzt gelöschten Text an der Cursorposition ein

[Alt]+[y] 

Dieses Kommando kann nur unmittelbar nach [Strg]+[y] gerufen werden und rotiert den (Ring)Puffer der gelöschten Texte, dazu ein Beispiel:

Das Beispiel demonstriert das Löschen und Einfügen von Text

# Cursor an den Anfang des Wortes "Einfügen"
[Alt]+[b],[Alt]+[b],[Alt]+[b]
echo Das Beispiel demonstriert das Löschen und Einfügen von Text
# Löschen von "Einfügen"
[Alt]+[d]
echo Das Beispiel demonstriert das Löschen von Text
# Cursor unter "Löschen" und löschen:
[Alt]+[b],[Alt]+[b],[Alt]+[d]
echo Das Beispiel demonstriert das   und  von Text
# Einfügen von "Einfügen" aus dem Ringpuffer:
[Strg]+[y],[Alt]+[y]
echo Das Beispiel demonstriert das Einfügen  und  von Text
# Einfügen von "Löschen" aus dem Ringpuffer hinter "und":
[Alt]+[f],[Strg]+[f],[Strg]+[y],[Alt]+[y]
echo Das Beispiel demonstriert das Einfügen und Löschen  von Text

Der letzte Einfügevorgang funktioniert mit der angegebenen Tastenfolge nur, wenn einzig »Löschen« und »Einfügen« im Ringpuffer enthalten sind.

[Alt]+[u] 

Wandelt das Wort ab Cursorposition in Großbuchstaben

[Alt]+[l]

Wandelt das Wort ab Cursorposition in Kleinbuchstaben

[Alt]+[r] 

Macht alle Änderungen in der Kommandozeile rückgängig

[Alt]+[c] 

Wandelt den Buchstaben an der Cursorposition in einen Großbuchstaben um und springt ans Ende des aktuellen Wortes

Die oben aufgeführten Eingabehilfen beschreiben einzig eine Teilmenge der Möglichkeiten der Bash.

Eine vollständige Auflistung liefert sie das eingebaute Kommando

bind -P.

Ausgabe anhalten

[Strg]+[s] 

Ausgabe fortsetzen

[Strg]+[q] 

Bildschirm wiederherstellen

[Strg]+[l] 
  • Ctrl-S und Ctrl-Q waren früher bei langsamen, seriellen Terminals noch als Reaktionstest brauchbar.
  • Heute sind sie nicht mehr zum Steuern der Ausgabe verwendbar, weil die Bildschirmanzeige zu schnell durchläuft.
  • Trotzdem kann Ctrl-S Ärger machen, wenn Sie versehentlich auf die Taste kommen.
  • Dann bleibt die Ausgabe stehen und man hat das Gefühl, der Rechner reagiert nicht mehr.
  • Also erst mal versuchsweise Ctrl-Q drücken.

Bereits erwähnte und Auswahl weiterer Tastenkürzel

Strg + Alt + T Standard zum Öffnen der meisten Terminalprogramme. Muss bei KDE erst aktiviert werden.
Strg + Alt + F1 bis F6 Öffnen der Virtuellen Konsolen 1 bis 6.
Strg + Alt + F7 Von der Virtuellen Konsole zurück zur grafischen Oberfläche.
Bearbeiten
Tasten Aktion
Strg + A Cursor an den Anfang der Eingabezeile bewegen.
Strg + E Cursor an das Ende der Eingabezeile bewegen.
Alt + . Einfügen der letzten Option (Wort) der letzten Eingabe – mehrmaliges Betätigen möglich.
Strg + H Löscht letztes Zeichen vor Cursorposition, analog zu ⌫ .
Strg + D Löscht nächstes Zeichen ab Cursorposition, analog zu Entf , auf einer leeren Zeile entspricht dies der Eingabe von exit.
Strg + W Löscht letzten Begriff vor der Cursorposition.
Strg + U Löscht alles ab der Cursorposition bis Anfang der Eingabezeile.
Strg + K Löscht alles ab der Cursorposition bis Ende der Eingabezeile.
Strg + ⇧ + X Löschen des Bildschirms vor aktueller Zeile.
Strg + ⇧ + C Kopieren des markierten Texts in die Zwischenablage.
Strg + ⇧ + V Einfügen der Zwischenablage an der Cursorposition.
Strg + C Bricht laufenden Befehl/Prozess ab.
Suchen und Blättern
Tasten Aktion
Rückwärtsblättern in den letzten Befehlseingaben.
Vorwärtsblättern in den letzten Befehlseingaben.
Tab ⇆ Autovervollständigung von Befehlen und Dateinamen.
Strg + R Suchen in den letzten Eingaben ( ← bricht Suche ab, ⏎ führt Kommando erneut aus) – mehrmaliges Betätigen möglich.
Strg + ⇧ + F Suchen in der Bildschirmanzeige.
Strg + ⇧ + ↑ Zeilenweises Rückwärtsblättern der Bildschirmanzeige.
Strg + ⇧ + ↓ Zeilenweises Vorwärtsblättern der Bildschirmanzeige.
⇧ + Bild ↑ Seitenweises Rückwärtsblättern der Bildschirmanzeige.
⇧ + Bild ↓ Seitenweises Vorwärtsblättern der Bildschirmanzeige.