Как перевести wslpath /home/user/ в путь Windows

Я использую подсистему Linux для Windows 10 (версия Windows 10 1803).

Я могу использовать командную строку:

user@laptop:~$ wslpath -w /c/
C:\

Но когда я пытаюсь использовать

user@laptop:~$ wslpath -w ~
wslpath: /home/user: Result not representable

Даже я использую:

user@laptop:~$ wslpath -w /home/user
wslpath: /home/user: Result not representable

Почему? как перевести /home/user в путь Windows?

мой путь к домашней папке в Windows C:\Users\winuser\AppData\Local\lxss\home

Я ожидаю, что какая-то командная строка может вернуть мне эту строку.


person user504909    schedule 26.11.2018    source источник
comment
Вот альтернативный способ сделать это с помощью команды sed. `эхо /дом/пользователь | sed 's#/#\\#g'`. Это может не помочь с буквой диска c/d/etc.   -  person Robert Ranjan    schedule 26.11.2018
comment
это мой путь к окну для папки /home/: C:\Users\winuser\AppData\Local\lxss\home, я не только хочу изменить формат пути Linux на формат Windows. Мне нужна вся строка пути window. @RobertRanjan   -  person user504909    schedule 26.11.2018


Ответы (2)


Обновленное руководство для пользователей Windows 10 1809 или более поздней версии:

В Windows 10 1809 мы (наконец-то) добавили интеграцию с файловой системой, позволяющую вам получать доступ к файлам в дистрибутивах WSL из Windows по пути \\wsl$ UNC:

введите описание изображения здесь

Если вас интересуют подробности того, как это работает, посетите эту запись в блоге: https://devblogs.microsoft.com/commandline/a-deep-dive-into-how-wsl-allows-windows-to-access-linux-files/

Теперь это позволяет wslpath предоставлять доступный для Windows путь к файлам в файловой системе вашего дистрибутива:

введите описание изображения здесь

В грядущем обновлении Windows 10 мая 2020 г. (2004 г.) вам не нужно будет запоминать несколько неясный путь \\wsl$\ UNC — вместо этого вы просто щелкните значок Tux (пингвин Linux) в проводнике:

введите описание изображения здесь

Предупреждение для пользователей WSL1:

Не пытайтесь копаться в папках %localappdata%\lxss\..., содержащих ваши файлы WSL1 Linux из Windows — там могут быть драконы!

Прочтите это сообщение: https://blogs.msdn.microsoft.com/commandline/2016/11/17/do-not-change-linux-files-using-windows-apps-and-tools/

Это руководство не изменилось и не изменится, хотя со временем оно станет менее важным: в частности, WSL2 не использует %localappdata%\lxss — вместо этого он хранит ваши файлы Linux в файлах VHDX в формате EXT4, обеспечивая почти родную производительность ввода-вывода для локальной файловой системы дистрибутива. .

