Bash Grundlagen
Prompt
Der Prompt ist frei konfigurierbar: $PS1:
Benutzer@Hostname: Verzeichnis Status
Interne/Externe Kommandos
type Kommando
- 
Kommando is /bin/Kommando
Kommando ist extern
 - 
Kommando is a shell builtin
Kommando ist intern
 
Befehle aufrufen
Kommando -short --longOption [optionale Parameter]
ls -alman lsrm -rf /(Please do try this at home!)mkdir -p /tmp/wurst/wasser
$PATH
bestimmt die Suchpfade der Bash
- 
Welche Pfade sind hinterlegt?
echo $PATH:[...]:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:[...] - 
Bei gleichnamigen Programmen wird
$PATHsequentiell durchgesucht- Programm 
progin/usr/sbin/und/sbin//usr/sbin/progwird ausgeführt!
 
 - Programm 
 - 
Neue Pfade werden in der
.bashrchinterlegt, eigene Shellskripte kommen nach/usr/local/binbzw./usr/local/sbin 
Aliasse
- 
ls -l als Standard (es lassen sich bestehende Kommandos überschreiben, vorsicht!):
alias ls='ls -l' - 
ls ohne gesetzten Alias aufrufen:
'ls' \ls /bin/ls 
Ausführen
prog1; prog2
Erst prog1 dann prog2:
prog1 & prog2
prog1 läuft im Hintergrund, parallel dazu prog2:
prog1 && prog2
prog2 wird nur ausgeführt, wenn prog1 erfolgreich war:
prog1 || prog2
prog2 wird nur ausgeführt, wenn prog1 nicht erfolgreich war (nicht
mit der Pipe verwechseln)
Wann war ein Programm erfolgreich? :
echo $?
$? == 0=> Erfolg!$? != 0=> Gefahr!
Hilfe suchen
Meistens funktioniert programm --help
Dann gibt es da noch den info Befehl (kenne aber keinen, der diesen
nutzt).
Wichtiger sind die man-Pages:
man-Pages zum Thema XY findet man mittels apropos XY
Innerhalb der man-Pages:
- Pfeiltasten oder PageUp/Down zum Navigieren
 - Suchen mit 
/ - Weitersuchen mit 
n(oder rückwärts mitN) - Beenden mit 
q 
Achtung - die man-Pages haben mehrere Sektionen: man 1 passwd ist was
anderes als man 5 passwd!
Navigieren im Verzeichnisbaum
pwd (Print Working Directory) - Wo bin ich denn überhaupt?! (pwd -d
hilft bei Symlinks)
cd (Change Directory):
cd /etc - wechseln nach /etc cd - wechselt ins Home-Verzeichnis
(~) cd - - wechselt ins vorherige Verzeichnis (in diesem Fall nach
/etc)
pushd, popd, dirs (Arbeiten mit dem Stack):
pushd /etc - legt /etc auf den Stack, und wechselt nach /etc
popd - entfernt letztes Element vom Stack, und wechselt in den
vorherigen Ordner dirs - zeigt den momentanen Stack
Arbeiten mit Dateien
Kopieren: cp quelle ziel (es geht auch cp quelle1 quelle2 ziel)
Verschieben: mv quelle ziel (es geht auch mv quelle1 quelle2 ziel)
Löschen: rm datei
Verzeichnis löschen: rmdir verzeichnis (geht nur, wenn Verzeichnis
leer ist, ansonsten rm -rf verzeichnis)
Neue, leere Datei anlegen (oder Zeitstempel aktualisieren):
touch datei
Ordner anlegen: mkdir ordner (Verschachtelte Verzeichnisse lassen sich
mit mkdir -p ordner/unterordner anlegen - legt erst ordner an, dann
ordner/unterordner)
Informationen zu Datei anzeigen: file datei
Komprimieren/Zusammenfassen: tar (Tape-Archive)
- Anlegen: 
tar cvf myarchive.tar /ordner(Anlegen und komprimieren:tar czvf myarchive.tar.gz /ordner) - Entpacken 
tar xvf myarchive.tar(oder für komprimierte Archive:tar xzvf myarchive.tar.gz) - Archiv-Inhalt anzeigen lassen: 
tar tvf myarchive.tar(oder für komprimierte Archive:tar tzvf myarchive.tar.gz) 
History
Anzeigen: history
Letzten Befehl wiederholen: !!
Befehl #23 (vom Befehl history) wiederholen: !23
Befehl der mit bla beginnt wiederholen: !bla
History durchsuchen: CTRL+r
History löschen: history -c
Pipes
Die Ausgabe des einen Programms kann die Eingabe des nächsten Programms sein:
prog1 | prog2 | prog3
Standard-Kanäle
stdin (Kanal 0) - Eingabe, meist Tastatur (oder aus Pipe)
stdout (Kanal 1) - Ausgabe, meist das Terminal (oder in Datei, Nadeldrucker mit Endlospapier, whatever)
stderr (Kanal 2) - Fehlerausgabe
Umleiten
prog 1> file: stdout (Ausgabe) von prog wird in file
geschrieben
prog 2> file: stderr (Fehler) von prog wird in file
geschrieben
oder in Kombination: prog 1> outputfile 2> errorfile