เหตุใด“ ls” ส่งสัญญาณเป็นระยะ ๆ เท่านั้น“.” ในไดเรกทอรีรากของไดรฟ์ภายนอกหรือไม่


9

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

$ ls
.

ถ้าฉันลองls -laสักครั้งฉันก็จะได้สิ่งนี้:

$ ls -la
ls: .: Invalid argument

หากฉันlsย้อนกลับไปหลาย ๆ ครั้งดูเหมือนว่าจะส่งคืนเอาต์พุตปกติหรืออันที่ผิดปกติโดยการสุ่ม

lsดูเหมือนว่าจะทำงานได้ตามปกติในไดเรกทอรีอื่น ls $drivenameแม้ดูเหมือนว่าจะทำงานได้ดีจากไดเรกทอรีหลักและls ..ดูเหมือนว่าจะทำงานได้ดีจากไดเรกทอรีลูก (แม้ว่าฉันจะไม่แน่ใจ 100% ของคนที่ "ทำงานได้ตามปกติ" เนื่องจากพฤติกรรมนั้นไม่ได้กำหนดไว้ตั้งแต่ต้น) ฉันลองไดรฟ์ USB ภายนอกอีกสองตัวและมีพฤติกรรมแบบเดียวกัน

เกิดอะไรขึ้นที่นี่? ฉันใช้ Mac OS X 10.11.3

แก้ไข:แนวคิดที่ดี แต่ฉันดูเหมือนจะไม่ใช้นามแฝงและ/bin/lsให้ผลลัพธ์เหมือนกัน


2
พฤติกรรมที่ผิดปกตินี้อาจเป็นผลมาจากนามแฝงที่ชำรุด จะเกิดอะไรขึ้นถ้าคุณใช้/bin/ls?
DopeGhoti

ls ทำงานได้ดีในไดเรกทอรีอื่นหรือไม่
เลียม

/bin/lsให้ผลเหมือนกันบางครั้งก็เอาท์พุ.lsดูเหมือนว่าจะทำงานได้ตามปกติในไดเรกทอรีอื่น ls NO\ NAMEแม้ดูเหมือนว่าจะทำงานได้ดีจากไดเรกทอรีหลักและls ..ดูเหมือนว่าจะทำงานได้ดีจากไดเรกทอรีลูก (แม้ว่าฉันจะไม่แน่ใจ 100% ของคนที่ "ทำงานได้ตามปกติ" เนื่องจากพฤติกรรมไม่แน่นอนที่จะเริ่มต้น)
leekaiinthesky

คุณใช้ระบบไฟล์ใดในแฟลชไดรฟ์เหล่านั้น บางทีความผิดปกติบางอย่างมาจากระบบไฟล์ที่ใช้ Windows
RSFalcon7

คุณใช้เวอร์ชั่นlsอะไร /bin/ls --versionควรทำงาน
RSFalcon7

คำตอบ:


6

อาจเป็นข้อผิดพลาดในไดรเวอร์ระบบไฟล์สำหรับ FAT32 ใน OSX เวอร์ชั่นล่าสุด สิ่งนี้จะปรากฏขึ้นเฉพาะเมื่อไดเรกทอรีการทำงานอยู่ที่รูทของไดรฟ์ที่เมาท์ หากอยู่ในไดเรกทอรีย่อยหรือที่อื่น ๆ ในระบบสิ่งที่ดูเหมือนจะทำงาน

มีการสนทนาที่น่าสนใจในชุดนี้รวมถึงร่องรอยระบบ https://github.com/robbyrussell/oh-my-zsh/issues/4161


2

การหลีกเลี่ยงปัญหา: (อาจเป็นส่วนหนึ่งของสิ่งที่ผู้ถามจะขอบคุณแม้ว่าพวกเขาไม่ได้ถามเป็นพิเศษ)

อ้างถึงไดเรกทอรีปัจจุบันในเกือบวิธีอื่น ๆ .กว่าใด ตัวอย่าง:

cdไปยังไดเรกทอรีย่อยแล้วเรียกใช้lsบนไดเรกทอรีหลัก นั่นคือป้อนสิ่งนี้:

mkdir S; cd S ; /bin/ls -al ..

หรืออ้างถึงโดยใช้ชื่อพา ธ แบบเต็ม ตัวอย่าง:

ls /Volumes/microSD007

