Nein, es ist umgekehrt. Es gibt keinen Löffel ^ H ^ H ^ Strukturierte Daten. Es gibt nur Text.
Ein großer Teil der Unix-Philosophie basiert auf der Idee, Text auszugeben und Text als Eingabe zu akzeptieren. Vielleicht möchten Sie " The Art of Unix Programming " lesen , das eine nette Erklärung dazu enthält.
Verstehen Sie mich nicht falsch: Ich verstehe Ihren Standpunkt und weiß, worauf Sie abzielen. Es gibt Dinge wie die interaktiven Interpreter von Ruby und Python, die als Shell verwendet werden können, aber sie sind für grundlegende Aufgaben nicht so freundlich wie Bash. Versuchen Sie beispielsweise, das Verzeichnis zu ändern.
Auch die Verwendung von Objekten in einer Shell ist nicht alles. Wenn dies nur von Ihrer Shell unterstützt wird, sind Sie unter Unix ratlos. Alle Standard-Unix-Textbearbeitungswerkzeuge müssten geändert werden, wie grep, awk, sed usw.
Ich glaube, es gab vor ein paar Jahren einen Versuch, so etwas zu kreieren, aber ich kann mich nicht an den Namen erinnern und habe lange nicht mehr davon gehört. Es wird wahrscheinlich nicht abheben.
ls(1)
. Völlig nutzlos.Es gibt tatsächlich ein Projekt namens Pash , das auf die Implementierung von PowerShell (zusätzlich zu Mono) abzielt, aber es scheint ins Stocken geraten zu sein.
quelle
Es gibt ein Projekt, dessen Ziel Ähnlichkeit mit PowerShell hat: Hotwire . Es kombiniert reguläres sh mit Python-Scripting und einer Fenster- / Grafikumgebung. Sie könnten es sich ansehen.
Es basiert auf einer objektorientierten Pipeline , die Sie mit Ihren eigenen Objekten erweitern können, indem Sie vorhandene Programme einbinden oder Python-Bibliotheken verwenden.
quelle
PowerShell wurde 2016 zu Open Source. Seitdem wird es immer plattformübergreifender. Der Quellcode ist auf GitHub verfügbar, ebenso wie Installationspakete für eine Reihe von UNIX-ähnlichen Systemen.
quelle
Ich würde denken, Sie könnten das meiste davon erreichen, indem Sie eine Reihe von interpretierten (oder kompilierten) Skripten schreiben und diese dann in der Interpreter-Shell aufrufen, wodurch Ihre Objekte zurückgegeben oder beibehalten werden und so weiter, wenn Sie möchten.
Sie können dies in mindestens Ruby, Perl, Python, Haskell (z. B. GHCi), JavaScript (z. B. node.js), Matlab und sicherlich in anderen Sprachen tun ...
quelle
Ein weiterer Gedanke drei Jahre später: Es ist möglich, ein Objekt mithilfe von XML oder JSON mit einem Textstrom darzustellen. Ich bevorzuge JSON (einfacher), und tatsächlich gibt es Projekte, die den klassischen * NIX-Dienstprogrammen JSON-Unterstützung bieten. Zum Beispiel: https://github.com/step-/JSON.awk
Ein Problem bei der Verwendung eines Objekttypmodells für klassische * NIX-Programme wie AWK ist, dass sie keine OO-Unterstützung bieten. Während AWK beispielsweise über assoziative Arrays verfügt, sind die Arrays nicht mehrdimensional (jedes Element in einem AWK-Array muss eine Zahl oder eine Zeichenfolge sein; ein Array darf in AWK kein Array-Objekt sein).
quelle