ชื่อไฟล์ที่มีช่องว่างแสดงเป็น 'ชื่อไฟล์' หลังจากอัปเกรดเป็น 18.04


23

หลังจากการปรับรุ่นเพื่อ 18.04 จาก 16.04 'file name'ชื่อไฟล์ทั้งหมดที่มีการแสดงให้เห็นช่องว่างที่เป็น file nameก่อนหน้านี้มันเป็นเพียง ชื่อไฟล์ที่ไม่มีช่องว่างปรากฏขึ้นตามปกติ:

$ ls
 bar  'foo bar'

แม้ว่ามันจะไม่ส่งผลกระทบต่อฟังก์ชันการทำงาน แต่อย่างใดฉันก็พบว่ามันรกสายตา

ฉันใช้bashเป็นเปลือก

ฉันจะลบการ''แสดงรอบชื่อไฟล์ด้วยช่องว่างได้อย่างไร


4
ทำไมคุณต้องการลบออกพวกเขาไม่ได้เป็นส่วนหนึ่งของชื่อไฟล์และอาจช่วยให้คุณจัดการชื่อไฟล์ด้วยช่องว่างในบรรทัดคำสั่งหรือในสคริปต์
Soren

2
ฉันรู้ว่าพวกเขาไม่ได้เป็นส่วนหนึ่งของชื่อไฟล์ แต่พวกมันดูรกและฉันไม่ต้องการมัน
vidarlo

4
@SorenA หากคุณใช้lsในการจัดการไฟล์ในสคริปต์ของคุณคุณกำลังทำผิด ทำไมคุณไม่ควรแยกวิเคราะห์ผลลัพธ์lsและทำไมไม่แยกวิเคราะห์ls(และควรทำอะไรแทน)
ของหวาน

2
@ WinEunuuchs2Unix มันทำให้การวางง่ายขึ้น แต่ตามคำตอบของคุณมันจะไม่เปลี่ยนพฤติกรรมเมื่อไม่ส่งออกไปยังเทอร์มินัล ...
vidarlo

2
@vidarlo lsผู้เขียนอย่างน้อยจัดการกับปัญหาบางอย่าง การรู้จักผู้เขียนนั้นมีส่วนร่วมใน Stack Exchange (ลิงก์ในคำตอบของฉัน) ใคร ๆ ก็สามารถแนะนำการปรับปรุงในอนาคตได้ง่ายขึ้น จากนั้นแสดงความคิดเห็น upvotes จากผู้ใช้รายอื่นจะสนับสนุนให้ผู้เขียนใช้คำแนะนำ
WinEunuuchs2Unix

คำตอบ:


33

นี้lsการเปลี่ยนแปลงพฤติกรรมจาก 2016แต่ในที่สุดก็ทำให้มันเป็นทางเข้าไปในอูบุนตู

ls -Nที่จะได้รับหลังการใช้พฤติกรรมเก่า

คุณสามารถเลือกใช้ตัวแปรสภาพแวดล้อม:

QUOTING_STYLE=literal ls

ทำให้มันเป็นนามแฝงหรือชุดexport QUOTING_STYLE=literalในของคุณ~/.bashrcเพื่อให้บรรลุพฤติกรรมเก่า

คุณสามารถอ่านลิงค์ด้านบนเพื่อดูรายละเอียดเพิ่มเติมรวมถึงประวัติของเวลาสถานที่สาเหตุและวิธีการทั้งหมดนี้มา มีความคิดเห็นค่อนข้างน้อยภายใต้ผู้เขียนการเปลี่ยนแปลง lsที่เขาปรับพฤติกรรมใหม่:

บางจุดเกี่ยวกับการเปลี่ยนแปลง

  • มันถูกนำมาใช้ใน coreutils v8.25 และการจัดตำแหน่งที่ดีขึ้นใน v8.26
  • มันจะเกิดขึ้นเฉพาะเมื่อส่งออกไปยังเทอร์มินัลดังนั้นจึงไม่ทำให้สคริปต์แตก
  • มันจะแก้ปัญหาเอาต์พุตสำหรับผู้ใช้สำหรับไฟล์ที่มีช่องว่าง
  • มัน sanitizes เอาท์พุทจึงปลอดภัยในการคัดลอกและวาง
  • ตอนนี้เอาต์พุตสามารถใช้เพื่อคัดลอกและวางกลับสู่เชลล์ได้เสมอ
  • ผู้ใช้สามารถรับกลับไปที่รูปแบบเก่าโดยการเพิ่ม-Nของพวกเขาlsนามแฝง

12

มันlsคือสิ่งที่ยกมาจากผลลัพธ์เรียกใช้:

ls -N

เพื่อรับผลลัพธ์โดยไม่มีการอ้างอิงใด ๆ

man ls

-N, - อักษร

พิมพ์ชื่อรายการโดยไม่ต้องอ้างอิง


ชื่อแทนถ้าคุณต้องการ:

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