Shells führen keine Reorganisation des Codes durch, den sie erhalten, sondern werden nur eine Zeile nach der anderen interpretiert (nichts anderes macht in einem Befehlsinterpreter viel Sinn). Ein Großteil der von der Shell aufgewendeten Zeit wird für die lexikalische Analyse / Analyse / das Starten der aufgerufenen Programme aufgewendet.
Für einfache Operationen (wie die, die in den Beispielen am Ende der Frage Zeichenfolgen mischen) wäre ich überrascht, wenn die Zeit zum Laden der Programme keine winzigen Geschwindigkeitsunterschiede überschwemmt.
Die Moral der Geschichte lautet: Wenn Sie wirklich mehr Geschwindigkeit benötigen, sind Sie mit einer (halb) kompilierten Sprache wie Perl oder Python besser dran, die zunächst schneller ausgeführt werden kann und in der Sie viele der direkt genannten Operationen schreiben können Sie müssen keine externen Programme aufrufen und haben die Möglichkeit, externe Programme aufzurufen oder optimierte C-Module (oder was auch immer) aufzurufen, um einen Großteil der Arbeit zu erledigen. Dies ist der Grund, warum in Fedora die "System Administration Sugar" (im Wesentlichen GUIs) in Python geschrieben sind: Kann eine schöne GUI mit nicht allzu viel Aufwand hinzufügen, schnell genug für solche Anwendungen, direkten Zugriff auf Systemaufrufe haben. Wenn das nicht genug Geschwindigkeit ist, greifen Sie zu C ++ oder C.
Aber nicht dorthin gehen, es sei denn , man kann beweisen , dass der Performance - Gewinn wert ist der Verlust an Flexibilität und die Entwicklungszeit. Shell-Skripte sind nicht schlecht zu lesen, aber ich schaudere, wenn ich mich an einige Skripte erinnere, die zur Installation von Ultrix verwendet wurden, die ich einmal zu entschlüsseln versucht habe. Ich gab auf, zu viel "Shell-Skript-Optimierung" wurde angewendet.