Comment exécuter un script shell sous Windows? [dupliquer]

23

Je suis un utilisateur Mac et nouveau sur Windows. Comment puis-je exécuter un script shell sous Windows?

En règle générale, je voudrais enregistrer le fichier texte avec l'extension .shet l'exécuter via Terminal. Mais comment pourrais-je faire cela sous Windows?

Terminator
la source
1
Fichiers batch. en.wikipedia.org/wiki/Batch_file
Kenaniah
2
Pouvez-vous fournir un exemple de script que vous prévoyez d'exécuter sous Windows?
1
Cherchez-vous à exécuter un .shscript shell préexistant ? Ou voulez-vous simplement savoir comment créer un script pour Windows?
Keltari

Réponses:

30

Les scripts avec un .shsuffixe sont généralement des scripts shell Bourne (ou bash, ou ksh, ou zsh - tous les shells dérivés du shell Bourne). (Notez que sur les systèmes de type Unix, y compris MacOS, le .shsuffixe n'est pas nécessaire; le système d'exploitation regarde la #!/bin/shligne en haut du script pour déterminer comment l'exécuter.)

Windows ne fournit pas de shell de type Bourne.

Vous pouvez installer Cygwin , qui fournit un environnement de type Unix sous Windows - mais il n'a pas d'environnement particulièrement "natif". (Commentaire: Cygwin est idéal pour les gens comme moi qui ont besoin d'utiliser Windows mais qui préfèrent vraiment utiliser Unix.)

Il existe d'autres sous-systèmes de type Unix qui s'exécutent sous Windows, notamment MinGW et le package Windows Services for UNIX fourni par Microsoft.

Ou, au lieu d'essayer d'écrire et d'exécuter des scripts shell de type Unix, vous pouvez écrire des fichiers batch Windows. Ceux-ci ont généralement un suffixe .batou .cmd. Ils utilisent les mêmes commandes et syntaxe que l'invite de commandes interactive Windows.

Il y a aussi le relativement nouveau Windows PowerShell ; Je ne le connais pas moi-même, mais j'en ai entendu de bonnes choses.

Keith Thompson
la source
3
Je soutiendrai la suggestion de PowerShell en tant qu'utilisateur PowerShell qui a écrit plusieurs scripts pour tout faire, du redémarrage d'un ordinateur distant ou de l'arrêt des services sur un ordinateur distant à l'extraction d'une liste de noms d'ordinateurs depuis le répertoire actif, leur alphabétisation et leur test pour chacun. certains services et effectuer des déplacements de fichiers volumineux et compliqués. Il peut littéralement tout faire sous Windows.
Paperlantern
1
Il convient de noter que même si cygwin peut permettre au script de s'exécuter, il peut ne pas fonctionner correctement s'il fait certaines hypothèses sur le système sous-jacent (c'est-à-dire les binaires disponibles, la disposition du système de fichiers, etc.)
Daenyth
7

Vous pouvez utiliser Cygwin . Il fournit un environnement de type Linux dans Windows.

ChandanK
la source
2

Sur Win, les extensions courantes sont .batou .cmd. Une bonne source pour les commandes utilisées dans le shell Windows est ss64 - pour CMD et PowerShell.

Cygwin n'est pas un "must". Il vous donne simplement le style Linux - utilisez BASH sur Win.

Bakudan
la source
2

Et UWIN ??

UWIN est un progiciel informatique créé par David Korn qui permet de créer et d'exécuter des programmes écrits pour le système d'exploitation Unix sur Microsoft Windows avec peu ou pas de modifications. Une partie du développement logiciel a été sous-traitée à Wipro, en Inde.

Vérifiez cet UWIN - Unix pour Windows

Principales caractéristiques de UWIN

  1. Accès à presque tous les outils de ligne de commande d'Unix sur Windows. 245 outils de ligne de commande pour être exact.
  2. Livré avec le compilateur Unix original 'cc' ainsi qu'une pléthore d'outils comme 'make' et les bibliothèques nécessaires qui permettent aux applications Unix d'être construites et exécutées sur des machines Windows avec très peu ou pas de changements dans le code source.
  3. Possibilité d'utiliser d'autres compilateurs comme Visual C ++ ou Mingw pour compiler des programmes. Package Perl à part entière.
  4. Bibliothèques X Windows pour ceux qui aspirent à développer des applications X sur Windows. Bien que pour exécuter ces applications sous Windows, vous avez besoin d'un serveur X qui n'est pas fourni avec UWIN.
  5. UWIN est livré avec une applet du panneau de configuration (accessible via 'Démarrer-> Paramètres-> Panneau de configuration-> UWIN') qui peut être utilisée pour configurer certains des paramètres du système UWIN.

Utilisations d'UWIN

  • Exécutez les applications Unix en mode natif sous Windows à pleine vitesse.
  • Utilisez toute la puissance des outils de ligne de commande Unix sous Windows.
  • Le shell korn fourni avec UWIN permet à un utilisateur Unix de se sentir comme chez lui dans un environnement Windows.
  • Développez et exécutez des applications UNIX sous Windows.
  • Développer des applications X sur la plateforme Windows.

Inconvénients d'UWIN

  • UWIN n'est pas fourni avec un serveur X, donc un utilisateur ne pourra pas exécuter les applications X sur Windows. Bien qu'il existe des serveurs X commerciaux tiers disponibles qui peuvent combler cette lacune.
  • UWIN n'est pas publié sous GPL mais est gratuit à télécharger et à utiliser à des fins éducatives et non commerciales

Ce logiciel a été utilisé pour nous enseigner la commande Linux quand j'étais au collège .. vraiment bon ..


Réf: WikiPedia

Cygwin est un environnement de type Unix et une interface de ligne de commande pour Microsoft Windows.

Ce qui est bien, c'est que Cygwin fournit une intégration native des applications, données et autres ressources système Windows avec les applications, les outils logiciels et les données de l'environnement de type Unix.

Interix
Interix est un composant des Services pour Unix (SFU) versions 3.0 et 3.5 ( cette dernière est distribuée gratuitement ).

Les versions les plus récentes d'Interix, 5.2 et 6.0, sont des composants des éditions Windows Server 2003 R2, Windows Vista Enterprise et Ultimate et Windows Server 2008 sous le nom SUA (Subsystem for Unix-based Applications) La version 6.1 est incluse dans Windows 7 ( Enterprise et Ultimate) et Windows Server 2008 R2 (toutes les éditions)

Niranjan Singh
la source
2

Il existe une autre façon de le faire avec la mise à jour anniversaire pour Windows 10 . Il existe désormais un shell Bash (Ubuntu) disponible dans Windows.

Pour l'utiliser, vous devez installer la fonctionnalité car elle n'est pas activée par défaut.

  1. Allez dans Control Panel-> Programs-> Turn Windows Features On and Off.

  2. Cochez la case pour Windows Subsystem for Linux (Beta). Cela installera la fonctionnalité et demandera un redémarrage.

Ensuite, vous pouvez ouvrir une invite de commande via exécuter -> cmdpuis tapez bashou exécutez -> bash.exe.

Cela vous donnera un shell bash sans machine virtuelle ni Cygwin ou virtualbox.

Mat
la source
1

Bien que les réponses existantes ici étaient correctes au moment, Windows 10 ne comprend maintenant en option une version modifiée d'Ubuntu lancer un shell bash complet .

Une fois installé, vous pouvez ouvrir une invite bash (un peu comme vous le feriez pour un terminal sous OS X / macOS) et exécuter le script comme d'habitude, c'est-à-dire:

chmod +x myscript.sh
./myscript.sh

Si vous souhaitez exécuter un script directement à partir de Windows, vous pouvez créer un raccourci dans le même répertoire et définir la «cible» sur quelque chose comme:

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

Si le chemin de votre script est relatif à l'emplacement du raccourci (comme dans l'exemple ci-dessus), assurez-vous que le champ «Démarrer dans» est également vide.

Molomby
la source
0

Vous aurez besoin de CygWin, puis je pense que vous pourrez simplement exécuter:

sh yourscript.sh
dpl47
la source
0

La bonne réponse a été donnée dans un commentaire de Kenaniah, vous devez utiliser des fichiers batch . Vous devez nommer votre fichier de code shell à * .bat, puis vous pouvez l'exécuter en cliquant dessus ou simplement taper son nom dans le terminal. Notez que le terminal Windows ne fonctionne pas exactement comme le terminal Unix. Vous trouverez beaucoup d'aide et de tutoriels pour les commandes et la syntaxe partout sur le Web. Il existe également une possibilité d'utiliser Windows PowerShell , qui semble être plus semblable à Unix.

Michael K
la source