Partager via


Utilisation de systèmes de fichiers Windows et Linux

Il existe un certain nombre de considérations à prendre en compte lors de l’utilisation entre les systèmes de fichiers Windows et Linux. Nous avons décrit quelques-uns d’entre eux dans ce guide, y compris quelques exemples de prise en charge de l’interopérabilité pour combiner des commandes Windows et Linux.

Stockage et performances des fichiers sur les systèmes de fichiers

Nous vous recommandons de ne pas travailler sur plusieurs systèmes d’exploitation avec vos fichiers, sauf si vous avez une raison spécifique de le faire. Pour accélérer les performances, stockez vos fichiers dans le système de fichiers WSL si vous travaillez dans une ligne de commande Linux (Ubuntu, OpenSUSE, etc.). Si vous travaillez dans une ligne de commande Windows (PowerShell, Invite de commandes), stockez vos fichiers dans le système de fichiers Windows.

Par exemple, lors du stockage de vos fichiers projet WSL :

  • Utilisez le répertoire racine du système de fichiers Linux : /home/<user name>/Project
  • Pas le répertoire racine du système de fichiers Windows : /mnt/c/Users/<user name>/Project$ ou C:\Users\<user name>\Project

Lorsque vous voyez /mnt/ dans le chemin d’accès au fichier d’une ligne de commande WSL, cela signifie que vous travaillez à partir d’un lecteur monté. Par conséquent, le lecteur C :/ du système de fichiers Windows (C:\Users\<user name>\Project) ressemblera à ceci lorsqu’il est monté dans une ligne de commande WSL : /mnt/c/Users/<user name>/Project$. Il est possible de stocker vos fichiers projet sur un lecteur monté, mais votre vitesse de performance s’améliore si vous les stockez directement sur le \\wsl$ lecteur.

Afficher votre répertoire actif dans l’Explorateur de fichiers Windows

Vous pouvez afficher le répertoire dans lequel vos fichiers sont stockés en ouvrant l’Explorateur de fichiers Windows à partir de la ligne de commande, à l’aide de :

explorer.exe .

Vous pouvez également utiliser la commande : powershell.exe /c start . veillez à ajouter la période à la fin de la commande pour ouvrir le répertoire actif.

Pour afficher toutes vos distributions Linux disponibles et leurs systèmes de fichiers racines dans l’Explorateur de fichiers Windows, dans la barre d’adresses, entrez : \\wsl$

Afficher les fichiers projet dans l’Explorateur de fichiers Windows

Sensibilité aux majuscules et minuscules des noms de fichiers et des répertoires

La sensibilité de la casse détermine si les lettres majuscules (FOO.txt) et minuscules (foo.txt) sont traitées comme distinctes (prenant en compte la casse) ou équivalentes (sans tenir compte de la casse) dans un nom de fichier ou un répertoire. Les systèmes de fichiers Windows et Linux gèrent la sensibilité de la casse de différentes manières : Windows est insensible à la casse et Linux est sensible à la casse. Apprenez-en davantage sur l’ajustement de la sensibilité de la casse, en particulier lors du montage de disques avec WSL, dans l’article Ajuster la sensibilité de la casse .

Interopérabilité entre les commandes Windows et Linux

Les outils et commandes Windows et Linux peuvent être utilisés de manière interchangeable avec WSL.

  • Exécutez les outils Windows (par exemple, notepad.exe) à partir d’une ligne de commande Linux (par exemple. Ubuntu).
  • Exécutez des outils Linux (par exemple, grep) à partir d’une ligne de commande Windows (par exemple. PowerShell).
  • Partagez des variables d’environnement entre Linux et Windows. (Build 17063+)

Exécuter des outils Linux à partir d’une ligne de commande Windows

Exécutez des fichiers binaires Linux à partir de l’invite de commandes Windows (CMD) ou de PowerShell à l’aide wsl <command> (ou wsl.exe <command>).

Par exemple:

C:\temp> wsl ls -la
<- contents of C:\temp ->

Les fichiers binaires appelés de cette façon :

  • Utilisez le même répertoire de travail que l’invite actuelle du CMD ou de PowerShell.
  • Exécutez en tant qu’utilisateur WSL par défaut.
  • Disposez des mêmes droits d’administration Windows que le processus d’appel et le terminal.

La commande Linux suivante wsl (ou wsl.exe) est gérée comme n’importe quelle exécution de commande dans WSL. Les éléments tels que sudo, piping et redirection de fichiers fonctionnent.

Exemple utilisant sudo pour mettre à jour votre distribution Linux par défaut :

C:\temp> wsl sudo apt-get update

Votre nom d’utilisateur de distribution Linux par défaut est répertorié après avoir exécuté cette commande et vous êtes invité à indiquer votre mot de passe. Après avoir entré correctement votre mot de passe, votre distribution télécharge les mises à jour.

Mélange de commandes Linux et Windows

Voici quelques exemples de mélange de commandes Linux et Windows à l’aide de PowerShell.

Pour utiliser la commande ls -la Linux pour répertorier les fichiers et la commande findstr PowerShell pour filtrer les résultats des mots contenant « git », combinez les commandes :

wsl ls -la | findstr "git"

Pour utiliser la commande dir PowerShell pour répertorier les fichiers et la commande grep Linux pour filtrer les résultats des mots contenant « git », combinez les commandes :

C:\temp> dir | wsl grep git

Pour utiliser la commande ls -la Linux pour répertorier les fichiers et la commande > out.txt PowerShell pour imprimer cette liste dans un fichier texte nommé «out.txt», combinez les commandes :

C:\temp> wsl ls -la > out.txt

