Frage

Ich verwende bash, und das schon seit mehr als einem Jahrzehnt getan - aber gelegentlich frage ich mich, ob es irgendwelche bedeutende neue Entwicklungen in der Welt der Linux-Shells wurde

.

Vor ein paar Jahren veröffentlicht Microsoft Powershell, die sehr interessant zu sein schien. Gibt es eine vergleichbare Innovation in Linux-Shells los?

War es hilfreich?

Lösung

Sie können über Pash . Es nutzt Mono die Art und Weise Powershell .NET verwendet.

Andere Tipps

Sie bash 4 tun erkennen, hat sich vor kurzem mit einer Last von neuen Funktionen und Sprach Ergänzungen erschienen?

  • Shell Optionen globstar (**/foo) hat eine rekursive Suche, dirspell behebt Fehler während Pfadname Expansion.
  • Assoziative Arrays, Karte Strings Strings, anstatt nur Zahlen in Strings.
  • Die autocd Shell Option kann Verzeichnisse zu ändern, indem nur den Verzeichnispfad eingeben, anstelle von cd vor stellen.
  • Koprozesse
  • &>> und |& Umleitungsoperatoren, die sowohl stdout und stderr
  • umleiten
  • Viele Ergänzungen zu bestehenden builtins für eine verbesserten Skript Komfort.

Check out:

Ich würde einen Blick auf zsh oder fishshell nehmen.

Eines der am wenigsten angepriesen Funktionen von Bash (und einige andere Schalen) die Möglichkeit, eigene Ables zu schreiben, und haben die Shell sie als builtins ausgeführt werden.

Lassen Sie uns sagen Sie den ladbaren ‚auf‘ .. schreiben und Sie wollen es so arbeiten:

on node 123 run some command
on class nodes run some command
on all nodes run some command

... etc ..

Sie können einfache Beispielen folgen, wie ein ladbaren zu schreiben, dann ist es als in über aktivieren -f / path / to / ladbaren loadable_name

gebaut bash ermöglichen

So in unserem Fall aktiviert -f / opt / bash / Ables / on auf

... in Ihrem bashrc, und Sie haben es.

Also, wenn Sie bash interpretieren Ihre spiffy neue Sprache nativ haben wollen, würden Sie einen ladbaren schreiben namens ‚Verwendung‘ oder ‚switch_to‘, ändern Sie dann den Parser eine andere Grammatik / Laufzeit, wenn eine bestimmte Umgebungsvariable laden wurde eingestellt .

D.h.:.

#/bin/bash

switch_to my-way-cool-language

funkyfunc Zippy(int p) [[
   jive.wassup(p) ]]

Die meisten Menschen sind nicht gehen zu wollen, ihre Schale hacken, aber. Ich wollte darauf hinweisen, dass Einrichtungen vorhanden sind Bash zu nehmen und es so, wie Sie es wollen machen, ohne zu viel Hantieren mit Kern-Code.

Siehe / path-to-Bash-Source / examples / Ables, könnten Sie in der Lage sein, das zu bekommen, zu fliegen, wo Sie arbeiten, da Sie noch Bash verwenden.

Ich denke, die "original verbesserte Shell" ist ksh93 . bash entstand zu einer Zeit, wenn die KSH Quellcode war proprietäre; wenn KSH dann Open-Source gewesen wäre, hätte es nicht nötig gewesen, als eine neue Shell haben (wenn auch mit der FSF weiß man nie). KSH ist eine Studie wert, besonders für seine Fähigkeit, durch C-Module erweitert werden, aber es ist kein klarer Sieg über bash. bash automatische Vervollständigung ist deutlich überlegen, was ausreichend sein kann insgesamt bash einen Gewinn zu machen. In jedem Fall bash und ksh haben erhebliche Anstrengungen zu konvergieren, so Unterschiede gering sind.

Die anderen interessanten Schal sind zsh , das alles zu sein versucht, die ksh ist, während auch csh einschließlich. Da ich nie einen Punkt oder Verwendung zu csh sah, bin ich nicht die richtige Person für zsh befürworten. Ich werde eine ungewöhnliche Unverträglichkeit hinweisen: standardmäßig in zsh eine Variable $var immer zu einem einzelnen Token erweitert, auch wenn es Leerzeichen enthält. Dieses Verhalten ist nicht kompatibel mit allen anderen sh abgeleiteten Muscheln, und es ist manchmal unbequem, aber wirklich macht es viel mehr Sinn als das Original, und es spart eine verdammt viel zitiert.

csh war die erste Schale Job-Kontrolle zu haben, aber es (und seine Nachfolger) wurde ersetzt durch bash und ksh in meinem Kopf. Es wurde nie Spaß mucn zu schreiben Skripte in.

Schließlich gibt es viele kleine Schalen für die Rettung Floppies entworfen (!) Und andere Spartan-Umgebungen, aber es klingt wie Sie wenig Interesse an den Menschen haben.

(In Sachen Innovation, sollte ich hinzufügen, dass mehr als die Hälfte der Skripte habe ich zu schreiben, wie Shell-Skripte sind jetzt Lua Skripte. Andere das gleiche für Python oder Ruby, oder zurück in den Tag sagen konnte, Perl oder Tcl. Also ich denke, die wirkliche Innovation ist die Migration weg von der Schale für programmierbare Interaktion in der Befehlszeile.)

IIRC, ist Powershell Object Oriented, während die meisten Unix-Shells und Dienstprogramme auf Text arbeiten. Auf dieser Hinsicht könnte Eichhörnchen Shell Sie interessieren. Ich habe es nie benutzt, aber.

Wenn Sie bereit sind sh Kompatibilität zu verlieren, könnte man sich eine Skriptsprache wie Python oder Tcl als Shell zu verwenden. rlwrap kann sehr praktisch sein, wenn der Interpreter nicht Zeilenbearbeitung bieten, Befehl Geschichte, Abschluss, etc.

Eine Philosophie in Bezug auf Schalen ist, dass sie in erster Linie nur Prozesse mit Dateien verbinden verwendet werden soll ( hier ist Seite, die diesen Ansatz espouses). Das heißt, haben die Menschen eine bemerkenswert komplexe Software geschrieben mit ihnen.

Shells kommen nicht viel mehr als die inovative Scheme Schell . Die ganze Kraft von Schema mit der Fähigkeit kombiniert Unix-Befehle ausführen und ein eingebettetes awk-Interpreter (geschrieben in Schema, natürlich). Der einzige Nachteil ist, dass es ein kleines bisschen von Patching muss aufbauen 64-Bit-Linux.

Es ist nicht gerade Bourne-Shell, aber es ist anders. Natürlich müssen Sie Schema lernen - Bonus

!

Wenn Sie wie Ruby, können Sie Rush (Rubin-Unix-Shell, nicht irb)

finden Sie in der Präsentation hier

http: //www.slideshare. net / adamwiggins / Rush-the-Rubin-shell-and-Unix-Integration-Bibliothek

oder offizielle Website, um weitere Beispiele siehe

http://rush.heroku.com/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top