Wie kann ich ein Shell-Skript in Windows ausführen? [Duplikat]

23

Ich bin ein Mac-Benutzer und neu in Windows. Wie kann ich ein Shell-Skript in Windows ausführen?

Generell würde ich die Textdatei mit der Endung speichern .shund über Terminal ausführen. Aber wie könnte ich das in Windows machen?

Terminator
quelle
1
Batch-Dateien. en.wikipedia.org/wiki/Batch_file
Kenaniah
2
Können Sie ein Beispiel für ein Skript angeben, das unter Windows ausgeführt werden soll?
1
Möchten Sie ein bereits vorhandenes .shShell-Skript ausführen ? Oder möchten Sie einfach wissen, wie man Skripte für Windows erstellt?
Keltari

Antworten:

30

Skripte mit einem .shSuffix sind im Allgemeinen Bourne-Shell-Skripte (oder bash, ksh oder zsh - alle von der Bourne-Shell abgeleiteten Shells). (Beachten Sie, dass auf Unix-ähnlichen Systemen, einschließlich MacOS, das .shSuffix nicht erforderlich ist. Das Betriebssystem überprüft die #!/bin/shZeile oben im Skript, um festzustellen, wie es ausgeführt werden soll.)

Windows bietet keine Bourne-ähnliche Shell.

Sie können Cygwin installieren , das unter Windows eine Unix-ähnliche Umgebung bietet, aber keine besonders "native" Umgebung hat. (Kommentar der Redaktion: Cygwin ist großartig für Leute wie mich, die Windows verwenden müssen, aber lieber Unix verwenden möchten.)

Es gibt andere Unix-ähnliche Subsysteme, die unter Windows ausgeführt werden, darunter MinGW und das von Microsoft bereitgestellte Windows Services for UNIX- Paket.

Anstatt zu versuchen, Unix-ähnliche Shell-Skripte zu schreiben und auszuführen, können Sie auch Windows-Batchdateien schreiben. Diese haben im Allgemeinen ein .batoder ein .cmdSuffix. Sie verwenden dieselben Befehle und dieselbe Syntax wie die interaktive Windows-Eingabeaufforderung.

Es gibt auch die relativ neue Windows PowerShell . Ich bin selbst nicht damit vertraut, aber ich habe gute Dinge darüber gehört.

Keith Thompson
quelle
3
Ich werde den Powershell-Vorschlag als Powershell-Benutzer unterstützen, der mehrere Skripte geschrieben hat, um alles zu tun, vom Neustart eines Remotecomputers über das Herunterfahren von Diensten auf einem Remotecomputer bis zum Abrufen einer Liste von Computernamen aus Active Directory, deren Alphabetisierung und Testen auf bestimmte Dienste und große komplizierte Datei bewegt. Es kann buchstäblich alles in Windows tun.
Paperlantern
1
Es ist erwähnenswert, dass cygwin möglicherweise die Ausführung des Skripts zulässt, jedoch möglicherweise nicht ordnungsgemäß ausgeführt wird, wenn einige Annahmen über das zugrunde liegende System getroffen werden (dh verfügbare Binärdateien, Dateisystemlayout usw.)
Daenyth
7

Sie können Cygwin verwenden . Es bietet Linux-ähnliche Umgebung in Windows.

ChandanK
quelle
2

Bei Win sind die gängigen Erweiterungen .batoder .cmd. Eine gute Quelle für die in der Windows-Shell verwendeten Befehle ist ss64 - für CMD und PowerShell.

Cygwin ist kein "Muss". Es gibt Ihnen nur den Linux-Stil - verwenden Sie BASH unter Win.

Bakudan
quelle
2

Was ist mit UWIN?

UWIN ist ein von David Korn entwickeltes Computer-Softwarepaket, mit dem Programme, die für das Betriebssystem Unix geschrieben wurden, mit wenigen Änderungen unter Microsoft Windows erstellt und ausgeführt werden können. Ein Teil der Softwareentwicklung wurde an Wipro, Indien, vergeben.

Überprüfen Sie dieses UWIN - Unix für Windows

Auffallende Merkmale von UWIN

  1. Zugriff auf fast alle Befehlszeilentools von Unix unter Windows. 245 Kommandozeilen-Tools, um genau zu sein.
  2. Wird mit dem originalen Unix-Compiler 'cc' sowie einer Vielzahl von Tools wie 'make' und den erforderlichen Bibliotheken geliefert, mit denen Unix-Anwendungen auf Windows-Rechnern ohne oder mit nur geringen Änderungen im Quellcode erstellt und ausgeführt werden können.
  3. Option zur Verwendung anderer Compiler wie Visual C ++ oder Mingw zum Kompilieren von Programmen. Vollwertiges Perl-Paket.
  4. X-Windows-Bibliotheken für diejenigen, die X-Anwendungen unter Windows entwickeln möchten. Um diese Anwendungen unter Windows ausführen zu können, benötigen Sie einen X-Server, der nicht mit UWIN gebündelt ist.
  5. UWIN wird mit einem Applet für die Systemsteuerung geliefert (Zugriff über "Start-> Einstellungen-> Systemsteuerung-> UWIN"), mit dem einige der UWIN-Systemparameter konfiguriert werden können.

Verwendung von UWIN

  • Führen Sie Unix-Anwendungen nativ in Windows mit voller Geschwindigkeit aus.
  • Nutzen Sie die volle Leistungsfähigkeit der Unix-Befehlszeilentools unter Windows.
  • Mit der mit UWIN gebündelten Korn-Shell fühlt sich ein Unix-Benutzer in einer Windows-Umgebung wie zu Hause.
  • Entwickeln und Ausführen von UNIX-Anwendungen unter Windows.
  • Entwickeln Sie X-Anwendungen auf der Windows-Plattform.

Nachteile von UWIN

  • UWIN wird nicht mit einem X-Server geliefert, sodass ein Benutzer keine X-Anwendungen unter Windows ausführen kann. Es gibt jedoch kommerzielle X-Server von Drittanbietern, die diese Lücke füllen können.
  • UWIN ist nicht unter der GPL veröffentlicht, kann jedoch kostenlos heruntergeladen und für Bildungs- und nichtkommerzielle Zwecke verwendet werden

Diese Software wurde verwendet, um uns Linux Command beizubringen, als ich am College war. Wirklich gut.


Ref: WikiPedia

Cygwin ist eine Unix-ähnliche Umgebung und Befehlszeilenschnittstelle für Microsoft Windows.

Das Gute daran ist, dass Cygwin die native Integration von Windows-basierten Anwendungen, Daten und anderen Systemressourcen mit Anwendungen, Softwaretools und Daten der Unix-ähnlichen Umgebung ermöglicht.

Interix
Interix ist eine Komponente der Services for Unix (SFU) -Release 3.0 und 3.5 (die letzte Version ist frei erhältlich ).

Die neuesten Versionen von Interix, 5.2 und 6.0, sind Komponenten der Editionen Windows Server 2003 R2, Windows Vista Enterprise und Ultimate und Windows Server 2008 unter dem Namen SUA (Subsystem für Unix-basierte Anwendungen). Version 6.1 ist in Windows 7 enthalten. Enterprise und Ultimate) und Windows Server 2008 R2 (alle Editionen)

