คัดลอกไฟล์จาก Windows ไปยังระบบย่อย Ubuntu [ปิด]


105

ฉันเปิดใช้งานโหมดนักพัฒนาและติดตั้งBash on Ubuntu on Windowsแล้ว

โฮมไดเร็กทอรีของฉันสามารถพบได้ภายใต้%localappdata%\Lxss\home\<ubuntu.username>\ฉันได้สร้างไดเร็กทอรีย่อยชื่อ Pictures เพื่อให้เส้นทางแบบเต็มควรเป็น

บน windows: C:\Users\<windows.username>\AppData\Local\lxss\home\<ubuntu.username>\Pictures

เมื่อทุบตี: /home/<ubuntu.username>/Pictures

ถ้าฉันสร้างไฟล์จาก bash โดยใช้คำสั่งtouch hello.txtฉันสามารถดูไฟล์นี้ได้อย่างอิสระใน Windows UI และคัดลอกไปยังเดสก์ท็อปของฉัน แต่ถ้าฉันจะสร้างแฟ้มข้อความใหม่จากหน้าต่าง UI และบันทึกไว้ในแม้ว่าผมจะรีสตาร์ททุบตีหรือหน้าต่างไฟล์ไม่สามารถมองเห็นได้เมื่อฉันทำC:\Users\<windows.username>\AppData\Local\lxss\home\<ubuntu.username>\Picturesls -l

ทำไม bash ไม่เห็นไฟล์ที่สร้างจากฝั่ง Windows ในโฮมไดเร็กทอรีของตัวเอง

การแก้ไขการใช้/mnt/cไม่ใช่วิธีแก้ปัญหาฉันพยายามทำความเข้าใจว่าเหตุใดจึงไม่เห็นไฟล์เหล่านั้นและหากมีวิธีแก้ไขเพื่อให้สามารถมองเห็นไฟล์ที่สร้าง UI แทนที่จะพยายามใช้เทอร์มินัลเพื่อคัดลอก - วางหรือย้ายไฟล์ไป


2
น่าสนใจ! การเดาของฉัน - และเป็นเพียงการคาดเดา - คือระบบย่อย Linux ติดตามไฟล์ของตัวเองและไม่เคยดูว่ามีการเพิ่มอื่น ๆ นั่นจะเป็นเรื่องที่สมเหตุสมผลเพราะมิฉะนั้นจะเป็นการยากที่จะให้ความหมาย UNIX ของระบบไฟล์เสมือนสำหรับสิ่งต่างๆเช่นการลบไฟล์และความไวของตัวพิมพ์ ฉันสงสัยว่าคุณจะพบว่าถ้าคุณสร้างhello.txtและHELLO.TXTจาก Bash ไฟล์ใดไฟล์หนึ่งจะอยู่ภายใต้ชื่ออื่นเมื่อคุณดูใน Windows
Harry Johnston

Stack Overflow เป็นไซต์สำหรับคำถามเกี่ยวกับการเขียนโปรแกรมและการพัฒนา คำถามนี้ดูเหมือนจะไม่ตรงประเด็นเนื่องจากไม่เกี่ยวกับการเขียนโปรแกรมหรือการพัฒนา ดูหัวข้อที่ฉันสามารถถามได้ที่นี่ในศูนย์ช่วยเหลือ บางทีSuper UserหรือUnix & Linux Stack Exchangeอาจเป็นสถานที่ที่ดีกว่าในการถาม ดูเพิ่มเติมที่ฉันจะโพสต์คำถามเกี่ยวกับ Dev Ops ได้ที่ไหน
jww

ตามที่ @HarryJohnston ควรชื่อจะแตกต่างกัน ทั้งยาวและสั้น แต่ในกรณีนี้แม้แต่ตัวสั้น (!)
Serhii Kheilyk

ฉันโหวตให้ปิดคำถามนี้เป็นนอกประเด็นเพราะเกี่ยวข้องกับชุมชน ask-ubuntu
OmG

