3 Stimmen

alternative bash für Windows / oder Hilfe für cygwin bei bestimmten Aufgaben

Mein Ziel: eine Reihe von Skripten zu erstellen, die einige gängige Systemaufgaben erledigen, darunter diese

  • Dateien kopieren/verschieben/listen/suchen/grep
  • Prozesse beobachten/starten/anhalten
  • Abfragen gegen Oracle über sqlplus ausführen

Ich habe mich daran gewöhnt, Cygwin/bash zu verwenden, um mein Leben bei der Arbeit zu erleichtern, und ehrlich gesagt, möchte ich nicht von der Bash-Sprache weggehen und zum Beispiel PowerShell lernen - also habe ich angefangen, nach einer Möglichkeit zu suchen, Bash-Skripte unter Windows auszuführen, ... vorzugsweise etwas Alternatives zu Cygwin.

Die Wahrheit ist, dass ich mit der Cygwin-Installation immer noch nicht zufrieden bin, und mit der Tatsache, dass es keinen einfachen Weg gibt, sie zu umgehen, dass sie sich an mehr oder weniger erfahrene Benutzer richtet, und dass es eine Reihe von Dingen gibt, die während der Installation auftauchen können. Ich meine, was ich jetzt versuche, ist, eine Reihe von Skripten zu schreiben, die sich an jemanden richten, der weniger erfahren ist als ich (und ich bin in keiner Weise ein echter Experte) - in den meisten Fällen eine Art Administrator, der die Skriptdetails nicht kennen will.

Ich denke, dass dieser Benutzer auch in der Lage sein möchte, diese Skripte auf einem anderen Rechner auszuführen, und ich möchte in der Lage sein, ihm/ihr zu erklären, wie er/sie das tun kann, ohne nur zu sagen, dass er/sie den Support anrufen soll, und schließlich mich (damit wir Cygwin auf einem anderen Rechner installieren können usw.)

ich habe MinGW(msys) ausprobiert, aber auch hier sind manuelle Schritte nötig, um die Dinge einzurichten - ich meine, diese manuellen Schritte sind so etwas wie ein De-facto-Standard in diesen Windows-Portierungen geworden (sorry, vielleicht habe ich Lust zu prahlen). win-bash sah aus, als könnte es eine Lösung sein, aber ich habe es am Ende auch verworfen, wegen der alten Bash-Version und ihrer Unfähigkeit, Dinge zu tun, die ich in cygwin tun konnte - insbesondere

  • hier Dokumente
  • Dinge wie "cmd /C dir *" (ich weiß nicht warum) - und ja, ich benutze cmd /C dir in Fällen, in denen ich mich in einem gemeinsam genutzten Netzwerkordner mit Tausenden von Dateien befinde, und ls ist deutlich langsamer als dir

endlich meine Fragen:

  • Bin ich dazu verdammt, PowerShell zu verwenden? Ich denke, ich werde es tun, widerwillig, wenn ich es muss.
  • gibt es eine einfache vorgefertigte "slim" cygwin-Installation.. oder, portable cygwin, noch besser? es gibt ein cygwin-portable-Projekt auf sourceforge, aber es ist nicht, dass nicht diese manuellen Schritte, wieder, anscheinend - gibt es einen Weg, um diese Schritte zu automatisieren, vielleicht? und wenn es gibt, frage ich mich, warum jemand hat es nicht bereits getan? - Und wäre es dann möglich, Bash-Skripte von der Windows-Eingabeaufforderung mit einem einfachen Befehl wie "bash somescript.sh" aufzurufen?

danke für Ihre Aufmerksamkeit.

1voto

James Broadhead Punkte 1798

Wenn man den Cygwin-Installationsprozess umgeht, sollte er auch für technisch weniger versierte Benutzer erträglich sein.

Die Cygwin-Installation kann mit Hilfe von Befehlszeilen-Args vereinfacht werden; http://sources.redhat.com/ml/cygwin-apps/2003-03/msg00526.html

Sie können die Installation der meisten Cygwin-Pakete auch über cyg-apt automatisieren.

1voto

Cédric Julien Punkte 74976

Als hier erwähnt kann die Cygwin-Installation vollständig geskriptet und parametrisiert werden, so dass sie im Hintergrund und automatisch abläuft.

Wenn Sie die minimale Liste von Cygwin-Paketen definieren, die Sie benötigen, verwenden Sie einfach ein kleines .bat-Skript, das das Cygmin-Setup-Programm wie folgt aufruft

setup.exe --packages=list_of_packages_you_need --quiet-mode

1voto

Jay Punkte 12869

Ich habe das nicht überprüft, aber ich vermute, dass msys ein *nix-ähnliches Aussehen implementiert, indem es ausführbare Windows-Versionen von Systembefehlen erstellt. Alle gängigen Befehle sind in meiner msys-Installation als ausführbare Dateien vorhanden. Wenn das stimmt, dann sollte es möglich sein, sie unabhängig von einer vollständigen Installation zu verwenden.

Versuchen Sie, "bash.exe", "cp.exe" usw. aus dem msys-Bin-Verzeichnis auf einen Rechner/vm zu kopieren, auf dem kein msys installiert ist, und sehen Sie, ob es funktioniert. Möglicherweise müssen Sie auch einige dlls oder gemeinsam genutzte Bibliotheken kopieren. Ein Windows-Abhängigkeitsprüfprogramm zeigt an, welche dlls eine ausführbare Datei verwendet.

Sie könnten die von Ihnen verwendeten Dateien zusammenpacken und ein einfaches Installationsprogramm erstellen oder die Dateien einfach mit Ihren Skripten kopieren.

0voto

David W. Punkte 101611

Werfen Sie einen Blick auf MKS-Werkzeugsatz . Anders als Cygwin kann es in der Windows-Welt leben. Dateien enden in CR/LF wie Windows-Dateien, und Sie haben nicht dieses /cygdrive/c-Zeug. Nackte Laufwerksbuchstaben funktionieren gut in MKS Toolkit.

Ein paar Vorbehalte:

  • Ich habe MKS Toolkit schon lange nicht mehr benutzt. Siehe folgenden Grund.
  • MKS Toolkit kostet (setzen Sie sich dazu) $600 pro Lizenz. Autsch! Deshalb benutze ich Cygwin, auch wenn ich nicht glaube, dass es so gut ist oder so gut funktioniert.
  • Es basiert auf Kornshell und nicht auf Bash (obwohl das vielleicht ein bisschen anders ist). Kornshell und BASH sind sich zu 95% ähnlich. Aber die letzten 5 % machen dich fertig. Mir gefällt Kornshell in vielerlei Hinsicht besser als BASH. Kornshell hat die print Anweisung, die weit besser ist als die echo Erklärung. Variablennamen verschwinden nicht in Blöcken. Sie können problemlos Doppelschleifen ausführen, da fast alle Befehle mit unit Zahlen der Ein- und Ausgabe. Allerdings hat Kornshell nicht diese netten Escape-Zeichen in der Eingabeaufforderung, und es ist schwer, den Exit-Status eines Befehls in der Mitte der Pipeline zu finden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X