Seite anzeigenÄltere VersionenLinks hierherNach oben Diese Seite ist nicht editierbar. Sie können den Quelltext sehen, jedoch nicht verändern. Kontaktieren Sie den Administrator, wenn Sie glauben, dass hier ein Fehler vorliegt. ===== 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-/Ausgabeumleitungen==== Bash verwendet Dateideskriptoren, um die Eingabe und Ausgabe zu steuern:\\ \\ 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> <code bash>cat nicht_existente_datei 2> fehler.log</code> <code>grep "Fehler" < fehler.log</code> \\ ====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, um nur .txt-Dateien anzuzeigen. <code bash>ls -l | grep ".txt"</code> <code bash>cat datei.txt | wc -l</code> <code bash>ps aux | grep firefox</code> \\ ===Ü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>find /usr/bin -type f -executable | awk -F\/ '{print $NF}' | wc -l</code> </hidden> \\ **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 "Berechtigung" enthalten. <hidden Lösung> <code bash> $ echo "LOGFILE" >> errors.log $ cat test.txt/ 2>> errors.log $ ls /root/ 2>> errors.log $ grep "Berechtigung\|gefunden" errors.log ls: Öffnen von Verzeichnis '/root/' nicht möglich: Keine Berechtigung ls: Öffnen von Verzeichnis '/root/' nicht möglich: Keine Berechtigung cat: test.txt/: Datei oder Verzeichnis nicht gefunden </code> </hidden> \\ **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 "^user" | tee /tmp/ps.list | wc -l </code> </hidden>