1. Index
  2. Debian
  3. Desktop
  4. Heimserver
  5. Webserver

Kommandos ausführen

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.

Anmeldeprofil konfigurieren

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)/' }

Sondertasten belegen

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.

Dateilisten einfärben

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.

~/.colorsrc
NORMAL 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
TypMnemonicVorgabe 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

Umgebungsvariablen setzen

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.

Umgebungsvariablen
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

Palette des Terminals ändern

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.

Presets für die Palette des Terminals
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]"

Literatur

  1. Debian Wiki: Shell
  2. GNU: Bash Reference Manual