2
@jpaugh ฉันรู้ แต่คำถามนี้มีเหตุผลสำหรับสถานการณ์ที่ถาม Ubuntu ไม่ใช่นอกประเด็น
OmG

คำตอบ:


166

คุณควรจะสามารถเข้าถึงระบบ windows ของคุณภายใต้/mntไดเร็กทอรี ตัวอย่างเช่นภายใน bash ใช้สิ่งนี้เพื่อไปยังไดเร็กทอรีรูปภาพของคุณ:

cd /mnt/c/Users/<ubuntu.username>/Pictures

หวังว่านี่จะช่วยได้!


ฉันเชื่อว่าคุณเข้าใจผิด ฉันมี JPG บนเดสก์ท็อปของฉันฉันคัดลอกด้วย UI ไปยังไดเรกทอรีระบบย่อย bash ฉันพยายามทำความเข้าใจว่าทำไม bash ไม่เห็นภาพเหล่านั้นเมื่ออยู่ในโฮมไดเร็กทอรี นี่คือพฤติกรรมพื้นฐานของ cygwin ลากและวางหรือคัดลอกวางไฟล์โดยไม่ต้องอาศัยคำสั่ง linux ในการทำงาน
JordanGS

คุณอาจอยู่ในโฟลเดอร์ที่ไม่ถูกต้อง
zoecarver

ระบบย่อย Linux ไม่มีเกณฑ์การออกแบบเช่นเดียวกับ Cygwin คุณไม่จำเป็นต้องคาดหวังให้พวกเขามีพฤติกรรมเหมือนกัน
Harry Johnston

มันใช้งานได้สำหรับฉันแม้ว่าubuntu.usernameจะไม่จำเป็นต้องใช้ชื่อผู้ใช้สำหรับ windows .. อย่างน้อยก็ไม่ใช่กรณีสำหรับฉัน;)
user2804070

1
รักคุณสำหรับสิ่งนี้
Gubatron

54

คุณควรเข้าถึงระบบไฟล์ Linux (ที่อยู่ในโฟลเดอร์ lxss) จากภายใน WSLเท่านั้นอย่าสร้าง / แก้ไขไฟล์ใด ๆ ในโฟลเดอร์ lxss ใน Windows - มันอันตรายและ WSL จะไม่เห็นไฟล์เหล่านี้

ไฟล์สามารถแชร์ระหว่าง WSL และ Windows แม้ว่า; วางไฟล์ไว้นอกโฟลเดอร์ lxss คุณสามารถเข้าถึงได้ผ่าน drvFS ( /mnt) เช่น/mnt/c/Users/yourusername/filesภายใน WSL ไฟล์เหล่านี้ยังคงซิงค์ระหว่าง WSL และ Windows

สำหรับรายละเอียดและเหตุผลโปรดดู: https://blogs.msdn.microsoft.com/commandline/2016/11/17/do-not-change-linux-files-using-windows-apps-and-tools/


ดูยังสนับสนุนระบบ WSL ไฟล์
Harry Johnston

1
ใน WSL File System Supportจะอธิบายว่าเหตุใดจึงเกิดพฤติกรรม: ไฟล์ "การแปล" เสร็จสิ้นในระบบย่อย lsxx (ทางด้าน linux) เท่านั้น
Chris Buck

บน linux VM ฉันสามารถใช้ SFTP เพื่อถ่ายโอนไฟล์ได้ฉันจะใช้อะไรในการถ่ายโอนไฟล์อย่างถูกต้องจาก Window ไปยังระบบย่อย linux สิ่งนี้ไม่ได้ให้วิธีแก้ปัญหา
Ambroise Rabier

1
@AmbroiseRabier ใน WSL เวอร์ชันล่าสุดให้ใช้ SFTP ไฟล์ tar หรือโปรโตคอล 9p ในตัว
Reker
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.