Login


 
Newsletter

Thema: Was ist ihr Standardwerkzeug zur Dateibetrachtung auf der Konsole?

6 Kommentar(e) || Alle anzeigen ||  RSS || Kommentieren
Kommentare von Lesern spiegeln nicht unbedingt die Meinung der Redaktion wider.
0
Von Lesbarer Code am Fr, 1. Juni 2012 um 22:03 #

Vielleicht wird es als lesbarer erachtet die Datei zuerst zu schreiben.

  • 1
    Von Tendenz Rot am Fr, 1. Juni 2012 um 22:15 #

    Nur werden durch diese Art "lesbaren" Codes Shell-scripte schnarchlangsam.

    Gerade mal in einem Verzeichnis mit 26 C-Dateien getestet.

    # time for i in *.c; do cat $i|grep -q "for"; done
    real 0m0.111s
    user 0m0.019s
    sys 0m0.095s

    # time for i in *.c; do grep -q "for" $i; done
    real 0m0.068s
    user 0m0.012s
    sys 0m0.040s

    • 0
      Von Andre am Sa, 2. Juni 2012 um 00:10 #

      Skandalös, da muss der User ganze 0,05 Sek länger warten !

      • 0
        Von Tendenz Rot am Sa, 2. Juni 2012 um 00:36 #

        Du musstest noch nie wirklich grottenalte Shell-Scripts debuggen weil sie selbst auf modernster Hardware Ewigkeiten mit sich selbst gespielt haben, stimmts? Wenn du dir die Zeiten mal ansiehst wirst du erkennen, dass die Ausführungsgeschwindigkeit ohne *cat* fast halbiert wurde.

        Das war ein aus der Hand geschütteltes Beispiel mit 26 Dateien. Du wirst es nicht glauben, es gibt Systeme mit wesentlich mehr Dateien und zig Loops welche mit solchen Pipe-Orgien den Sauerstoffgehalt der Erde reduzieren. Das wirst du jetzt nicht verstehen. Ist auch nicht schlimm. Es gibt ja Leute die das wieder in Ordnung bringen.

    0
    Von blubb am Sa, 2. Juni 2012 um 09:58 #

    Kannst du auch machen:
    grep foo bar
    < bar grep foo

    Ich bin kein Shell-Experte, aber es hat halt meines Wissens Nachteile. Zunächst einmal wird durch < nicht cat aufgerufen, sondern es handelt sich typischerweise um eine Shell-Funktion, wobei ich mir vorstellen könnte, dass manche Shells in so einem Fall auch cat aufrufen, wer weiß.
    Dazu kommt, dass du wesentlich effizienter eine Dateiliste aufbauen. Kannst du mittels < prinzipiell auch, aber das wird tendenziell sehr sehr unübersichtlich.

    Dennoch kann es sehr hilfreich sein, da du es mit einer Pipe kombinieren kannst, was bei der "normalen" Dateiübergabe typischerweise nicht möglich ist:
    ... foo |

    Das würde die Ausgabe von ... foo sowie die Datei foo2 nach bar "greppen".
    Ist sicher nicht der Standardfall, aber ich kann mir schon vorstellen, dass es in der einen oder anderen Situation nützlich sein kann. ;)

Pro-Linux
Pro-Linux @Twitter
Neue Nachrichten