ทำไม * ไม่ * แยก `ls '(และจะทำอะไรแทน)
ฉันเห็นคำตอบที่อ้างถึงลิงก์นี้อย่างสม่ำเสมอโดยระบุอย่างชัดเจนว่า"อย่าแยกวิเคราะห์ls" เรื่องนี้ทำให้ฉันรำคาญด้วยเหตุผลสองประการ: ดูเหมือนว่าข้อมูลในลิงก์นั้นได้รับการยอมรับโดยขายส่งด้วยคำถามเล็กน้อย แต่ฉันสามารถเลือกข้อผิดพลาดอย่างน้อยสองสามข้อในการอ่านแบบไม่เป็นทางการ ดูเหมือนว่าปัญหาที่ระบุไว้ในลิงค์นั้นไม่ได้ก่อให้เกิดความปรารถนาที่จะหาทางแก้ไข จากย่อหน้าแรก: ... เมื่อคุณขอ[ls]รายการไฟล์มีปัญหาใหญ่: Unix อนุญาตให้ตัวละครเกือบทุกตัวในชื่อไฟล์รวมถึงช่องว่าง, newlines, จุลภาค, สัญลักษณ์ท่อและสิ่งอื่น ๆ ที่คุณเคยลองใช้เป็น ตัวคั่นยกเว้น NUL ... lsแยกชื่อไฟล์ด้วยการขึ้นบรรทัดใหม่ สิ่งนี้ใช้ได้จนกว่าคุณจะมีไฟล์ที่มีการขึ้นบรรทัดใหม่ในชื่อ และเนื่องจากผมไม่ทราบว่าการดำเนินการใด ๆlsที่ช่วยให้คุณสามารถที่จะยุติชื่อไฟล์ที่มีตัวอักษร NUL lsแทนการขึ้นบรรทัดใหม่นี้จะทำให้เราไม่สามารถที่จะได้รับรายชื่อของชื่อไฟล์ได้อย่างปลอดภัยด้วย คนเกียจคร้านใช่มั้ย วิธีที่เคยเราสามารถจัดการกับการขึ้นบรรทัดใหม่ยกเลิกชุดจดทะเบียนสำหรับข้อมูลที่อาจมีการขึ้นบรรทัดใหม่? ถ้าคนที่ตอบคำถามในเว็บไซต์นี้ไม่ได้ทำสิ่งนี้ทุกวันฉันอาจคิดว่าเรากำลังมีปัญหา ความจริงก็คือlsการใช้งานส่วนใหญ่ให้ api ที่ง่ายมากสำหรับการแยกวิเคราะห์ผลลัพธ์ของพวกเขาและเราทุกคนได้ทำมันมาตลอดโดยไม่ได้ตระหนักถึงมัน ไม่เพียง แต่คุณสามารถจบชื่อไฟล์ด้วย null คุณสามารถเริ่มต้นด้วย null ได้เช่นกันหรือกับสตริงอื่น ๆ ที่คุณอาจต้องการ มีอะไรมากกว่าที่คุณสามารถกำหนดสตริงพลเหล่านี้ต่อไฟล์ชนิด โปรดพิจารณา: LS_COLORS='lc=\0:rc=:ec=\0\0\0:fi=:di=:' ls -l --color=always | cat -A total 4$ drwxr-xr-x …