Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
admin_grundlagen:shell_filter [2014/09/23 10:04] ingo_wichmann |
admin_grundlagen:shell_filter [2020/12/07 18:13] (aktuell) holger_jakobs [sort] |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Filterbefehle ====== | ====== Filterbefehle ====== | ||
+ | |||
+ | {{ :admin_grundlagen:prozess.svg?300}} | ||
+ | |||
+ | Unter einem Filter versteht man Programm, die von ''stdin'' (Standardeingabe) lesen und auf ''stdout'' (Standardausgabe) schreiben können. Die meisten dieser Programme tun genau dies, wenn sie keinen Dateinamenparameter erhalten haben. Falls jedoch ein oder mehrere Dateinamenparameter übergeben worden sind, werden lediglich die dort genannten Dateien nacheinander verarbeitet, nicht aber ''stdin''. | ||
+ | |||
+ | Um neben Dateien auch ''stdin'' zu verarbeiten, erlauben viele Programme die Angabe von ''-'' (einzelnes Minuszeichen bzw. Bindestrich) für ''stdin''. Eine echte Datei mit diesem Namen kann von diesen Programmen nicht verarbeitet werden. | ||
+ | |||
+ | |||
==== cat ==== | ==== cat ==== | ||
- | Null-Filter. Datei ausgeben. Eigentlich concatenate: Mehrere Quellen verketten | + | Null-Filter. Datei ausgeben. Eigentlich con**cat**enate: Mehrere Quellen verketten und ausgeben. Es ist genau das Gegenteil von ''split'' |
cat file1 file2 | cat file1 file2 | ||
==== tac ==== | ==== tac ==== | ||
- | Datei umgedreht ausgeben | + | Zeilen einer Textdatei in umgekehrter Reihenfolge ausgeben |
tac file | tac file | ||
Zeile 12: | Zeile 20: | ||
Die ersten drei Zeilen von Datei ''file'' ausgeben: | Die ersten drei Zeilen von Datei ''file'' ausgeben: | ||
head -3 file | head -3 file | ||
+ | head -n +3 file | ||
+ | Alle Zeilen bis auf die letzten drei: | ||
+ | head -n -3 file | ||
==== tail ==== | ==== tail ==== | ||
Zeile 18: | Zeile 29: | ||
Die letzten 3 Zeilen von Datei ''file'' ausgeben: | Die letzten 3 Zeilen von Datei ''file'' ausgeben: | ||
tail -3 file | tail -3 file | ||
+ | Die Zeilen ab der 3. Zeile von Datei ''file'' ausgeben: | ||
+ | tail +3 file | ||
Die letzten 10 Kernelmeldungen anzeigen: | Die letzten 10 Kernelmeldungen anzeigen: | ||
dmesg | tail | dmesg | tail | ||
Logdatei ''/var/log/messages'' fortlaufend anzeigen: | Logdatei ''/var/log/messages'' fortlaufend anzeigen: | ||
+ | ((''-F'' ist die Kurzform von ''%%--%%follow=name''. Das ist besser als ''-f'', da ''-F'' nicht dem Inode, sondern dem Namen folgt. Log-Dateien werden gelegentlich rotiert, und die alte Datei ändert sich dann nicht mehr, weil jetzt in eine neue Log-Datei mit dem bisherigen Namen geschrieben wird.)) | ||
tail -F /var/log/messages | tail -F /var/log/messages | ||
- | ((''-F'' ist die Kurzform von ''--follow=name''. Das ist besser als ''-f'', da ''-F'' dem Inode sondern dem Namen folgt)) | ||
- | |||
==== sort ==== | ==== sort ==== | ||
- | Datei ''file'' alphabetisch sortieren | + | Datei ''file'' alphabetisch sortieren: |
sort file | sort file | ||
- | Verzeichnisse nach Größe (numerisch) sortiert anzeigen: | + | Beim Sortieren identische Zeilen (Dubletten) entfernen: |
+ | sort -u file | ||
+ | Verzeichnisse nach Größe (nummerisch) sortiert anzeigen: | ||
du -msx /usr/* | sort -n | du -msx /usr/* | sort -n | ||
+ | {{ :admin_grundlagen:prozesspipe.svg |}} | ||
+ | |||
+ | Einträge der Benutzerliste nach dem dritten durch Doppelpunkt getrennten Feld ''uid'' (nummerisch) sortiert anzeigen: | ||
+ | sort -k3n -t: /etc/passwd | ||
+ | | ||
==== uniq ==== | ==== uniq ==== | ||
Zeile 37: | Zeile 56: | ||
==== nl ==== | ==== nl ==== | ||
- | Datei numeriert ausgeben | + | Datei numeriert ausgeben (Formatierung variiert zwischen diesen Kommandos): |
nl file | nl file | ||
+ | cat -n file | ||
+ | grep -n "" file | ||
==== grep ==== | ==== grep ==== | ||
- | Zeilen mit dem Muster "pat" in Datei(en) ausgeben | | + | Zeilen mit dem Muster "pat" in Datei(en) ausgeben |
grep "pat" file | grep "pat" file | ||
Negation | Negation | ||
Zeile 48: | Zeile 69: | ||
grep -riH "pat" dir | grep -riH "pat" dir | ||
+ | ==== tr ==== | ||
+ | Zeichen ersetzen (Arbeitet **nur** als Filter nicht mit Dateien) | ||
+ | cat vornamen | tr "aeiou" "eioua" | ||
+ | |||
+ | cat vornamen | tr "a-zA-Z" "A-Za-z" |