Gibt es neben der Bequemlichkeit weitere Vorteile, eine Datei zu erstellen und an grep weiterzuleiten? Der Vorteil ist, dass sich der Cursor beim Abrufen von Befehlen wie den folgenden aus meinem Verlauf am Ende der Zeile befindet, sodass es einfach ist, den Befehl mit einem anderen Text zu ändern, um gegen dieselbe Datei zu springen.
Welche weiteren Vorteile könnte die folgende Konvention haben:
cat /var/tmp/trace.2043925204.xt | grep -in profile
cat /var/tmp/trace.2043925204.xt | grep -n Profile-Main
Anstatt von:
grep -in profile /var/tmp/trace.2043925204.xt
grep -n Profile-Main /var/tmp/trace.2043925204.xt
cat
ist viel klarer zu lesen als<
. Oder vielleicht nur für uns Fogeys, die denken, dass Unix und Bash eine Menge von VMS und DCL lernen könnten.Es gibt keinen Vorteil. Ihr Cursor am Ende ist auch nicht so wichtig, wenn Sie ihn stattdessen wie folgt strukturieren:
< inputfile grep -args foo
quelle
Sie brauchen in dieser Situation einfach keine Katze zu benutzen. Dies ist unnötig und Zeitverschwendung, da Tools wie grep Dateinamen als Argumente verwenden.
Update: Vielen Dank, @Andy Lester, dass Sie darauf hingewiesen haben, dass bei diesen Timings der Festplatten-Cache nicht berücksichtigt wird. Ich habe etwas Neues gelernt! Aber Einsparungen in Sekundenbruchteilen machen sowieso keinen großen Unterschied. Ich denke nur, dass es nicht logisch ist, cat in grep zu bringen. Es ist so, als würde man jemanden bitten, Ihnen bei einem Problem zu helfen, wenn Sie in der Lage sind, es selbst zu lösen.
quelle
Die einfache Bearbeitung ist der einzige wirkliche Vorteil, und wenn Sie dies über die Befehlszeile
cat
tun, macht es keinen großen Unterschied, wie lange es dauert, bis die Pipe ausgeführt und ausgeführt wird.Es gibt jedoch keinen Grund, dies in einem Shell-Skript zu tun.
quelle
Es gibt überhaupt keinen Nutzen. Anstatt sich Gedanken über das Ändern der Befehle zu machen, sollten Sie lernen, wie Sie Ihre Shell-Befehlszeile mit Zugriffstasten und Verknüpfungen besser navigieren können.
quelle
Nein, und in dem von Ihnen gegebenen Beispiel könnte es sogar etwas langsamer sein.
A
pipe
wird zwischen cat und grep erstellt, was nicht erforderlich ist, wenn der Dateiname direkt an grep übergeben wird. Ich denke jedoch, dass Sie aus diesem Grund unter keinen Umständen jemals Durchsatzbeschränkungen feststellen werden.Weitere Vorteile der Weiterleitung von Eingaben an grep sind zusätzliche Verarbeitungsvorgänge, z. B. die Verwendung von Dienstprogrammen mit erweiterten Funktionen zum Lesen von Dateien. (Siehe
tee
,zcat
unter anderem).quelle