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 ?

2voto

Ngo Points 21

Cela a beaucoup mieux fonctionné pour moi :

explorer.exe `wslpath -aw `

1voto

mattgately Points 123

J'ai trouvé que explorer.exe fonctionne assez bien pour trouver le chemin résolu correct (même des répertoires réseau montés) et lancer l'outil par défaut. Le seul hic est que vous ne pouvez pas avoir de chemins dans le nom de fichier, donc vous devez créer une petite fonction/script d'aide pour lancer Explorer correctement, par exemple :

win() { 
    # obtenir le nom de fichier complet non lié 
    file=`readlink -e $1` 
    dir=$(dirname "$file") 
    base=$(basename "$file") 
    # ouvrir l'élément en utilisant l'application Windows par défaut 
    (cd "$dir"; explorer.exe "$base")
}

Mettre à jour : Ngo a pointé un autre script, wslpath, qui effectue la conversion du chemin, donc vous pouvez appeler directement explorer.exe sur le chemin (après conversion). Ensuite, la fonction ci-dessus devient banale et peut facilement être transformée en alias.

1voto

Koichi Nakashima Points 151

eopen peut ouvrir divers fichiers (, répertoires et URI) dans WSL.

https://github.com/ko1nksm/eopen-ecd

Exemples

# Ouvrir un répertoire avec l'Explorateur (dernière utilisation)
eopen ~/.config/

# Ouvrir un répertoire avec une nouvelle instance de l'Explorateur
eopen -n ~/.config/

# Ouvre avec l'application par défaut de Windows
eopen image.png

# Ouvre avec l'éditeur de texte de Windows
eopen -e ~/.bashrc

# Utiliser sudo pour éditer le fichier non propriétaire
eopen -e --sudo /etc/hosts

# Ouvrir avec le navigateur par défaut de Windows
eopen http://google.com

# Ouvrir des fichiers et répertoires sous Windows
eopen C:/Windows

# Ouvrir des fichiers et répertoires sous un dossier partagé en réseau
eopen //server/shared

# Autres
eopen mailto:user@example.com   # Protocol de messagerie
eopen calculator:               # Application
eopen shell:Personal            # Commandes Shell
eopen :MyComputerFolder         # Raccourci pour shell:
eopen shell:::{2559a1f8-21d7-11d4-bdaf-00c04f60b9f0} # CLSID
eopen :                         # Emplacement actuel de l'Explorateur
eopen :/workspace               # Chemin relatif depuis l'emplacement actuel de l'Explorateur

1voto

geronimo Points 446

Vous pouvez appeler la commande Start-Process de PowerShell depuis WSL :

powershell.exe -Command Start-Process file

Pour que cela fonctionne également avec des chemins absolus, vous pouvez utiliser la commande wslpath -wa pour traduire le chemin en un chemin Windows.

powershell.exe -Command Start-Process `wslpath -wa /chemin/absolu/vers/fichier`

Cela présente un avantage par rapport à la solution cmd.exe : pour les partages réseau montés, wslpath produit un chemin UNC comme \\serveur\partage\. Ces chemins UNC ne peuvent pas être gérés par cmd.exe.

1voto

Nullcito Points 11

Essayez ceci :

fonction ouvrir {
  cmd.exe /C start "$1" /C bash
}

Si vous voulez que cela fonctionne à chaque fois, ajoutez-le au fichier .bashrc :
entrer la description du lien ici

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