Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
| Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
|
admin_grundlagen:pipes_und_umleitungen [2021/11/02 22:27] 127.0.0.1 Externe Bearbeitung |
admin_grundlagen:pipes_und_umleitungen [2022/11/21 14:32] (aktuell) ingo_wichmann [Kanäle] |
||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== Kanäle ====== | ||
| + | Datei ''ausgabe.txt'' mit Standard-Ausgabe des Befehls ''ls -la'' überschreiben: | ||
| + | ls -la > ausgabe.txt | ||
| + | cat ausgabe.txt | ||
| + | -> Länge der Datei ''ausgabe.txt'' beachten! | ||
| + | |||
| + | Standard-Ausgabe des Befehls ''date'' an Datei ''ausgabe.txt'' anhängen: | ||
| + | date >> ausgabe.txt | ||
| + | cat ausgabe.txt | ||
| + | |||
| + | Standard-Eingabe: | ||
| + | wc -l ausgabe.txt | ||
| + | wc -l < ausgabe.txt | ||
| + | wc -l /etc/shadow | ||
| + | wc -l < /etc/shadow | ||
| + | |||
| + | Datei ''fehler.txt'' mit Fehlerausgabe des Befehls ''ls gibtsnicht'' überschreiben: | ||
| + | ls gibtsnicht 2> fehler.txt | ||
| + | |||
| + | Fehlerausgabe des Befehls ''ls gibtsnicht'' an Datei ''fehler.txt'' anhängen: | ||
| + | ls gibtsnicht 2>> fehler.txt | ||
| + | |||
| + | ls . gibtsnicht 2> fehler.txt | ||
| + | ls . gibtsnicht > ausgabe.txt | ||
| + | ls . gibtsnicht >& beides.txt | ||
| + | ls . gibtsnicht > beides.txt 2>&1 | ||
| + | | ||
| + | |||
| + | |||
| + | ====== Pipes ====== | ||
| + | Beispiele: | ||
| + | |||
| + | dpkg -l | wc -l | ||
| + | dpkg -l | tee pakete.txt | less | ||
| + | |||
| + | Doku: | ||
| + | * [[wpde>Pipe (Informatik)]] | ||
| + | * [[https://www.moritz.systems/blog/mastering-unix-pipes-part-1/|detaillierte, technische Beschreibung, wie Pipes implementiert sind]] | ||
| + | ====== Filterbefehle ====== | ||
| + | ===== cat, tac & split ===== | ||
| + | |||
| + | Tabelle 8.2 im Skript | ||
| + | |||
| + | tar cz --directory /usr/share doc/ | split -b 10M - doc.tar. | ||
| + | cat doc.tar.a* | tar tz | tail | ||
| + | |||
| + | Benutzerliste rückwärts und mit Zeilennummern ;-) | ||
| + | tac /etc/passwd | ||
| + | cat -n /etc/passwd | ||
| + | ===== head & tail ===== | ||
| + | head -n 20 /etc/services | ||
| + | tail -n 20 /etc/services | ||
| + | Kapitel 8.3.2 im Skript lesen | ||
| + | |||
| + | Übungen 8.8 - 8.11 im Skript | ||
| + | |||
| + | ===== od ===== | ||
| + | echo 'Müller' | od -a | ||
| + | |||
| + | ===== cut ===== | ||
| + | cut -d: -f 7 /etc/passwd | ||
| + | |||
| + | ===== sort ===== | ||
| + | Tabelle 8.10 im Skript | ||
| + | |||
| + | Übungen 8.22, 8.23, 8.26 im Skript | ||
| + | |||
| + | ===== uniq ===== | ||
| + | |||
| + | find /usr/share/doc -printf '%y\n' | sort | uniq -c | ||
| + | | ||
| + | ===== grep ===== | ||
| + | cat /etc/passwd | grep bash | ||
| + | (( | ||
| + | Moderne Alternativen: | ||
| + | * [[https://packages.debian.org/source/sid/rust-ripgrep|ripgrep]] | ||
| + | * [[https://packages.debian.org/source/bullseye/ugrep|ugrep]] | ||
| + | )) | ||
| + | |||
| + | {{:linux_grundlagen:pasted:20220310-151508.png}} | ||
| + | ===== column ===== | ||
| + | column -t /etc/fstab | ||
| + | ip -o link | column -t | ||
| + | ip -o address | column -t | ||
| + | column -s: -t /etc/passwd | ||
| + | |||
| + | ===== Pipeline ===== | ||
| + | Statistik aller eingegebenen Befehle | ||
| + | history | tr -s "[[:space:]]" | cut -d" " -f 3- | sort | uniq -c| sort -nr | ||
| + | |||
| + | ====== Übung ====== | ||
| + | |||
| + | Wer errät, wofür dieser Befehl gut ist? (( https://massimo-nazaria.github.io/blog/2019/03/02/unix-philosophy-with-an-example.html )) | ||
| + | seq 1 6 | shuf | head -n 1 | ||
| + | |||
| + | |||
| + | |||
| ===== Vorbereitung des Beispiels ===== | ===== Vorbereitung des Beispiels ===== | ||
| Testdaten ins Heimatverzeichnis kopieren: | Testdaten ins Heimatverzeichnis kopieren: | ||