Unix-Philosophie
Fülle von Standard-Werkzeugen für verschiedenste Aufgaben
bei Linux: GNU-Tools (großer Funktionsumfang, hohe Stabilität)
flexibel durch Shell kombinierbar: Pipes, Ein-/Ausgabe-Umlenkung, ...
Bearbeitung reiner Text-Dateien sehr gut unterstützt (u.a. durch reguläre Ausdrücke)
wichtiges Prinzip: Problemlösung möglichst durch Kombination von Standard-Werkzeugen statt spezifischer Neuprogrammierung
Shell:
textorientierter Kommandointerpreter mit relativ umfangreichen (prozeduralen) Programmier-Möglichkeiten, der die Automatisierung von Abläufen gut unterstützt
klassische Unix-Benutzerschnittstelle
interaktiv und nicht-interaktiv verwendbar (Dialog-Betrieb und Shell-Skripte)
Shell-Schnittstelle ist sehr mächtig und für erfahrene Anwender sehr effizient (stark reduzierter Tipp- und Bedienaufwand; Copy&Paste per Maus gut nutzbar)
prinzipiell höhere Flexibilität als bei GUI, da die einzelnen Anwendungen (Werkzeuge) weitgehend frei durch den Benutzer kombinierbar sind
in Skripten verankerte Lösungswege (Algorithmen) sind automatisch dokumentiert und damit nachvollziehbar sowie nachnutzbar (bei GUIs sieht man in der Regel nicht mehr, auf welchem Weg ein Resultat erreicht wurde)
schnellere und leichtere Implementierung kleiner Werkzeuge, da eine Kommando-Schnittstelle einfacher zu realisieren ist als eine GUI
auch auf einer Textkonsole sowie auf entfernten Rechnern per SSH und Telnet nutzbar
Fazit: Shells sind auf Grund ihrer Eigenschaften auch im Zeitalter moderner grafischer Oberflächen (GUI) interessant
Unix-Philosophie (nach Peter H. Salus in A Quarter Century of Unix):
Write programs that do one thing and do it well.
Write programs to work together.
Write programs that handle text streams, because that is a universal interface.