Unix-Philosophie und -Werkzeugkasten
Unix-Philosophie nach Doug McIlroy (in Peter H. Salus, 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.
Fülle von Standard-Werkzeugen für verschiedenste Aufgaben (evtl. klein und sehr speziell)
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 ggf. sehr komplexen Abläufen gut unterstützt
klassische Unix-Benutzerschnittstelle, die auch ohne grafische Oberfläche (GUI) sinnvoll nutzbar ist; GUI-Umgebung erhöht den Bedienkomfort: bequemes Copy & Paste per Maus (inkl. Clipboard-Manager wie klipper), Anpassung der Größe und Lage des Terminal-Fensters
interaktiv und nicht-interaktiv (ggf. zeitgesteuert) verwendbar: Dialog-Betrieb und Shell-Skripte, wobei Skripte auch in interaktiven Sitzungen aufgerufen werden können, evtl. aus einem grafischen Programm heraus
Shell-Schnittstelle ist äußerst mächtig und für erfahrene Anwender sehr effizient: leistungsfähiger Kommandozeileneditor, stark reduzierter Tipp- und Bedienaufwand durch automatische Vervollständigungen, Pfadnamens-Muster, Aliase, Bezugnahmen auf die Historie, Copy & Paste (optional auch auf den Text-Terminals der virtuellen Linux-Konsolen möglich)
prinzipiell höhere Flexibilität als bei GUIs, da die einzelnen Anwendungen (Werkzeuge) weitgehend frei durch den Benutzer kombinierbar sind
üblicherweise deutlich standardisiertere und stabilere Schnittstelle als bei GUIs; Kompatibilität wichtig, da sonst viele existierende Skripte scheitern würden
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 meist einfacher zu realisieren ist als eine GUI
auch auf einer Textkonsole sowie auf entfernten Rechnern per SSH (und Telnet) nutzbar
Fazit:
Die Shell-Schnittstelle ist auf Grund ihrer Eigenschaften auch im Zeitalter moderner GUIs interessant.
Viele nützliche Funktionalitäten des Werkzeugkastens sind nur über die Shell und nicht via GUI verfügbar.