Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| home-harmening:scripts:shell:ausgabe_eingabe:umleitungen [2025/01/30 13:55] – angelegt charmening | home-harmening:scripts:shell:ausgabe_eingabe:umleitungen [2025/02/04 13:00] (aktuell) – charmening | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| ===== Umleitungen | Output mit > >> und | verändern ===== | ===== Umleitungen | Output mit > >> und | verändern ===== | ||
| + | In der Bash können Befehle miteinander verknüpft und ihre Ein- und Ausgaben umgeleitet werden. Dies erleichtert die Verarbeitung von Daten und die Automatisierung von Aufgaben. | ||
| + | ====Ein-/ | ||
| + | Bash verwendet Dateideskriptoren, | ||
| + | \\ | ||
| + | Standardausgabe (stdout): Dateideskriptor 1\\ | ||
| + | Standardfehler (stderr): Dateideskriptor 2\\ | ||
| + | Standardeingabe (stdin): Dateideskriptor 0\\ | ||
| + | \\ | ||
| + | ===Beispiele Umleitungen=== | ||
| + | |**Befehl**|**Beschreibung**| | ||
| + | |command > file.txt|Leitet die Standardausgabe in eine Datei um (überschreibt die Datei)| | ||
| + | |command >> file.txt|Hängt die Standardausgabe an eine Datei an| | ||
| + | |command 2> error.log|Leitet die Fehlerausgabe in eine Datei um| | ||
| + | |command &> output.log|Leitet Standard- und Fehlerausgabe in eine Datei um| | ||
| + | |command < input.txt|Liest die Eingabe aus einer Datei| | ||
| + | \\ | ||
| + | **Beispiel: | ||
| + | <code bash>ls -l > dateiliste.txt</ | ||
| + | <code bash>cat nicht_existente_datei 2> fehler.log</ | ||
| + | < | ||
| + | \\ | ||
| + | ====Pipes (|)==== | ||
| + | Mit Pipes (|) kann die Ausgabe eines Befehls direkt als Eingabe für einen anderen Befehl verwendet werden.\\ | ||
| + | \\ | ||
| + | ===Beispiel=== | ||
| + | Hier wird die Ausgabe von ls -l an grep weitergegeben, | ||
| + | <code bash>ls -l | grep " | ||
| + | <code bash>cat datei.txt | wc -l</ | ||
| + | <code bash>ps aux | grep firefox</ | ||
| + | \\ | ||
| + | ===Übungen=== | ||
| + | **Dateilisten filtern: | ||
| + | Erstelle eine Liste aller Ausführbaren-Dateien in /usr/bin und speichere sie in einer Datei scripts.txt. | ||
| + | Zähle die Anzahl der Dateien mit einem einzigen Befehl. | ||
| + | <hidden Lösung> | ||
| + | <code bash> | ||
| + | </ | ||
| + | \\ | ||
| + | **Fehlermeldungen sammeln: | ||
| + | Führe einen Befehl aus, der eine Fehlermeldung erzeugt, und leite diese in eine Datei errors.log um. | ||
| + | Zeige anschließend nur die Zeilen aus errors.log an, die das Wort „Permission“ oder " | ||
| + | <hidden Lösung> | ||
| + | <code bash> | ||
| + | $ echo " | ||
| + | $ cat test.txt/ 2>> errors.log | ||
| + | $ ls /root/ 2>> errors.log | ||
| + | $ grep " | ||
| + | ls: Öffnen von Verzeichnis '/ | ||
| + | ls: Öffnen von Verzeichnis '/ | ||
| + | cat: test.txt/: Datei oder Verzeichnis nicht gefunden | ||
| + | </ | ||
| + | </ | ||
| + | \\ | ||
| + | **Prozesse analysieren: | ||
| + | Finde mit ps aux alle Prozesse, die zu einem bestimmten Benutzer gehören, und leite die Ausgabe in eine Datei. | ||
| + | Zähle die Anzahl der gefundenen Prozesse mit einem weiteren Befehl. | ||
| + | <hidden Lösung> | ||
| + | <code bash> | ||
| + | ps aux | grep " | ||
| + | </ | ||
| + | </ | ||