Linux im GriffSoftware

cli.help – Update: Bash Builtins Teil 1/5

10 neue Tools haben sich zu unserer Linux-Hilfe gesellt, zum Beispiel bg, alias und command

cli.help ist unser hauseigenes Linux-Hilfe-Projekt für das Command Line Interface (CLI), also den guten alten Terminal. Die GNU Core Utilities haben wir bereits komplett dokumentiert, dazu Git, Docker und das Thema Nutzerverwaltung. Jetzt folgen Stück für Stück die Bash-internen Funktionen, insgesamt rund 50 Stück.

Bash Builtins

Neben den GNU Core Utilities liefern vor allem die Bash-eigenen Funktionen die wichtigsten Werkzeuge für die allermeisten Linux-Nutzer. Zu den bekannteren Befehlen gehören etwa alias, cd, echo, exec, jobs, kill, pwd und source. Dem Alphabet ist es geschuldet, dass bislang folgende Tools fertig sind:

  • alias
  • bg
  • bind
  • break
  • builtin
  • cd
  • command
  • compgen
  • complete
  • compopt
  • Extra: autocompletion

Die letzten drei Befehle behandeln das Thema Auto Completion, also die Vervollständigung zum Beispiel von Befehlen mit Optionen per TAB-Taste. Allein machen die Tools wenig Sinn, daher findet Ihr die wichtigsten Infos dazu zusammengefasst in autocompletion. Aufrufen könnte Ihr die Seiten wie gewohnt per

curl cli.help/alias
curl cli.help/autocompletion

und so weiter.

Inhalte

Hier die Inhalte der einzelnen Dateien, in guter alter MAD-Manier lieblos zusammengestellt.

alias

Alle Aliasse anzeigen:

alias

ll temporär als Alias für "ls -al" setzen:

alias ll='ls -al'

Alias dauerhaft in ~/.bashrc eintragen:

alias ll='ls -al'

bind

An Tastenkürzel anbindbare (Editing-)FUNKTIONEN (-P) samt Kürzeln (soweit angebunden) anzeigen:

bind -P

An Tastenkürzel angebundene SHELL-KOMMANDOS (-X) anzeigen:

bind -X

An Tastenkürzel angebundene MAKROS (-S) anzeigen:

bind -X

Tastenkürzel STRG-K (\C-k) für das KOMMANDO (-x) xeyes anlegen:

bind -x '"\C-k":xeyes'

Für die folgenden Beispiele nützlich: Keycode für F7 anzeigen:

STRG-V F7

MAKRO-Text "Hello World" an Taste F7 (Keycode: [20~ und \e als Escape-Zeichen) binden:

bind '"\e[20~":"Hello World"'

FUNKTION undo an F7 binden:

bind '"\e[20~":undo'

Keymap von vi statt des emacs-Standards nutzen:

bind -m vi

Binding für STRG-K löschen:

bind -r "\C-k"

Alle Bindings für Funktion undo löschen:

bind -u undo

break

While-Schleife unterbrechen:

while true; do echo Hallo Welt; break; done

Zwei verschachtelte While-Schleifen unterbrechen:

while true; do echo eins; while true; do echo zwei; break 2; done; done

builtin

Bash-eigenen echo-Befehl nutzen, obwohl weiterer echo-Befehl existiert:

builtin echo Hallo

Beispiel: Standard-echo nutzen, obwohl echo als Alias für "echo -e" gesetzt ist:

alias echo='echo -e'
echo "Hallo\nWelt"
Ausgabe:
Hallo
Welt
builtin echo "Hallo\nWelt"
Ausgabe:
Hallo\nWelt

cd

Ins Home-Verzeichnis des Nutzers wechseln 1:

cd

Ins Home-Verzeichnis des Nutzers wechseln 2:

cd ~

In übergeordnetes Verzeichnis wechseln:

cd ..

Ins Verzeichnis "test" zwei Ebenen weiter oben wechseln:

cd ../../test

In Quelle (/etc) eines verknüpften Verzeichnisses (~/etc-shortcut) wechseln:

cd -P ~/etc-shortcut

command

Informationen über einen Befehl/ein Programm oder eine Bash-interne Funktion anzeigen, hier foobar:

command V foobar

Befehl aus dem Standard-PATH nutzen, auch wenn eventuell ein anderes Programm für denselben Aufruf definiert ist:

command -p xeyes

Bash-eigenen echo-Befehl nutzen, obwohl weiterer echo-Befehl existiert:

command echo Hallo

Beispiel: Standard-echo nutzen, obwohl echo als Alias für "echo -e" gesetzt ist:

alias echo='echo -e'
command -V echo
Ausgabe:
echo ist ein Alias von `echo -e'.
echo "Hallo\nWelt"
Ausgabe:
Hallo
Welt
command echo "Hallo\nWelt"
Ausgabe:
Hallo\nWelt

Auto Completion

Elemente aus "foo fuu option3 option3" ausgeben, die mit f beginnen:

compgen -W 'foo fuu option3 option3' -- f

Die Eingabe "./meinskript [TAB][TAB]" per Autovervollständigung mit Verzeichnisnamen im aktuellen Verzeichnis erweitern:

complete -o dirnames ./meinskript

Die Option "dirnames" aus obigem Beispiel wieder entfernen:

compopt +o dirnames ./meinskript

Simpelst mögliches Beispiel: Autovervollständigung der Eingabe "foobar [TAB][TAB]" mit den Optionen zunge, hand oder bein. Bei der Eingabe "foobar b [TAB][TAB]" wird nur die Option bein angeboten und so weiter. Skript unter "/etc/bash_completion.d/IRGENDEINNAME" erstellen, anschließend ausführen:

_foobarcompletion() 
{
    local getippte_buchstaben
    getippte_buchstaben="${COMP_WORDS[COMP_CWORD]}"
    COMPREPLY=( $(compgen -W "zunge hand bein" -- ${getippte_buchstaben}) )
}
complete -F _foobarcompletion foobar

Weitere Artikel zum Thema CLI/Terminal.

Mirco Lang

Freier Journalist, Exil-Sauerländer, (ziemlich alter) Skateboarder, Dipl.-Inf.-Wirt, Einzelhandelskaufmann, Open-Source-Nerd, Checkmk-Handbuchschreiber. Ex-Saturn'ler, Ex-Data-Becker'ler, Ex-BSI'ler. Computer-Erstkontakt: ca. 1982 - der C64 des großen Bruders eines Freunds. Wenn Ihr hier mehr über Open Source, Linux und Bastelkram lesen und Tutonaut unterstützen möchtet: Über Kaffeesponsoring via Paypal.freue ich mich immer. Schon mal im Voraus: Danke! Nicht verpassen: cli.help und VoltAmpereWatt.de. Neu: Mastodon

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Schaltfläche "Zurück zum Anfang"