Niranjan Singh
quelle
2

Es gibt eine andere Möglichkeit, dies mit dem Jubiläumsupdate für Windows 10 zu tun . In Windows ist jetzt eine Bash-Shell (Ubuntu) verfügbar.

Um es zu verwenden, müssen Sie das Feature installieren, da es standardmäßig nicht aktiviert ist.

  1. Gehe zu Control Panel-> Programs-> Turn Windows Features On and Off.

  2. Aktivieren Sie das Kontrollkästchen für Windows Subsystem for Linux (Beta). Dies installiert die Funktion und fordert zum Neustart auf.

Dann können Sie eine Eingabeaufforderung über Ausführen öffnen -> cmddann eingeben bashoder ausführen -> bash.exe.

Dadurch erhalten Sie eine Bash-Shell ohne virtuelle Maschine oder Cygwin oder virtualbox.

Matt
quelle
1

Obwohl die bestehenden hier Antworten zu der Zeit richtig, 10 Windows - ist nun auch optional eine modifizierte Version von Ubuntu eines vollständig Bash - Shell ausgeführt wird .

Nach der Installation können Sie eine Bash-Eingabeaufforderung öffnen (ähnlich wie bei einem Terminal unter OS X / macOS) und das Skript wie gewohnt ausführen.

chmod +x myscript.sh
./myscript.sh

Wenn Sie ein Skript direkt unter Windows ausführen möchten, können Sie im selben Verzeichnis eine Verknüpfung erstellen und als "Ziel" Folgendes festlegen:

C:\Windows\System32\bash.exe -c "./myscript.sh"

Wenn der Pfad Ihres Skripts relativ zur Position der Verknüpfung ist (wie im obigen Beispiel), stellen Sie sicher, dass das Feld "Start in" ebenfalls leer ist.

Molomby
quelle
0

Sie werden CygWin brauchen und dann werden Sie, glaube ich, in der Lage sein, einfach zu rennen:

sh yourscript.sh
dpl47
quelle
0

Die richtige Antwort wurde in einem Kommentar von Kenaniah gegeben, man muss Batch-Dateien verwenden . Sie müssen Ihre Shell-Code-Datei mit * .bat benennen, dann können Sie sie ausführen, indem Sie darauf klicken, oder einfach den Namen in das Terminal eingeben. Beachten Sie, dass das Windows-Terminal nicht genau wie das Unix-Terminal funktioniert. Im gesamten Web finden Sie zahlreiche Hilfeinformationen und Tutorials zu den Befehlen und zur Syntax. Es besteht auch die Möglichkeit, die Windows PowerShell zu verwenden , die eher Unix-ähnlich zu sein scheint.

Michael K
quelle