เหตุใดจึงมีพื้นที่พิเศษเมื่อฉันพิมพ์“ ls” ในไดเรกทอรี Desktop


27

เพิ่งออกมาจากความอยากรู้อยากเห็นฉันสงสัยว่ามีเหตุผลสำหรับพื้นที่พิเศษเมื่อฉันพิมพ์lsในไดเรกทอรี Desktop เปรียบเทียบ...

~/Desktop$ ls
 file1 file2 file3

... เพื่อ ...

~/Documents$ ls
file1 file2 file3

โปรดสังเกตว่าเมื่อฉันพิมพ์lsบนเดสก์ท็อปฉันจะได้รับพื้นที่พิเศษที่จุดเริ่มต้นของบรรทัด (ไม่ใช่ส่วนหนึ่งของชื่อไฟล์) ฉันไม่พบตำแหน่งตัวอย่างอื่น ๆ ที่ฉันได้รับพื้นที่พิเศษนี้ในตอนต้นของบรรทัด ใครบ้างที่ได้รับสิ่งนี้ มีเหตุผลหรือไม่?

NB: ฉันใช้ Ubuntu Bionic Beaver LTS และเทอร์มินัลเริ่มต้นที่มาพร้อมกับมัน


ฉันไม่มีสิ่งนี้ ถ้าฉันสร้างไฟล์ที่มีช่องว่างเป็นชื่อ ( touch " ") ฉันมีช่องว่างสองช่องอยู่ข้างหน้า
pLumo

6
รันls -laแทนหรือfind -type f -printf "file: -%P-\n"และจัดเตรียมเอาต์พุต มีแนวโน้มว่าไฟล์ที่มีอักขระที่ไม่สามารถพิมพ์ได้ การระบายสีไฟล์อาจมีผลกับมันด้วยดังนั้นลอง\lsหรือdirสั่ง
Sergiy Kolodyazhnyy

ฉันไม่เห็นไฟล์ใด ๆ ที่มีตัวอักษรที่พิมพ์ไม่ได้เมื่อฉันลองคำแนะนำ 2 ข้อแรกของคุณ ฉันยังมีที่ว่างเมื่อฉันลอง \ ls แต่ไม่ใช่เมื่อฉันใช้ dir ...
Bart

35
แสดงผลลัพธ์ที่แท้จริงของคุณ
Lightness Races กับโมนิก้า

คำตอบ:


85

ช่องว่างเพิ่มเติมจะปรากฏขึ้นเมื่อคุณมีชื่อไฟล์ในไดเรกทอรีที่ต้องการแก้ไข'(เช่นชื่อไฟล์ที่มีช่องว่างหรืออักขระพิเศษอื่น ๆ )

~/mytmp$ ls
 a           'file(abc)'         proyecto3.csv   test         Test.sh
 b           'file(ab,c?).mp4'   rootfile        Test1.txt    Test.zip
 F26         'file(abc?).mp4'    scr             Test2.test   vowels
 Feb          guess              script          Test2.txt
'Feb 26 xx'   hw                 something       test.rar

หลังจากลบไฟล์ 'แปลก' ฉันได้รับ:

~/mytmp$ ls
a    guess  proyecto3.csv  script     test        Test2.txt   Test.sh
b    hw     rootfile       something  Test1.txt   test.rar    Test.zip
F26  loop   scr            speak      Test2.test  testscript  vowels

ขอบคุณสำหรับคำอธิบาย - ฟังดูถูกต้องสำหรับฉัน สิ่งที่ทำให้ฉันเห็นคือพื้นที่พิเศษที่จุดเริ่มต้นของบรรทัดไม่จำเป็นต้องอยู่หน้าไฟล์ที่มีอักขระพิเศษ แต่ฉันเดาว่านี่จะทำเพื่อให้การนำเสนอที่ชัดเจนยิ่งขึ้นในเทอร์มินัล ขอขอบคุณอีกครั้ง
Bart

53

ผมค่อนข้างมั่นใจว่าfile1 file2 file3ไม่ได้เป็นสิ่งที่ตรงกับที่แสดงบนหน้าจอของคุณ คุณละเว้นข้อมูลอันมีค่า (ชื่อไฟล์จริง) ที่อาจเกี่ยวข้องได้ง่าย

สมมติฐานของฉันคือคุณมีชื่อไฟล์ที่มีช่องว่างหรืออักขระพิเศษอื่น ๆ

Coreutils รุ่นที่ใหม่กว่าlsอ้างอิงชื่อไฟล์ดังกล่าวโดยทั่วไปจะอยู่ในเครื่องหมายคำพูดเดี่ยว นอกจากนี้หากมีไฟล์อย่างน้อยหนึ่งไฟล์ที่ต้องการข้อความเช่นนั้นจะเพิ่มช่องว่างด้านหน้าชื่อไฟล์อื่น ๆ ทั้งหมดเพื่อให้พวกเขาจัดตำแหน่ง "อย่างดี" หากพวกเขาอยู่ภายใต้ซึ่งกันและกันนั่นคือเครื่องหมายคำพูดเดี่ยว (เครื่องหมายอัญประกาศเดี่ยว) คือ ละเว้นสำหรับการจัดตำแหน่ง

ดู--quoting-styleและ-Nในหน้าคู่มือของlsสำหรับรายละเอียดเพิ่มเติมบางส่วนและส่วน "การจัดรูปแบบชื่อไฟล์" ในหน้าข้อมูลเพื่อดูรายละเอียดเพิ่มเติม คุณอาจพิจารณาเช่น aliasing เพื่อlsls -N

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