Es klingt, als würde der tee
Befehl tun, was Sie wollen.
Der Schlüssel ist zu verwenden
>( )
zur Prozessersetzung . Mit tee
Verwenden Sie das folgende Muster:
tee >(proc1) >(proc2) >(proc3) | proc4
Wenn Sie also die Ausgabe ls
als Eingabe für zwei verschiedene grep
Programme verwenden möchten, speichern Sie die Ausgabe grep
in verschiedenen Dateien und führen Sie alle Ergebnisse durch less
:
ls -A | tee >(grep ^[.] > hidden-files) >(grep -v ^[.] > normal-files) | less
Die Ergebnisse ls -A
werden in beide grep
s "geleitet" . Die Datei enthält hidden-files
den Inhalt der ersten Ausgabe grep
und normal-files
die Ergebnisse der zweiten grep
. Alle Dateien werden im Pager angezeigt EDIT : Was Sie sehen, in less
.less
der gleiche genaue Ausgabe von ls -A
, nicht das Ergebnis der grep
s. Wenn Sie die Ausgabe von ändern möchten, ls -A
um less
(zB Austausch der Auftrag so normale Dateien aufgelistet werden, bevor diejenigen versteckt), dann versuchen Sie dies:
ls -A | tee >(grep ^[.]) >(grep -v ^[.]) >/dev/null | less
Ohne würde >/dev/null
die Ausgabe von grep
s an die Ausgabe von angehängt, ls -A
anstatt sie zu ersetzen.