person Rich Turner    schedule 29.11.2018
comment
Эй, вы действительно не должны предполагать причины, по которым люди хотят что-то делать. Мне нужно преобразовать пути Linux в пути Windows, чтобы смонтировать их через Docker для Windows. Файлы находятся в Windows и обычно доступны так, как вы упомянули. Тем не менее, Docker разработан таким образом, что ему нужны пути Windows. - person Chad Bernier; 06.05.2020
comment
Чад. Если вы выполняете поиск непосредственно в папках Windows, содержащих файлы дистрибутива WSL (1), весьма вероятно, что вы получите поврежденные файлы и/или потерю данных. Это не легкомысленное предупреждение. Вот почему в верхней части сообщения в блоге есть большой красный баннер. При этом, поскольку теперь вы можете получить доступ к файлам WSL через новую интеграцию файловой системы в 1809 или более поздней версии, я обновил приведенное выше руководство. - person Rich Turner; 15.05.2020
comment
Да, Рич, спасибо за обновление, но я это уже знаю, а ты делаешь больше предположений. Я уже знал об этом риске с самого начала. Вот почему файлы на самом деле хранятся в первую очередь на стороне Windows, как это рекомендуется. Хорошо, ОП пытался получить эти файлы Linux, и вы отвечаете на этот сценарий, но это не единственный сценарий. Я сказал эту часть в своем комментарии. Сделаем любой пример. Например, у меня есть файлы в C:\Users\chad\data. На wsl это будет отображаться как /c/Users/chad/data. - person Chad Bernier; 21.05.2020
comment
Возможно, вы даже создали символическую ссылку на эту папку где-нибудь еще, например, /home/chad/data. Итак, теперь вы пишете bash-скрипт, который определяет каталог, в котором он находится: /home/chad/data/repos/project1/src. И вы хотите выяснить, как оттуда попасть в C:\Users\chad\data\repos\project1\config. Вы хотите обобщить это, чтобы оно работало для любого проекта и любого пользователя, не требуя, чтобы люди каждый раз редактировали сценарий. И вам нужно передать этот путь в Docker. Это сценарий, который я пытаюсь решить. Я должен написать свой собственный вопрос, вероятно. - person Chad Bernier; 21.05.2020
comment
Я также обнаружил эту вещь \\wsl$\ и ценю, что вы обновили свой ответ. Однако и это мне не помогает. Этот путь доступен из Explorer, но Docker его не распознает, насколько мне известно. Вы успешно заставили Docker использовать один из этих путей UNC, потому что я не смог этого сделать? Итак, как мне написать сценарий bash для решения этого сценария, который не сложнее в использовании, чем он того стоит? Кроме того, этот же скрипт должен работать на OSX! Потому что есть шанс 50/50, что следующий человек, который запустит ваш скрипт, будет использовать Mac, и вы хотите, чтобы этот процесс был как можно более параллельным? - person Chad Bernier; 21.05.2020
comment
И многие из предполагаемых получателей вашего сценария на самом деле не являются профессиональными инженерами-программистами, поэтому в их знаниях и опыте есть пробелы. Это специалисты по данным, статистики, молекулярные биологи, которые стремятся стать учеными по данным и т. д. Их опыт может заключаться в написании блокнотов, которые когда-либо запускались только самими собой, но теперь они пытаются научиться писать API-интерфейсы корпоративного уровня со всей безопасностью и другими инженерными решениями. вещи, которые приходят вместе с этим. Таким образом, вы не хотите ошеломлять новичков до такой степени, что они разочаровываются и сдаются. - person Chad Bernier; 21.05.2020
comment
Попытка превратить ученых в инженеров — непростая задача. Это вариант использования, который я пытаюсь решить, и это вариант использования будущего. Все больше и больше компаний в конечном итоге осваивают технологию искусственного интеллекта и хотят интегрировать специалистов по данным в команды разработчиков продуктов. Спасибо за всю ту замечательную работу, которую вы проделали в Microsoft в последнее время. Они добились значительного прогресса, но все еще не идеальны для таких людей, как я. Это становится там, хотя. - person Chad Bernier; 21.05.2020
comment
Кроме того, я знаю, что WSL2 решит несколько моих проблем и облегчит жизнь, но он еще не вышел. Я ждал его больше года. Это не очень хорошая идея, но устанавливать Window Insider Builds на вашей корпоративной производственной машине, верно? Сколько времени пройдет после фактического выпуска, прежде чем корпоративные машины действительно получат обновление? Как скоро я перестану поддерживать WSL1 в инструментах и ​​документации, которые я создаю? Таким образом, остальные из нас тем временем наслаждались, но страдали от проблем WSL1. Лучше чем ничего. Жаль, что нам не пришлось ждать новые окна. - person Chad Bernier; 21.05.2020
comment
Сценарий, который я описываю, не кажется мне чем-то необычным. Я не могу быть единственным, кто хочет это сделать. Если вы хотите использовать компьютер с Windows для написания корпоративного программного обеспечения Linux, отличного от JVM (также известного как Python, R), вам понадобятся WSL и Docker. Это очень распространенный сценарий. Вам нужно монтировать тома Docker, чтобы вы могли монтировать такие вещи, как сертификаты, пароли, ключи API, то есть то, что вам не нужно в git! Моя команда не может быть единственной, кто пытается это сделать? Спасибо хоть. WSL/Windows Terminal/VSCode — отличные вещи. - person Chad Bernier; 21.05.2020
comment
@Чад. Со всем уважением, эти комментарии — не самое подходящее место для такого рода разговоров. Когда вы указываете какой-то путь в своем ответе из 7 частей, вам, вероятно, следует опубликовать свой собственный вопрос и / или связаться со мной в Твиттере. - person Rich Turner; 16.06.2020
comment
У меня winver 20_04, но в проводнике не отображается значок linux. - person Timo; 03.01.2021
comment
@timo Вы включили WSL? - person Rich Turner; 11.01.2021
comment
Я Тимо с большой буквой T;) Вот почему я только что получил ваше сообщение. Ну, я могу использовать Debian и команду wsl, поэтому, вероятно, она включена. Моя версия cmd /c показывает Microsoft Windows [Version 10.0.19041.685]. Может он 2004 года, но не обновленный? - person Timo; 25.01.2021

Чтобы преобразовать путь WSL Linux в путь Windows, используйте wlspath -w. Например:

$ wslpath -w /mnt/c/Users
C:\Users
$ wslpath -w /usr/bin
\\wsl$\Debian\usr\bin

(Да, ответ содержится в вопросе, но некоторые люди, такие как я, сразу переходят к ответам, не читая вопрос.) Проблема, о которой сообщает OP, не существует в WSL2.

person Samuel    schedule 11.03.2021