Como fazer operações com arquivos no Ubuntu no Windows com o explorer?

4

Usando o Bash no Ubuntu no Windows 10 sei que minha pasta pessoal está localizada em C:\Users\<username>\AppData\Local\lxss\home\ e todas as outras coisas estão em algum lugar lá também.

Quando copio coisas para ...\lxss\home com o Windows Explorer, ele não aparece no bash. Talvez sistemas de arquivos, talvez permissões? Tudo bem, deixe-me apenas copiar coisas de \mnt\c\... depois via bash. Obras.

Agora, só quero editar um arquivo weirdfile.txt no meu diretório pessoal. Eu abri-lo com o Windows Notepad, editá-lo, salve-o - se foi de bash. Fisicamente ainda posso vê-lo por aí na pasta com o Windows Explorer, mas no bash ele se foi. Não oculto. o sudo não ajuda. Começar o bash como admin não ajuda.

Etapas para reproduzir

  1. Copiar pasta para C:\Users\<username>\AppData\Local\lxss\home\ com o Windows Explorer
  2. Verifique o diretório inicial com Bash no Ubuntu no Windows (bash) ls -a
  3. Observe que a pasta não existe
  4. Repita as etapas de 1 a 3 com um arquivo de texto normal
  5. Criar pasta no bash mkdir TestFolder
  6. Verifique C:\Users\<username>\AppData\Local\lxss\home\ com o Windows Explorer
  7. Observe que a pasta existe
  8. Repita as etapas de 5 a 7 para um arquivo normal touch somefile.txt
  9. Abra somefile.txt com seu editor de texto favorito e faça algumas alterações
  10. Observe que somefile.txt desapareceu ( ls -a ) quando analisado no bash.

O que está acontecendo aqui? Dê uma olhada no sistema de arquivos virtualizado e me diga como trabalhar com arquivos no Windows. SSH em localhost e editar arquivos via SCP? Não, obrigada. Posso apenas trabalhar com arquivos com as ferramentas Explorer / Windows, por favor?

Eu posso fazer uma melhor:

ln -s /mnt/c/Users/<username>/Desktop/weirdfile.txt /~/weirdfile.txt

Funciona. Nunca desaparece. Eu posso trabalhar com o arquivo com ferramentas do Windows. O mundo é um lugar melhor. Infelizmente o Bash no Windows parece não entender os links simbólicos / links do Windows, então eu tenho que ligar tudo de forma simbólica a partir do bash.

PS: Parece estranho marcar uma pergunta com o "ubuntu" e com "windows".

    
por Dennis G 20.09.2016 / 17:58

1 resposta

4

Então, Jack Hammons, gerente de programas da Microsoft, vinculou a esse grande recurso oficial: link

O problema é que estou sem sorte (um pouco editado no link acima):

  

Enquanto os arquivos [WSL] são armazenados em arquivos comuns no Windows no   diretórios mencionados acima, interoperabilidade com o Windows não é   suportado . Se um novo arquivo for adicionado a um desses diretórios   O Windows [WSL] simplesmente o ignora. Muitos editores também   tira os [Extended Attributes, que são usados para armazenar metadados do WSL] ao salvar um arquivo existente, novamente fazendo o arquivo   inutilizável no WSL .

     

Além disso, como [WSL] armazena em cache as entradas de diretório, as modificações feitas em   os diretórios que são feitos a partir do Windows enquanto o WSL está sendo executado   não ser refletido com precisão .

Assim, mesmo que eu possa ver os arquivos / pastas em C:\Users\<username>\AppData\Local\lxss\home\ , eu não deveria interagir com eles no Windows.

Em links simbólicos:

  

Embora o NT suporte links simbólicos, não podemos confiar nesse suporte   porque os links simbólicos criados pelo WSL podem apontar para caminhos como / proc   que não têm significado no Windows.

Uma questão permanece: Quando a conexão simbólica de arquivos de algum lugar em /mnt/c/ , tudo parece funcionar bem tanto no Windows quanto no WSL. Então, agora eu tenho várias pastas linkadas de Meus Documentos na minha pasta pessoal do WSL. Estou bagunçando as coisas?

EDIT: Rich Turner foi tão gentil em colocar essa informação em um post semi-oficial aqui link . Embora não especificado, minha idéia de link simbólico parece ser uma boa maneira, já que as partições NTFS montadas são tratadas de maneira diferente.

    
por Dennis G 23.09.2016 / 14:59

Tags