ls -la /dev/std*
lrwxrwxrwx 1 root root 15 Okt 25 17:41 /dev/stderr -> /proc/self/fd/2
lrwxrwxrwx 1 root root 15 Okt 25 17:41 /dev/stdin -> /proc/self/fd/0
lrwxrwxrwx 1 root root 15 Okt 25 17:41 /dev/stdout -> /proc/self/fd/1
17 November 2022
Alles ist eine Datei! (Oder auch Dateideskriptor, oder Bytestrom)
"[…] Ein-/Ausgabe-Ressourcen wie Dateien, Verzeichnisse, Geräte (z. B. Festplatten, Tastaturen, Drucker) und sogar Interprozess- und Netzwerk-Verbindungen […]"
| Befehl | Beschreibung | 
|---|---|
ls  | 
list directory  | 
echo  | 
display a line of text  | 
cat  | 
concatenate files and print on the standard output  | 
grep  | 
print lines that match patterns  | 
…  | 
siehe /bin/* und /usr/bin/  | 
stdin(0): Standard-Eingabe
stdout(1): Standard-Ausgabe
stderr(2): Standard-Fehler
(selbstdefiniert)
ls -la /dev/std*
lrwxrwxrwx 1 root root 15 Okt 25 17:41 /dev/stderr -> /proc/self/fd/2
lrwxrwxrwx 1 root root 15 Okt 25 17:41 /dev/stdin -> /proc/self/fd/0
lrwxrwxrwx 1 root root 15 Okt 25 17:41 /dev/stdout -> /proc/self/fd/1
Beispiel: Vergleich stdout mit stderr
ls datei.txt
ls datei2.txt
| Operator | Beschreibung | 
|---|---|
>  | 
Umleitung der Standardausgabe in eine Datei  | 
>>  | 
Umleitung in eine Datei, hängt Ausgabe an eine bereits bestehende Datei  | 
|  | 
Pipe. Ausgabe eines Kommandos als Eingabe zu einem Anderen  | 
< und <<  | 
Statt von der Standardeingabe (Tastatur) wird aus einer Datei gelesen  | 
&  | 
Umleitung in anderen File Discriptor  | 
# Beispiel 1 "Hello World"
echo "hallo"
echo "hallo" > datei.txt
# Beispiel 2
echo "hallo in der zweiten Zeile" >> datei.txt
# Beispiel 3: zeilenweise(!) filtern
cat [dateiname] |grep [suchmuster]
cat datei.txt |grep "hallo"
# Aufgabe: was passiert (datei4711.txt exisitert nicht)?
cat datei4711.txt |grep 123
# ls schreibt nach stdout UND stderr -> grep liest nur stdin -> Fehlermedlung von ls landet auf Konsole
# Beispiel 4: verketten
echo "Inhalt der zweiten Datei" > datei2.txt
cat datei1.txt datei2.txt
cat datei1.txt datei2.txt > zusammen.txt
# mehre Zeilen auf einmal ein File
cat <<EOF > print.sh
#!/bin/bash
echo \$PWD
echo $PWD
EOF
ls datei.txt datei4711.txt
ls datei.txt datei4711.txt 2> /dev/null
# stdout UND stderr -> Datei umleiten
ls datei.txt datei4711.txt &> Datei.txt
# stdout in Datei umleiten UND stderr in separate Datei umleiten
ls > stdout.txt 2> stderr.txt
# stdout -> stderr
programm 1>&2
# stderr -> stdout
programm 2>&1