42 votes

Comment puis-je "ouvrir" un fichier depuis WSL avec l'application par défaut ?

La plupart des systèmes fournissent une commande open (également connue sous le nom de start, cygstart, xdg-open etc.) qui ouvre un fichier dans l'application "par défaut" de l'environnement de bureau, quelle qu'elle soit.

Par exemple, depuis Powershell lorsque j'entre :

PS> start form.pdf

Le document s'ouvre dans Edge.

Est-ce que Bash-on-Ubuntu-on-Windows peut faire cela ?

43voto

primfaktor Points 563

Une réponse récente pour WSL 2 : Faites simplement wslview slides.pdf.

Ceci fait partie de la collection wslu et était préinstallé dans mon Ubuntu. Malheureusement, la documentation est un peu sparse.

Toutes les variantes cmd.exe n'ont pas fonctionné pour moi, car ça ne veut pas s'ouvrir à l'intérieur d'un chemin comme \\wsl$\…

41voto

MovieMaker Points 11

Depuis que l'interopérabilité Windows Linux a commencé à fonctionner, vous pouvez maintenant appeler :

cmd.exe /C start

8voto

pseudosavant Points 315

Comme Martijn l'a noté, c'est la manière correcte d'exécuter/ouvrir une application/fichier Windows.

cmd.exe /C start 

J'ai trouvé très utile d'intégrer ceci dans un script bash que je garde dans un dossier qui se trouve dans mon chemin système. Je le nomme start et fais un chmod 0744 sur le fichier pour le rendre exécutable. Le $* signifie qu'il passera tous les arguments de la ligne de commande que vous avez fournis au script à cmd.exe.

#!/bin/bash
cmd.exe /c start "Lancement depuis BASH" "$*"

Avec cette commande dans mon chemin système, je peux exécuter des commandes comme celles-ci sous Linux qui s'ouvrent dans Windows :

  1. start FileXYZ.pdf // Ouvre le PDF dans le visualiseur de PDF assigné par défaut dans Windows
  2. start explorer . // Ouvre le dossier actuel de WSL dans l'Explorateur Windows
  3. start MyApp.exe // Lance l'application Windows

7voto

MyrionSC2 Points 201

Pour approfondir la réponse de Martijn, vous pouvez mettre

alias start='cmd.exe /C start'

dans votre .bashrc pour obtenir le comportement attendu sur Windows, par exemple start . ouvre l'explorateur dans le répertoire actuel.

2voto

Gilbert Points 31

Cela dépend de si vous voulez A) lancer un programme linux à l'intérieur de WSL ou B) si vous voulez lancer un programme windows à partir d'un shell bash.

Si B) alors oui si vous installez cygwin/bash. Par exemple, installez git pour Windows et vous avez un système fonctionnant sous Windows avec bash. Ensuite, vous pouvez simplement exécuter start, en fait il est inclus en tant que script:

$ cat /usr/bin/start
#!/usr/bin/env bash
# Copyright (C) 2014, Alexey Pavlov
#   mailto:alexpux@gmail.com
# Ce fichier fait partie de la version Minimal SYStem 2.
#   https://sourceforge.net/p/msys2/wiki/MSYS2%20installation/
# Fichier: start

cmd //c start "${@//&/^&}"

Si A) alors cela devient beaucoup plus difficile surtout si vous voulez lancer un programme linux pour afficher un .pdf dans une fenêtre GUI. Notez que Windows sait associer une application par défaut pour ouvrir un fichier pdf mais WSL ne dispose pas de ces informations. Donc même si vous avez lancé un Bureau sous WSL vous auriez besoin d'associer une application GUI linux pour ouvrir le pdf.

Notez pour clarifier, dans WSL vous exécutez des exécutables linux et non des exécutables windows:

(WSL):~# file /bin/gzip
/bin/gzip: ELF 64-bit LSB  executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=68cc3c090405cf6d40e97d2ff58085fd26940602, stripped

(WSL):~# file /mnt/c/Program\ Files/Internet\ Explorer/iexplore.exe
 /mnt/c/Program Files/Internet Explorer/iexplore.exe: PE32+ executable (GUI) x86-64, for MS Windows

(WSL):~# /mnt/c/Program\ Files/Internet\ Explorer/iexplore.exe
 bash: /mnt/c/Program Files/Internet Explorer/iexplore.exe: cannot execute binary file: Exec format error

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X