Unix-Äquivalent von PowerShell?

Unix-Äquivalent von PowerShell?

Ich fand es immer umständlich, wenn komplexe Shell-Befehle das Parsen von Textausgaben mitAWK. Im Grunde konvertieren wir strukturierte Daten in Text und analysieren den Text dann erneut, um die strukturierten Daten zurückzuerhalten.

Power Shellist eine Windows-Shell, die dieses Problem vermeidet, indem sie Ihnen ermöglicht, typisierte Objekte statt nur Text zwischen Shell-Befehlen weiterzuleiten.

Gibt es Unix-Shells, die objektbasiert statt textbasiert sind, wie etwa PowerShell?

Antwort1

Nein, es ist umgekehrt. Es gibt keine Spoon^H^H^Hstrukturierten Daten. Es gibt nur Text.

Ein großer Teil der Unix-Philosophie basiert auf der Idee, Text auszugeben und als Eingabe zu akzeptieren. Vielleicht möchten Sie Folgendes lesen:Die Kunst der Unix-Programmierung“, in dem es eine schöne Erklärung dazu gibt.

Verstehen Sie mich nicht falsch: Ich verstehe Ihren Standpunkt und weiß, worauf Sie hinauswollen. Es gibt Dinge wie die interaktiven Interpreter von Ruby und Python, die als Shell verwendet werden können, aber für grundlegende Aufgaben nicht so benutzerfreundlich sind wie Bash. Versuchen Sie beispielsweise, das Verzeichnis zu wechseln.

Auch die Verwendung von Objekten in einer Shell ist nicht alles. Wenn nur IhreHülseunterstützt, wären Sie unter Unix aufgeschmissen. Alle standardmäßigen Unix-Textbearbeitungstools müssten geändert werden, wie grep, awk, sed usw.

Ich glaube, es gab vor ein paar Jahren einen Versuch, so etwas zu schaffen, aber ich kann mich nicht an den Namen erinnern und habe schon lange nichts mehr davon gehört. Es wird wahrscheinlich nicht durchstarten.

Antwort2

Es gibt tatsächlich ein Projekt namensPashdas darauf abzielt, PowerShell (auf Mono aufsetzend) zu implementieren, aber es scheint ins Stocken geraten zu sein.

Antwort3

PowerShell wurde 2016 Open Source. Seitdem wird es immer plattformübergreifender. Der Quellcode ist verfügbar unterGitHubund das Gleiche gilt für Installationspakete für eine Reihe UNIX-ähnlicher Systeme.

Antwort4

Ich könnte mir vorstellen, dass Sie das meiste davon erreichen können, indem Sie eine Reihe interpretierter (oder kompilierter) Skripte schreiben und diese dann in der Shell des Interpreters aufrufen, der Ihre Objekte zurückgibt oder beibehält usw., wenn Sie möchten.

Sie können dies zumindest in Ruby, Perl, Python, Haskell (z. B. GHCi), JavaScript (z. B. node.js), Matlab und sicherlich auch in anderen Sprachen tun ...

verwandte Informationen