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 -al
man ls
rm -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
$PATH
sequentiell durchgesucht- Programm
prog
in/usr/sbin/
und/sbin/
/usr/sbin/prog
wird ausgeführt!
- Programm
-
Neue Pfade werden in der
.bashrc
hinterlegt, eigene Shellskripte kommen nach/usr/local/bin
bzw./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
last update: 2024-01-28 17:42:17 +0100