Was ist eine Pipe?#
Mit dem senkrechten Strich | gibst du die Ausgabe eines Befehls direkt an den nächsten weiter. Das funktioniert wie ein Fließband: Jeder Befehl erledigt einen Arbeitsschritt.
ps aux | grep nginxps aux listet alle Prozesse auf, und grep filtert daraus nur die Zeilen mit „nginx“. Du kannst beliebig viele Befehle hintereinanderhängen:
ps aux | grep nginx | wc -lHier zählt wc -l am Ende noch, wie viele Zeilen übrig geblieben sind.
Ausgaben umleiten#
| Zeichen | Bedeutung |
|---|---|
> | Schreibt die Ausgabe in eine Datei und überschreibt sie dabei. |
>> | Hängt die Ausgabe ans Ende einer Datei an. |
2> | Leitet nur die Fehlermeldungen um. |
2>&1 | Leitet Fehlermeldungen dorthin, wohin auch die normale Ausgabe geht. |
&> | Normale Ausgabe und Fehler zusammen in eine Datei. |
< | Liest die Eingabe aus einer Datei. |
ls -la > dateiliste.txt
echo "Backup fertig" >> backup.log
find / -name "*.conf" 2> /dev/null
./backup.sh > backup.log 2>&1/dev/null ist eine Art Mülleimer. Alles, was du dorthin schickst, verschwindet.
>: Die Datei wird ohne Nachfrage überschrieben. Wenn du etwas anhängen willst, nimm >>.Die wichtigsten Helfer für Pipes#
| Befehl | Was er macht | Beispiel |
|---|---|---|
grep | Filtert Zeilen nach einem Begriff. Mit -i ohne Groß- und Kleinschreibung, mit -v umgekehrt. | grep -i error |
sort | Sortiert Zeilen. Mit -n nach Zahlen, -r absteigend, -h nach Größen wie 4K oder 2G. | sort -rn |
uniq | Entfernt doppelte Zeilen. Mit -c zählt es sie. | uniq -c |
wc | Zählt Zeilen, Wörter oder Zeichen. | wc -l |
head | Zeigt nur die ersten Zeilen. | head -n 10 |
tail | Zeigt nur die letzten Zeilen. | tail -n 10 |
cut | Schneidet Spalten aus, getrennt durch ein Zeichen. | cut -d: -f1 |
awk | Gibt bestimmte Spalten aus, getrennt durch Leerzeichen. | awk '{print $1}' |
tee | Zeigt die Ausgabe an und schreibt sie gleichzeitig in eine Datei. | tee ausgabe.txt |
xargs | Macht aus der Ausgabe Argumente für einen anderen Befehl. | xargs rm |
less | Zeigt lange Ausgaben seitenweise an. Beenden mit q. | less |
uniq erkennt nur doppelte Zeilen, die direkt untereinander stehen. Deshalb steht davor fast immer ein sort.
Beispiele aus der Praxis#
Die größten Ordner finden#
du -sh /var/* 2> /dev/null | sort -rh | head -n 10Zeigt die zehn größten Ordner in /var. Ideal, wenn die Festplatte plötzlich voll ist.
Die häufigsten Besucher im Webserver-Log#
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -n 10awk holt die IP-Adressen heraus, sort und uniq -c zählen sie, und am Ende stehen die zehn häufigsten oben.
Fehlgeschlagene SSH-Anmeldungen auswerten#
journalctl -u ssh -g "Failed password" --no-pager | awk '{print $(NF-3)}' | sort | uniq -c | sort -rn | headSo siehst du, von welchen IP-Adressen am häufigsten versucht wird, sich bei dir anzumelden.
Ausgabe anzeigen und gleichzeitig speichern#
apt list --upgradable 2> /dev/null | tee updates.txtAlte Logdateien sicher löschen#
find /var/log/meinprogramm -name "*.log" -mtime +30 -print0 | xargs -0 rmLöscht alle Logdateien, die älter als 30 Tage sind. Mit -print0 und -0 funktioniert das auch bei Dateinamen mit Leerzeichen.
Mehr zum Auslesen von Logs findest du in meinem Beitrag zu journalctl und Linux-Logs.

