В последнем выпуске Windows «Fall Creators Update» можно монтировать пути UNC или любую другую файловую систему, к которой Windows может получить доступ, из WSL.
Вы можете сделать это с помощью команды mount
, как обычно, с файловой системой «drvfs
», предоставляемой WSL:
sudo mount -t drvfs '\\server\share' /mnt/share
Одиночные кавычки полезны вокруг пути UNC, так что вы не нужно избегать обратной косой черты. Вы можете монтировать в произвольный каталог; Я использовал /mnt/share
в качестве примера, но подойдет любой пустой каталог.
Все файлы будут отображаться с полными разрешениями a+rwx
777
. Реальные права доступа будут проверены, когда вы попытаетесь получить доступ к файлу, и вы можете получить ошибку в этот момент, даже если кажется, что операция должна быть выполнена успешно. Каждый читаемый файл будет рассматриваться как исполняемый.
Для местоположений, для которых требуются учетные данные, у вас есть три варианта:
net use
из командной строки или net.exe use
изнутри WSL ( cd /mnt/c
сначала для подавления предупреждения ). Вам понадобится что-то вроде net.exe use \\server\share /USER:
. Вместо этого вы можете использовать '*'
для запроса пароля. Другие конфигурации показаны с помощью net.exe help use
.Я понимаю, что саму Samba можно заставить работать и под WSL, но, поскольку хост предоставляет ту же функциональность, я бы использовал встроенную версию из Windows, когда она доступна. smbclient
в первую очередь предназначен для доступа по протоколу FTP к серверам SMB и извлечения/помещения отдельных файлов, и он должен работать, как обычно, при соответствующей настройке.
Во-первых, проще всего это сделать с помощью других инструментов, например. cut -d: -f2 20180213.tmp
, awk -F: '{print $2}' 20180213.tmp
.
Однако я также хотел объяснить, почему ваш grep
метод не работает. Это потому, что он соответствует всем строкам после :
. Чтобы исправить это, вы можете сопоставить первое :
в регулярном выражении только с первым в обработанной строке, добавив перед ним ^[^\:]*
. Таким образом, любой символ перед исходным регулярным выражением не может быть :
. Полная команда:
grep -oP '^[^\:]*\:\K[^\:]+' 20180213.tmp
Также обратите внимание, что вам не нужно экранировать :
в регулярном выражении, поэтому вы можете упростить его с помощью:
grep -oP '^[^:]*:\K[^:]+' 20180213.tmp
Действительно, использование других инструментов, таких как cut, является лучшим способом, но я также хочу добавить решение sed:
sed -r 's/^[^:]+: ?([^:]+):.*/\1/' 20180213.tmp
Ищет от начала строки до второго двоеточия только символы, которые не являются ' :', но сохраняет только то, что находится между первым и вторым двоеточием. Я заметил, что перед именами файлов есть пробел, поэтому я его удалил.