สำหรับฉันการแก้ไขปัญหาอย่างใดอย่างหนึ่งเหล่านี้ทำงาน (นั่นคือผลลัพธ์ในผลลัพธ์ที่คาดไว้) เมื่อlsให้ผลลัพธ์ที่ผิดพลาดแบบเดียวกันกับที่ OP รายงาน (และสำหรับฉันมันไม่มีเอาต์พุตเป็น dmesg เมื่อlsทำหน้าที่แปลก ๆ )

ฉันเห็นความผิดปกติเดียวกันใน 10.12.6 ใน Terminal.app ทำงานทุบตี เหมือนกันcshและshแม้หลังจากตั้งค่า TERM เป็น vt100 วิธีแก้ปัญหานี้ทำงานในเปลือกเหล่านั้นเช่นกัน

และฉันยอมรับว่ามีข้อผิดพลาดstat64ตามที่ระบุไว้ในzshหัวข้อปัญหา Neil ชี้ให้เราเห็น (ฉันคิดว่าปัญหาเกิดจากข้อบกพร่องและ / หรือหน่วยความจำแฟลชปลอมและยังคงสงสัยว่าเป็นปัจจัยในบางครั้ง)

ฉันสังเกตเห็นว่าข้อผิดพลาดนี้มีผลกับ:

  • โหมดที่น่าเบื่อของ Emacs เพราะมันเรียกlsและ
  • ls เมื่อมันถูกใช้ในโหมดเชลล์ของ Emacs

2
ฉันไม่เข้าใจว่าทำไม Goro จึงทำการแก้ไขและไม่มีการสรุปการแก้ไข ฉันคิดว่าพวกเขาทำให้คำตอบแย่ลงและตอนนี้ฉันเห็นว่ามันได้รับ -1 ฉันให้วิธีแก้ปัญหาโดยลบตัวบ่งชี้ 'วิธีแก้ปัญหา' ของฉันออกทำให้ดูเหมือนว่าฉันกำลังอ้างสิทธิ์ / พยายามให้คำตอบโดยตรง ฉันคิดว่าฉันเสนอมากกว่าความคิดเห็น แต่น้อยกว่าคำตอบ นั่นไม่ใช่สิ่งที่จะได้รับการส่งเสริมใช่หรือไม่ ฉันระบุใหม่ จะไม่สรุปการแก้ไขและเหตุผลสำหรับ -1 จะเหมาะสมหรือไม่ Goro ยังลบคำตอบที่สั้นกว่าและดีกว่าที่ฉันเพิ่มไว้ด้วย ฉันไม่เข้าใจ
Matthew Elvey

1
ฉันอยู่บนรั้ว โดยทั่วไปคำตอบจำเป็นต้องตอบคำถามไม่ใช่เพียงแค่ให้ข้อมูลเพิ่มเติม แต่การแก้ไขปัญหาอาจเป็นส่วนหนึ่งของสิ่งที่ผู้ถามหาแม้ว่าพวกเขาจะไม่ได้พูดถึงมันโดยเฉพาะ การแก้ไขส่วนใหญ่ดูเหมือนจะไม่จำเป็นและอย่างน้อยก็มีการจัดรูปแบบที่ยุ่งเหยิงดังนั้นฉันจึงย้อนกลับ ฉันไม่แน่ใจว่าโพสต์นั้นมี downvote หรือไม่ แต่ตอนนี้มันอยู่ที่ 2 upvotes และ 0 downvotes
Michael Mrozek

0

หากบางครั้งคุณลบไดรฟ์ออกมาคำตอบก็คือทุกครั้งที่คุณใส่ไดรฟ์เข้าไปใหม่คุณต้องกลับไปที่ไดเรคทอรีโดยใช้ cd นี่เป็นเพราะ file descriptor ที่เปิดโดยเชลล์ของคุณเพื่ออ่านไดเร็กทอรีนั้นไม่ถูกต้องเมื่อลบไดรฟ์และไม่ได้กำหนดค่าเริ่มต้นใหม่โดยอัตโนมัติเมื่อไดรฟ์ถูกแทรกเข้าไปใหม่ (แม้ว่าคุณอาจใช้ไดรฟ์ในเทอร์มินัลหรือ

หากไม่เคยนำไดรฟ์ออกอาจเป็นปัญหาฮาร์ดแวร์หรือซอฟต์แวร์บางตัวที่ unmount ไดรฟ์ด้วยเหตุผลบางอย่าง คุณควรจัดทำบันทึกระบบ

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