Subsistema Windows Linux - Acessando arquivos fora do Ubuntu

64

Por que, quando eu crio um arquivo no Windows, por exemplo, não consigo vê-lo no sistema secundário do Linux no Windows 10 (bash.exe)

A captura de tela deve explicar.

Pasta: O OMG foi criado a partir do Windows Explorer. A pasta OMGBash foi criada a partir do sistema sub do Linux bash.exe

Quando uma pasta OU arquivo é criado fora do bash.exe eu nunca consigo ver, independentemente de permissões e propriedade.

Para mostrar as informações que eu tive que usar o Cygwin para mostrar permissões de arquivo, eu também alterei as permissões para ver se a pasta apareceria. (As duas janelas de comando na parte inferior)

Captura de tela mostrando as permissões pasta, bash.exe e Cygwin:

EstoutentandomovertodososmeusscriptsdoCygwinparaosubsistemaLinux,masEunãogostoderecriartodososarquivos,depoisterquecopiareusarbash,entãoreformatarusandoDos2unix(muitolongo).

EncontradoissonoGitHubparaosubsistemaLinux:

copyingdirectlyintotheLinuxsubsystemfromWindowsisnotsupported,accordingtodiscussiononothertickets.ThereisadirectoryunderAppDatasomewhere(Iforgetwhere)thatappearstocontainthefilesfortheWSLfilesystem.Butifyouputnewfilesthere,ormodifyexistingfilesthere,yourchangesarenotreflectedcorrectlyinsideWSL.

MybestguessisthatLinuxneedstostoredifferentmetadata(andmorecachinginformation,etc,sinceitsdisk-bufferingmodelisalsodifferent)aboutitsfilesthanWindowsdoes,andthatthisiscurrentlyimplementedbystoringthemastercopyofthestructureoftheLinuxfilesysteminadatabaseofsomesort,andjustusingtheWindowsfilesystemasaconvenientBLOB-storeforthatdatabase.

Ifyoureallyneedtodothis,aworkaroundwouldbetowriteadrag'n'drop.batscriptorsomesuchthatdoesbash.exe-c"mv %1 /home/$USER/". (You'll have to do some clever work with sed and tr, probably, to translate %1 to a valid WSL path.)

Alternatively -- could you put your files in a Windows directory and, within WSL, do "cd ~; ln -s /mnt/c/path/to/my/files" to make them appear to be in your WSL homedir?

    
por Dave Hamilton 03.06.2016 / 11:32

4 respostas

65

Não tenho certeza se estou entendendo mal sua pergunta, mas sua bash do ubuntu (janela superior direita) deve ter acesso aos seus discos baseados no Windows em /mnt . Por exemplo, na minha máquina /mnt/c/Users/Scott/Desktop é minha área de trabalho do Windows e posso ler / gravar arquivos do vi por ex. Eu não acredito que o oposto seja verdade ainda. Ou seja, não acho que você possa explorar seu mundo bash a partir do Windows Explorer.

O que eu tenho feito como desenvolvedor é hospedar projetos no meu d: e apontar as ferramentas baseadas no Linux para a pasta /mnt/d/projects/someproject/ .

Certifique-se de atualizar suas compilações do Windows periodicamente, pois elas parecem estar corrigindo muitos problemas em cada compilação, especialmente em torno de links sym e cruzando limites de FS entre Linux / Windows.

    
por 04.06.2016 / 01:40
13

@ scottt732 respondeu lindamente.

Apenas uma dica para desenvolvedores que trabalhariam no Windows e gostariam de acessar esses arquivos no Linux Subsystem rapidamente. Você pode usar links simbólicos .

Por exemplo, se você estiver trabalhando em um projeto em d:/projects/web-project , você pode criar um link simbólico no local /var/www/web-project e todos os arquivos que você alterar no Windows estarão prontamente disponíveis para serem acessados no Linux Bash.

Para isso, você usará o comando ln como este

ln -s  /mnt/d/projects/web-project  /var/www/web-project

Na linha acima, /mnt/d deveria ser a sua unidade d no Windows. Configure seu host virtual Apache para esse caminho e você estará pronto para usar.

    
por 07.04.2017 / 16:30
8

Recomendamos que você não copiam / criam / atualizam arquivos do Linux usando aplicativos do Windows .

Em vez disso, armazene arquivos no sistema de arquivos do Windows (por exemplo, c:\dev\project ) que você deseja editar arquivos usando ferramentas do Windows e / ou compilar / testar / executar usando ferramentas / tempos / plataformas do Linux (por exemplo, /mnt/c/dev/project ). / p>

Em seu cenário específico, se você quiser copiar os arquivos do Cygwin para o Bash, abra o Bash e copie os arquivos da pasta do Cygwin no C: para ~/ , assim: cp /mnt/c/Users/dave/Documents/Cygwin/* ~/ )

HTH.

    
por 09.04.2017 / 21:50
0

Eu tive uma necessidade semelhante de copiar arquivos entre o WSL e o win10. Eu acabei habilitando o sshd na instalação do Ubuntu para que eu pudesse ssh no Linux a partir do win10. Então eu uso o winscp para copiar arquivos para frente e para trás. Não é o ideal, mas não copio arquivos com muita frequência. Tentei encontrar o post que usei para ativar o sshd, mas não consigo localizá-lo.

    
por 03.08.2018 / 09:00