Gehen Sie wie folgt vor und es funktioniert
~$whatis `ls /bin`
stty (1) - change and print terminal line settings
stty (2) - unimplemented system calls
su (1) - change user ID or become superuser
etc...
die Ausgabe in eine Datei umleiten und ich bekomme Folgendes?
~$ whatis `ls /bin` > blah
kmod: nothing appropriate.
ntfsck: nothing appropriate.
Antwort1
>
leitet nur Standardausgabe ( stdout
) um, aber wenn whatis
keine Informationen über eine Datei gefunden werden können, schreibt es diese in einen anderen Stream, stderr
. Sie können das auch umleiten, 2>
da stderr
es sich bei dem Dateihandle um 2 handelt. Sie können sowohl stdout als auch stderr umleiten &>
, oder Sie können stderr auf stdout umleiten, indem Sie Folgendes tun:2>&1
Alles zur Umleitung finden Sie hierHier
Wenn Sie also in Ihrem Beispiel alle Fehler und auch den Erfolg anzeigen möchten, blah
können Sie Folgendes tun:
whatis `ls /bin` &> blah
oder mit der alternativen Subshell-Syntax, die heutzutage bevorzugt wird:
whatis $(ls /bin) &> blah
obwohl /bin
es wahrscheinlich keines gibt, seien Sie bei solchen Dingen vorsichtig. Die Ergebnisse von ls /bin
unterliegen der Worttrennung, d. h. wenn eine der Dateien dort beispielsweise Leerzeichen enthält, werden sie als verschiedene Argumente für behandelt whatis
. Aus diesem Grund wird Ihnen im Allgemeinen davon abgeraten, die Ausgabe von zu analysieren ls
(siehediese Fragefür eine Diskussion darüber)
Sie könnten das, was Sie versuchen, anders machen, wie
find /bin -maxdepth 1 -type f -exec whatis {} + &> blah
das nachschaut /bin
, aber nicht tiefer geht (wie der Glob), dann nur Dateien findet (das type f
Argument) und für alles, was es findet, ausführt whatis
und dann die gleiche Umleitung durchführt, über die wir gesprochen haben.
Antwort2
was ist durchsucht eine Reihe von Datenbankdateien mit Kurzbeschreibungen von Systembefehlen nach Schlüsselwörtern und zeigt das Ergebnis auf der Standardausgabe an. Es werden nur vollständige Wortübereinstimmungen angezeigt.
kmod: nichts passendes. wird eine Meldung angezeigt, dass nichts für kmod gefunden wurde.
wenn Sie die gesamte Ausgabe umleiten möchten, versuchen Sie Folgendes:
whatis $(ls /bin) > /tmp/a.txt