Katze besser meiden; Schreiben Sie es so, wenn die Zeilenbearbeitung wichtig ist:
$ < filename grep pattern
Der Grund dafür ist, dass das Pushen aller Daten durch cat Speicher- und CPU-Ressourcen kostet. Ein weiterer Vorteil, den Dateinamen als Argument zu übergeben, anstatt stdin umzuleiten, besteht darin, dass es dem Befehl die Option gibt, die Datei zu mmap().
Ich kann nicht glauben, dass noch niemand auf "Useless Use of Cat" http://www.smallo.ruhr.de/award.html verwiesen hat
Es gibt einen fragwürdigen Vorteil. Wenn Sie eine lange Pipeline haben, sieht es mit cat etwas orthogonaler aus:
cat file | command1 | command 2 | command3
Es fasst alle Befehle zusammen.
Natürlich, wie andere gesagt haben (und ich tue es)
< file command1 | command2 | command3
Führt so ziemlich das Gleiche durch. Allerdings ist cat ziemlich klein und wird Ihren Computer nicht herunterfahren, wenn Sie ihn verwenden, wenn Sie ihn nicht wirklich brauchen.
Normalerweise mit cat
vs direkt auf eine Datei zu schlagen ändert nichts, aber es macht einen Unterschied für bestimmte Befehle, die sich darum kümmern, ob es mehrere Dateien als Argumente gibt, wie zum Beispiel grep
. Typisches Beispiel:
cat file1 file2 | grep SOMETHING
hat eine andere Ausgabe als
grep SOMETHING file1 file2
Welche die übereinstimmenden Dateinamen in der Ausgabe haben. Manchmal möchte ich die Dateinamen nicht, und es ist ein Vorteil, cat
zu verwenden .
Es gibt keinen Vorteil. Dass der Cursor am Ende steht, spielt auch keine Rolle, wenn Sie ihn stattdessen so strukturieren:< inputfile grep -args foo