Windows and linux file systems

Working across Windows and Linux file systems

There are a number of considerations to keep in mind when working between Windows and Linux file systems. We have outlined a few of them for you in this guide, including some examples of interoperability support for mixing Windows and Linux-based commands.

File storage and performance across file systems

We recommend against working across operating systems with your files, unless you have a specific reason for doing so. For the fastest performance speed, store your files in the WSL file system if you are working in a Linux command line (Ubuntu, OpenSUSE, etc). If you’re working in a Windows command line (PowerShell, Command Prompt), store your files in the Windows file system.

For example, when storing your WSL project files:

  • Use the Linux file system root directory: \\wsl$\Ubuntu-18.04\home\ \Project
  • Not the Windows file system root directory: /mnt/c/Users/ /Project$ or C:\Users\ \Project

When you see /mnt/ in the file path of a WSL command line, it means that you are working from a mounted drive. So the Windows file system C:/ drive ( C:\Users\ \Project ) will look like this when mounted in a WSL command line: /mnt/c/Users/ /Project$ . It is possible to store your project files on a mounted drive, but your performance speed will improve if you store them directly on the \\wsl$ drive.

View your current directory in Windows File Explorer

You can view the directory where your files are stored by opening the Windows File Explorer from the command line, using:

Alternatively, you can also use the command: powershell.exe /c start . Be sure to add the period at the end of the command to open the current directory.

To view all of your available Linux distributions and their root file systems in Windows File explorer, in the address bar enter: \\wsl$

Filename and directory case sensitivity

Case sensitivity determines whether uppercase (FOO.txt) and lowercase (foo.txt) letters are handled as distinct (case-sensitive) or equivalent (case-insensitive) in a file name or directory. Windows and Linux file systems handle case sensitivity in different ways — Windows is case-insenstive and Linux is case-sensitive. Learn more about how to adjust case sensitivity, particularly when mounting disks with WSL, in the Adjust case sensitivity how-to article.

Interoperability between Windows and Linux commands

Windows and Linux tools and commands can be used interchangeably with WSL.

  • Run Windows tools (ie. notepad.exe) from a Linux command line (ie. Ubuntu).
  • Run Linux tools (ie. grep) from a Windows command line (ie. PowerShell).
  • Share environment variables between Linux and Windows. (Build 17063+)

Run Linux tools from a Windows command line

Run Linux binaries from the Windows Command Prompt (CMD) or PowerShell using wsl (or wsl.exe ).

Binaries invoked in this way:

  • Use the same working directory as the current CMD or PowerShell prompt.
  • Run as the WSL default user.
  • Have the same Windows administrative rights as the calling process and terminal.
Читайте также:  Драйвер hdmi для windows 10 64 bit nvidia geforce

The Linux command following wsl (or wsl.exe ) is handled like any command run in WSL. Things such as sudo, piping, and file redirection work.

Example using sudo to update your default Linux distribution:

Your default Linux distribution user name will be listed after running this command and you will be asked for your password. After entering your password correctly, your distribution will download updates.

Mixing Linux and Windows commands

Here are a few examples of mixing Linux and Windows commands using PowerShell.

To use the Linux command ls -la to list files and the PowerShell command findstr to filter the results for words containing «git», combine the commands:

To use the PowerShell command dir to list files and the Linux command grep to filter the results for words containing «git», combine the commands:

To use the Linux command ls -la to list files and the PowerShell command > out.txt to print that list to a text file named «out.txt», combine the commands:

The commands passed into wsl.exe are forwarded to the WSL process without modification. File paths must be specified in the WSL format.

To use the Linux command ls -la to list files in the /proc/cpuinfo Linux file system path, using PowerShell:

To use the Linux command ls -la to list files in the C:\Program Files Windows file system path, using PowerShell:

Run Windows tools from Linux

WSL can run Windows tools directly from the WSL command line using [tool-name].exe . For example, notepad.exe .

Applications run this way have the following properties:

  • Retain the working directory as the WSL command prompt (for the most part — exceptions are explained below).
  • Have the same permission rights as the WSL process.
  • Run as the active Windows user.
  • Appear in the Windows Task Manager as if directly executed from the CMD prompt.

Windows executables run in WSL are handled similarly to native Linux executables — piping, redirects, and even backgrounding work as expected.

