Um Befehle auf der Kommandozeile eingeben zu können,
starten wir in der graphischen Oberfläche eine Terminal-Emulation wie
gnome-terminal(1)
oder das klassische xterm(1)
.
Das Terminal reicht Eingaben von der Tastatur als Eingabestrom
an den aktuell im Vordergrund laufenden Prozess durch und stellt
den Ausgabstrom aller in dieser Sitzung laufenden Prozesse
auf dem Bildschirm dar.
Wenn die Bash als interaktive Shell in einer Terminal-Emulation
startet, dann liest sie nur die globale Konfiguration
/etc/bash.bashrc
und die benutzereigene
~/.bashrc
. Dort tragen wir eigene Shell-Optionen,
Umgebungsvariablen, Aliase und Funktionen ein.
~/.bashrc# environment PS1="$? \u@\[\033[32m\]\h\[\033[0m\]:\w$(git-branch)\$ " PROMPT_COMMAND='echo -ne "\e]2;$LOGNAME@$HOSTNAME:$PWD\a"' export LS_COLORS="*.c=32:*.h=33:*.js=35:*.html=36" # aliases alias ..="cd .." alias ls="ls --color=auto" alias ll="ls -l" alias less="less -RS" # functions git-branch() { git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/' }
Eingaben von der Tastatur verarbeitet die Bibliothek readline(3)
.
Sie bietet Komfortfunktionen wie das Editieren der Kommandozeile,
Tab-Vervollständigung von Pfaden und Befehlen, inkrementelle Suche in
der Chronik und vieles mehr. Folgende Einstellungen legen nützliche
Funktionen auf die Navigationstasten:
~/.inputrc# 8-bit clean set input-meta on set output-meta on set convert-meta off set bell-style none set bind-tty-special-chars off # navigation "\e[2~": yank-last-arg # Einfg fügt das letzte Argument ein "\e[3~": delete-char # Entf löscht das Zeichen unter der Eingabemarke "\e[1~": beginning-of-line # Pos1 springt zum Anfang der Zeile "\e[4~": end-of-line # Ende springt zum Ende der Zeile "\e[5~": history-search-backward # Bild↑ sucht inkrementell in der Chronik "\e[6~": history-search-forward # Bild↓ dito, aber andersherum # words "\e[1;5C": forward-word # Ctrl-Links springt wortweise nach links "\e[1;5D": backward-word # Ctrl-Rechts springt wortweise nach rechts "\e[3;5~": kill-line # Ctrl-Entf löscht bis zum Zeilenende "\C-w": kill-word # Ctrl-W löscht Wort unter der Eingabemarke
bind -p
zeigt die aktuellen Tasten an.
Nach Änderungen liest bind -f ~/.inputrc
die Datei neu ein.
Um die Steuercodes von bestimmten Tasten herauszufinden, drückt man
Ctrl V gefolgt von der zu untersuchenden
Taste.
Das Kommando ls(1)
interpretiert die Variable
LS_COLORS
,
um Dateiauflistungen übersichtlich einzufärben.
Die Konfigurationsdatei ordnet bestimmten Arten und Endungen von
Dateien spezifische Farben zu.
~/.colorsrcNORMAL 0 # global default 0 gray FILE 0 # normal file 0 gray DIR 0;37;44 # directory 32 gray on blue LINK 0;30;47 # symbolic link black on gray ORPHAN 0;30;41 # orphaned link black on red FIFO 0;30;42 # named pipe 31 black on green SOCK 0;30;44 # socket 33 black on blue BLK 0;30;45 # block device 44;37 black on magenta CHR 0;30;46 # character device 44;37 black on cyan EXEC 1 # executeable 35 bold .html 0;33 …
Das Kommando eval $(dircolors -b "~/.colorsrc")
füllt
diese Variable. Analog färbt GREP_COLORS
Treffer des Kommando grep(1)
ein.
Typ | Beschreibung |
mt | Passender Text |
ms | Passender Text in selektierter Zeile (ohne -v ) |
mc | Passender Text in Kontextzeile (mit -v ) |
sl | Selektierte Zeile |
cx | Kontextzeilen |
fn | Dateiname |
ln | Zeilennummer |
bn | Oktettversatz |
se | Trennzeichen |
Typ | Mnemonic | Vorgabe | Beschreibung |
no | NORMAL | 0 | Default |
fi | FILE | Datei | |
ex | EXEC | 35 magenta | " mit Ausführ-Bit (+x ) |
su | SUID | " mit Benutzer-Bit (u+s ) | |
sg | SGID | " mit Gruppen-Bit (g+s ) | |
ln | LINK | 36 cyan | Symlink |
or | ORPHAN | " ins Leere | |
mi | MISSING | " auf fehlende Datei | |
pi | FIFO | 31 red | Pipe |
so | SOCK | 33 yellow | Sockel |
bd | BLK | 37;44 white on blue | Blockgerät |
cd | CHR | 37;44 white on blue | Zeichenstromgerät |
di | DIR | 32 green | Verzeichnis |
st | STICKY | " mit Sticky Bit (+t ) | |
ow | O… | " für alle schreibbar (o+w ) | |
tw | S… | " " mit Sticky Bit |
Einige Umgebungsvariablen setzt bereits das Anmeldeprogramm login(1)
,
andere werden durch Konfigurationsdateien festgelegt und manche dynamisch angepasst,
zum Beispiel wenn sich die Größe des Terminal-Fensters ändert.
Viele Programme wie zum Beispiel man(1)
oder
crontab(1)
honorieren bestimmte Variablen, um ihr
Verhalten anzupassen.
Variable | Beispiel | Quelle | Beschreibung |
---|---|---|---|
LOGNAME | phrank | /etc/passwd | Benutzername (System V) |
USER | phrank | " | Benutzername (BSD) |
HOME | /home/phrank | " | Benutzerverzeichnis |
SHELL | /bin/bash | " | Kommandointerpreter |
LANG | de_DE.UTF-8 | pam_env.so | Internationalisierung |
PATH | /usr/local/bin:… | /etc/profile | Programmsuchpfad |
PS1 | \u@\h:\w\$ | /etc/bash.bashrc | Eingabeaufforderung |
PAGER | less | ~/.bashrc | Anzeigeprogramm |
EDITOR | joe | " | Texteditor |
MAILER | thunderbird | " | Mailprogramm |
BROWSER | firefox | " | Webbrowser |
TERM | xterm | xterm | Typ des Terminals |
LINES | 25 | " | Zeilenhöhe |
COLUMNS | 80 | " | Spaltenbreite |
PWD | $(pwd) | bash | Arbeitsverzeichnis |
Die meisten Terminal-Emulationen unterstützen 256 Farben: 16 ANSI-Farben, 216 SGR-Farben und 16 Graustufen. Und sie erlauben eine individuelle Bestückung der ANSI Palette.
0=black | 1=red | 2=green | 3=yellow | 4=blue | 5=magenta | 6=cyan | 7=white |
Xterm | |||||||
---|---|---|---|---|---|---|---|
#000000 black |
#cd0000 maroon |
#00cd00 green |
#cdcd00 olive |
#0000cd navy |
#cd00cd purple |
#00cdcd teal |
#e5e5e5 silver |
#7f7f7f gray |
#ff0000 red |
#00ff00 lime |
#ffff00 yellow |
#5c5cff blue |
#ff00ff fuchsia |
#00ffff aqua |
#ffffff white |
Terminal.App | |||||||
#000000 black |
#c23621 maroon |
#25bc26 green |
#adad27 olive |
#492ee1 navy |
#d338d3 purple |
#33bbc8 teal |
#cbcccd silver |
#818383 gray |
#fc391f red |
#31e722 lime |
#eaec23 yellow |
#5833ff blue |
#f935f8 fuchsia |
#14f0f0 aqua |
#e9ebeb white |
Tango | |||||||
#000000 aluminium |
#cc0000 scarlet |
#4e9a06 chameleon |
#c4a000 butter |
#3465a4 sky blue |
#75507b plum |
#06989a ... |
#d3d7cf aluminium |
#555753 aluminium |
#ef2929 scarlet |
#8ae234 chameleon |
#fce94f butter |
#739fcf sky blue |
#ad7fa8 plum |
#34e2e2 ... |
#eeeeec aluminium |
Solarized Dark | |||||||
#073642 base02 |
#dc322f red |
#859900 green |
#b58900 yellow |
#268bd2 blue |
#d33682 magenta |
#2aa198 cyan |
#eee8d5 white |
#002b36 base03 |
#cb4b16 orange |
#586e75 base01 |
#657b83 base00 |
#839496 base0 |
#6c71c4 violet |
#93a1a1 base1 |
#fdf6e3 base3 |
C64 | |||||||
#000000 schwarz |
#880000 red |
#00cc55 green |
#dd8855 orange |
#0000aa blue |
#664400 brown |
#777777 gray 2 |
#bbbbbb gray 3 |
#333333 gray 1 |
#ff7777 red |
#aaff66 green |
#eeee77 yellow |
#0088ff blue |
#cc44cc violet |
#aaffee cyan |
#ffffff weiß |
London Tube | |||||||
#000000 north |
#e32017 central |
#00782a district |
#ee7c0e overground |
#003688 piccadilly |
#9b0056 metropol. |
#00a4a7 dlr |
#e5e5e5 |
#a0a5a9 jubilee |
#f3a9bb hammers. |
#84b817 tramlink |
#ffd300 circle |
#0098d4 victoria |
#b36305 bakerloo |
#95cdba waterloo |
#ffffff |
Lego Bricks | |||||||
#1b2a34 26-black |
#c4281b 21-red |
#287f46 28-green |
#e8ab2d 191-flame |
#0d69ab 23-blue |
#cd6298 221-purple |
#008f9b 107-cyan |
#9ca3a8 131-silver |
#a1a5a2 02-grey |
#da8540 126-orange |
#a4bd46 119-green |
#fdea8c 226-yellow |
#9fc3e9 212-blue |
#e4adc8 222-purple |
#b7d7d5 118-cyan |
#f2f3f2 01-white |
Eigene Presets sind ebenfalls möglich:
c64="'rgb(0,136,255)', 'rgb(255,255,255)', '\ rgb(0,0,0)', 'rgb(136,0,0)', 'rgb(0,204,85)', 'rgb(221,136,85)', '\ rgb(0,0,170)', 'rgb(102,68,0)', 'rgb(119,119,119)', 'rgb(187,187,187)', '\ rgb(51,51,51)', 'rgb(255,119,119)', 'rgb(170,255,102)', 'rgb(238,238,119)', '\ rgb(0,136,255)', 'rgb(204,68,204)', 'rgb(170,255,238)', 'rgb(255,255,255)'" profile=$(dconf list /org/gnome/terminal/legacy/profiles:/) dconf write /org/gnome/terminal/legacy/${profile}palette "[$c64]"