Les commandes passées dans wsl.exe sont transférées au processus WSL sans modification. Les chemins d’accès aux fichiers doivent être spécifiés au format WSL.

Pour utiliser la commande ls -la Linux pour répertorier les fichiers dans le chemin du système de fichiers Linux, à l’aide /proc/cpuinfo de PowerShell :

C:\temp> wsl ls -la /proc/cpuinfo

Pour utiliser la commande ls -la Linux pour répertorier les fichiers dans le chemin du système de fichiers Windows, à l’aide C:\Program Files de PowerShell :

C:\temp> wsl ls -la "/mnt/c/Program Files"

Exécuter des outils Windows à partir de Linux

WSL peut exécuter des outils Windows directement à partir de la ligne de commande WSL en utilisant [tool-name].exe. Par exemple : notepad.exe.

Les applications s’exécutent de cette façon ont les propriétés suivantes :

  • Conservez le répertoire de travail comme invite de commandes WSL (pour la plupart- les exceptions sont expliquées ci-dessous).
  • Disposez des mêmes droits d’autorisation que le processus WSL.
  • Exécutez en tant qu’utilisateur Windows actif.
  • Apparaissent dans le Gestionnaire de tâches Windows comme s’ils sont exécutés directement à partir de l’invite CMD.

Les exécutables Windows exécutés dans WSL sont gérés de la même façon que les exécutables Linux natifs : piping, redirections et même travail d’arrière-plan comme prévu.

Pour exécuter l’outil Windows ipconfig.exe, utilisez l’outil Linux grep pour filtrer les résultats « IPv4 » et l’outil Linux cut pour supprimer les champs de colonne ; sur une distribution Linux (par exemple, Ubuntu), entrez la commande suivante :

ipconfig.exe | grep IPv4 | cut -d: -f2

Essayons un exemple de combinaison de commandes Windows et Linux. Ouvrez votre distribution Linux (par exemple. Ubuntu) et créez un fichier texte : touch foo.txt. Utilisez maintenant la commande ls -la Linux pour répertorier les fichiers directs et leurs détails de création, ainsi que l’outil findstr.exe Windows PowerShell pour filtrer les résultats afin que seul votre foo.txt fichier s’affiche dans les résultats :

ls -la | findstr.exe foo.txt

Les outils Windows doivent inclure l’extension de fichier, correspondre au cas du fichier et être exécutables. Non exécutables, y compris les scripts de traitement par lots. Les commandes natives CMD comme dir peuvent être exécutées avec cmd.exe /C la commande.

Par exemple, répertoriez le contenu de votre répertoire C :\ du système de fichiers Windows en entrant :

cmd.exe /C dir

Vous pouvez également utiliser la ping commande pour envoyer une demande d’écho au site web microsoft.com :

ping.exe www.microsoft.com

Les paramètres sont passés au fichier binaire Windows non modifié. Par exemple, la commande suivante s’ouvre C:\temp\foo.txt dans notepad.exe:

notepad.exe "C:\temp\foo.txt"

Cela fonctionnera également :

notepad.exe C:\\temp\\foo.txt

Partager des variables d’environnement entre Windows et WSL avec WSLENV

WSL et Windows partagent une variable d’environnement spéciale, WSLENVcréée pour ponter les distributions Windows et Linux s’exécutant sur WSL.

Propriétés de WSLENV variable :

  • Il est partagé ; il existe dans les environnements Windows et WSL.
  • Il s’agit d’une liste de variables d’environnement à partager entre Windows et WSL.
  • Il peut mettre en forme des variables d’environnement pour fonctionner correctement dans Windows et WSL.
  • Il peut vous aider dans le flux entre WSL et Win32.

Remarque

Avant la version 17063, seule la variable d’environnement Windows accessible par WSL était PATH (vous pouviez donc lancer des exécutables Win32 à partir de WSL). À compter de 17063, WSLENV commence à être pris en charge. WSLENV respecte la casse.

Indicateurs WSLENV

Il existe quatre options disponibles dans WSLENV pour influencer la façon dont la variable d’environnement est traduite.

WSLENV Drapeaux:

  • /p - traduit le chemin entre les chemins de style WSL/Linux et les chemins Win32.
  • /l : indique que la variable d’environnement est une liste de chemins d’accès.
  • /u - indique que cette variable d’environnement ne doit être incluse que lors de l’exécution de WSL à partir de Win32.
  • /w - indique que cette variable d’environnement ne doit être incluse que lors de l’exécution de Win32 à partir de WSL.

Les drapeaux peuvent être combinés en fonction des besoins.

Pour en savoir plus sur WSLENV, y compris la FAQ et les exemples de définition de la valeur de WSLENV sur une concaténation d’autres variables d'environnement prédéfinies, chacune suffixée par une barre oblique suivie d’indicateurs pour spécifier la manière dont la valeur doit être traduite et le passage des variables avec un script. Cet article inclut également un exemple de configuration d’un environnement de développement avec le langage de programmation Go, configuré pour partager un GOPATH entre WSL et Win32.

Désactiver l’interopérabilité

Les utilisateurs peuvent désactiver la possibilité d’exécuter des outils Windows pour une seule session WSL en exécutant la commande suivante en tant que racine :

echo 0 > /proc/sys/fs/binfmt_misc/WSLInterop

Pour réactiver les fichiers binaires Windows, quittez toutes les sessions WSL et réexécutez bash.exe ou exécutez la commande suivante en tant que racine :

echo 1 > /proc/sys/fs/binfmt_misc/WSLInterop

La désactivation de l’interopérabilité n’est pas persistante entre les sessions WSL . L’interopérabilité est à nouveau activée lors du lancement d’une nouvelle session.