To run the Windows tool ipconfig.exe , use the Linux tool grep to filter the «IPv4» results, and use the Linux tool cut to remove the column fields, from a Linux distribution (for example, Ubuntu) enter:

Let’s try an example mixing Windows and Linux commands. Open your Linux distribution (ie. Ubuntu) and create a text file: touch foo.txt . Now use the Linux command ls -la to list the direct files and their creation details, plus the Windows PowerShell tool findstr.exe to filter the results so only your foo.txt file shows in the results:

Windows tools must include the file extension, match the file case, and be executable. Non-executables including batch scripts. CMD native commands like dir can be run with cmd.exe /C command.

For example, list the contents of your Windows files system C:\ directory, by entering:

Or use the ping command to send an echo request to the microsoft.com website:

Parameters are passed to the Windows binary unmodified. As an example, the following command will open C:\temp\foo.txt in notepad.exe :

This will also work:

Share environment variables between Windows and WSL with WSLENV

WSL and Windows share a special environment variable, WSLENV , created to bridge Windows and Linux distributions running on WSL.

Properties of WSLENV variable:

  • It is shared; it exists in both Windows and WSL environments.
  • It is a list of environment variables to share between Windows and WSL.
  • It can format environment variables to work well in Windows and WSL.
  • It can assist in the flow between WSL and Win32.

Prior to 17063, only Windows environment variable that WSL could access was PATH (so you could launch Win32 executables from under WSL). Starting in 17063, WSLENV begins being supported. WSLENV is case sensitive.

Читайте также:  Windows phone не загрузился

WSLENV flags

There are four flags available in WSLENV to influence how the environment variable is translated.

  • /p — translates the path between WSL/Linux style paths and Win32 paths.
  • /l — indicates the environment variable is a list of paths.
  • /u — indicates that this environment variable should only be included when running WSL from Win32.
  • /w — indicates that this environment variable should only be included when running Win32 from WSL.

Flags can be combined as needed.

Read more about WSLENV, including FAQs and examples of setting the value of WSLENV to a concatenation of other pre-defined environment vars, each suffixed with a slash followed by flags to specify how the value should be translated and passing variables with a script. This article also includes an example for setting up a dev environment with the Go programming language, configured to share a GOPATH between WSL and Win32.

Disable interoperability

Users may disable the ability to run Windows tools for a single WSL session by running the following command as root:

To re-enable Windows binaries, exit all WSL sessions and re-run bash.exe or run the following command as root:

Disabling interop will not persist between WSL sessions — interop will be enabled again when a new session is launched.

Источник

Отличия файловых систем Linux и Windows

Обновл. 15 Авг 2021 |

В сравнении с Windows, файловые системы Linux имеют довольно много отличий. Вы не найдете здесь никаких букв для обозначения дисков или символа обратной косой черты ( \ ), указывающего на подкаталоги. При этом сами файлы могут иметь одни и те же имена, различающиеся только регистром букв. На этом уроке мы рассмотрим некоторые различия между файловыми системами Linux и Windows, узнать о которых будет полезно начинающим пользователям Linux-систем.

Отличия файловых систем Linux и Windows

Структура каталогов

В файловых системах Linux отсутствуют папки Windows, Program Files, Users (хотя каталог /home/ очень похож на папку Users в Windows).

Структура каталогов Linux не просто использует разные имена для папок и файлов. В ней применяется в целом иной принцип их расположения. Например, приложение в Windows может хранить все свои файлы в папке C:\Program Files\Имя_приложения, в то время как в Linux данные файлы будут разделены между несколькими расположениями: двоичные файлы будут помещены в /usr/bin, библиотеки — в /usr/lib, а конфигурационные файлы — в /etc/.

Структура каталогов в Debian Linux

Чувствительность к регистру

В Windows вы не можете в одной папке одновременно иметь файлы file и FILE. Файловая система Windows не чувствительна к регистру, поэтому она обрабатывает их имена как один и тот же файл.

В Linux же файловая система является чувствительной к регистру букв. Это означает, что у вас в одной папке могут находиться файлы с именами file, File и FILE соответственно. При этом они будут отличаться своим содержимым, т.к. Linux рассматривает заглавные и строчные буквы как разные символы.

Косая черта vs. Обратная косая черта

