in

Comment exécuter des programmes Windows à partir du shell Bash de Windows 10

Dans la mise à jour des créateurs, le shell Bash de Windows 10 vous permet désormais d’exécuter des binaires Windows et des commandes d’invite de commande standard, directement à partir de Bash. Vous pouvez exécuter des programmes Linux et Windows à partir du même shell Bash, ou même incorporer des commandes Windows dans un script Bash.

Que souhaitez-vous savoir

Voici quelques détails de base que vous devez connaître sur cette fonctionnalité:

  • Compte d’utilisateur: Les programmes lancés à partir du shell Bash fonctionneront comme s’ils avaient été lancés par le compte utilisateur Windows actuel.
  • Autorisations: Ces programmes auront les mêmes autorisations que le processus Bash.exe. Donc, si vous voulez que ces commandes aient un accès administrateur, vous devrez exécuter le shell Bash en tant qu’administrateur.
  • Directeur de travail: Les programmes Windows partagent le même «répertoire de travail» que le shell Bash. Donc, si vous exécutez une commande qui répertorie le contenu du répertoire courant, elle listera le contenu du répertoire de travail courant dans le shell Bash. Utilisez le cd commande pour changer les répertoires de travail.

Dans cet esprit, voyons comment exécuter un programme.

Comment exécuter un programme Windows

Pour exécuter un programme Windows, entrez le chemin d’accès au fichier .exe du programme dans le shell Bash. N’oubliez pas que votre lecteur Windows C: est disponible dans / mnt / c dans Bash. L’environnement Bash est également sensible à la casse, vous devez donc spécifier la bonne capitalisation.

Supposons que vous vouliez lancer l’utilitaire Ping situé dans C: Windows System32 PING.EXE. Vous exécuteriez la commande suivante:

/mnt/c/Windows/System32/PING.EXE

La commande suivante ne fonctionnerait pas, car Bash est sensible à la casse:

/mnt/c/windows/system32/ping.exe

C’est un peu plus compliqué si le chemin contient des caractères complexes tels que des espaces et des crochets, comme les dossiers Program Files. Vous devez «échapper» les espaces, crochets et autres caractères complexes en les préfixant d’un caractère «».

Par exemple, disons que vous vouliez exécuter le programme Internet Explorer situé dans C: Program Files (x86) Internet Explorer iexplore.exe. Vous devrez exécuter la commande suivante dans Bash:

/mnt/c/Program Files (x86)/Internet Explorer/iexplore.exe

Notez le «» avant les caractères d’espace et de crochet. Ces caractères doivent être «échappés» ou Bash ne réalisera pas que les caractères font partie d’un chemin de fichier.

Comment passer un argument à une commande

Le shell Bash transmet les arguments directement aux commandes que vous exécutez.

Par exemple, si vous vouliez envoyer un ping à example.com, vous exécuteriez:

/mnt/c/Windows/System32/PING.EXE example.com

Ou, si vous vouliez ouvrir le fichier d’hôtes Windows dans le Bloc-notes, vous exécuteriez:

/mnt/c/Windows/System32/notepad.exe "C:WindowsSystem32driversetchosts"

Vous utilisez le chemin de fichier Windows standard lorsque vous transmettez un chemin de fichier directement à un programme Windows. C’est parce que Bash passe l’argument directement. Notepad.exe et d’autres programmes Windows attendent un chemin de fichier Windows.

Comment exécuter une commande intégrée

Certaines commandes Windows ne sont pas des fichiers .exe, mais sont intégrées à l’invite de commandes elle-même. Par exemple, cela inclut le dir commande que vous pourriez normalement exécuter dans une invite de commande. Pour exécuter une telle commande, vous devez exécuter le cmd.exe binaire associé à l’invite de commande et passez-lui la commande en argument avec / C, comme ceci:

/mnt/c/Windows/System32/cmd.exe /C command

Par exemple, pour exécuter le dir commande intégrée à l’invite de commande, vous exécuteriez la commande suivante:

/mnt/c/Windows/System32/cmd.exe /C dir

Comment ajouter des répertoires au chemin

L’environnement Windows Services for Linux traite les exécutables Windows de la même manière qu’il traite les binaires Linux. Cela signifie que vous pouvez ajouter un répertoire contenant des fichiers .exe au chemin, puis exécuter ces fichiers .exe directement. Par exemple, pour ajouter le répertoire System32 à votre chemin, exécutez:

export PATH=$PATH:/mnt/c/Windows/System32

Vous pouvez ensuite exécuter directement les fichiers .exe Windows situés dans le dossier System32, comme ceci:

PING.exe example.com
notepad.exe
cmd.exe /C dir

Comment diriger la sortie d’une commande vers une autre

La sortie d’une commande Windows peut être redirigée vers une commande Linux, et vice versa. Par exemple, vous pouvez utiliser le ipconfig.exe -all commande pour répertorier les détails de vos interfaces réseau et les diriger vers Linux grep commande pour rechercher la sortie. Par exemple, pour répertorier toutes les informations sur votre connexion et rechercher des sections correspondant à « Adresse IPv4 », exécutez:

/mnt/c/Windows/System32/ipconfig.exe -all | grep "IPv4 Address"

C’est le processus de base. Ces commandes fonctionnent également lorsqu’elles sont incorporées dans un script Bash, vous pouvez donc écrire un script Bash qui incorpore à la fois des commandes Windows et des utilitaires Linux. S’il s’exécute dans le shell Bash, il fonctionnera dans un script Bash.

Et, si vous voulez aller dans l’autre sens, vous pouvez utiliser la commande «bash -c» pour exécuter les commandes Bash à partir de l’invite de commande Windows standard.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Comment transférer des photos d'Android vers votre PC Windows

Comment transférer des photos d’Android vers votre PC Windows

Xmarks est mort, alors quelles autres options avez-vous?

Xmarks est mort, alors quelles autres options avez-vous?