Windows, как и DOS, использует обратную косую черту. Например, путь к каталогу пользователя в Windows имеет следующий вид:

В Linux же путь к домашнему каталогу пользователя представлен в виде:

Примечание: Также не трудно заметить, что URL-адрес в вашем веб-браузере — даже в Windows — использует символ прямой косой черты, например, https://ravesli.com/ .

Символ «/» вместо буквы диска

Каждому разделу или целому диску в Windows назначается соответствующая буква. Независимо от того, имеется ли у вас несколько жестких дисков, несколько разделов на одном жестком диске или подключены съемные устройства, каждая файловая система будет доступна под своей собственной буквой:

В Linux же дела обстоят совсем иначе: вместо букв здесь применяются пути к различным каталогам (в Windows такое тоже возможно, но требуется дополнительная настройка).

Читайте также:  What is core dump linux

В Linux все файлы находятся в / — корневом каталоге. Вне корневого каталога файлов нет. Когда вы подключаете к компьютеру какое-нибудь устройство, оно монтируется (подключается) в разделе /media/. При этом содержимое каталога будет отображать содержимое смонтированного раздела:

Если у вас несколько жестких дисков или разделов жесткого диска, вы можете смонтировать их в любом месте вашей файловой системы. Например, разместить свои домашние каталоги в отдельном разделе, смонтировав его в /home или в любой другой каталог, даже в /myBackupDrive.

Everything is a File

Точно так же, как каждая смонтированная файловая система является каталогом внутри корневого каталога / , всё в Linux является файлом. Например, ваш первый жесткий диск в системе представлен каталогом /dev/sda, CD-привод доступен в /dev/cdrom, а ваша мышь — в /dev/mouse.

Примечание: Детально о принципе «Everything is a File» в Linux-системах мы расскажем в отдельной статье.

Вы можете удалять или изменять открытые файлы

В Linux и других UNIX-подобных операционных системах приложения не блокируют доступ к файлам так, как это делает Windows. Например, предположим, что вы смотрите фильм через медиаплеер VLC в Windows. Идут титры, вы закончили его смотреть и поэтому пытаетесь удалить. Система выдаст сообщение об ошибке — вам нужно прекратить просмотр файла в VLC, прежде чем вы сможете удалить его (переименовать или сделать с ним что-либо еще).

В Linux, как правило, вы можете удалить или изменить видеофайл во время его воспроизведения. Вы не увидите сообщений об ошибках, в которых говорится, что файл в данный момент используется кем-то еще.

Заключение

Эти различия должны относиться и к другим UNIX-подобным операционным системам, хотя могут быть свои нюансы (например, в macOS регистр не учитывается). Повторюсь, что здесь представлены те различия между файловыми системами Windows и Linux, узнать о которых полезно именно новичкам в мире Linux.

Поделиться в социальных сетях:

Источник

Access Linux filesystems in Windows and WSL 2

September 10th, 2020

Starting with Windows Insiders preview build 20211, WSL 2 will be offering a new feature: wsl —mount . This new parameter allows a physical disk to be attached and mounted inside WSL 2, which enables you to access filesystems that aren’t natively supported by Windows (such as ext4).

So, if you’re dual booting with Windows & Linux using different disks, you can now access your Linux files from Windows!

Getting started

To mount a disk, open a PowerShell window with administrator privileges and run:

To list the available disks in Windows, run:

To unmount and detach the disk from WSL 2, run

The disks paths are available under the ‘DeviceID’ columns. Usually under the \\.\\\.\PHYSICALDRIVE* format. Below is an example of mounting a specific partition of a given hard disk into WSL and browsing its files.

Accessing these files with File Explorer

Once mounted, it’s also possible to access these disks through the Windows explorer by navigating to \wsl$ and then to the mount folder.

Limitations

By default, wsl —mount attempts to mount the disk as ext4. To specify a filesystem, or for more advanced scenarios, check out Mount a disk in WSL 2.

Also please note that this feature comes with the limitation that only physical disks can be attached to WSL 2. At this time, it’s not possible to attach a single partition. More details on the limitations here.

Give us your feedback!

If you run into any issues, or have feedback for our team please file an issue on our Github , and if you have general questions about WSL you can find all of our team members that are on Twitter on this twitter list.

Источник

Оцените статью