Чому "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

чи добре працює в інших каталогах?
Ліам

/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/isissue/4161


2

РОБОТА: (напевно, частина того, що запитувач оцінив би, навіть якщо вони цього спеціально не просили)

Зверніться до поточного каталогу практично будь-яким іншим способом, ніж .. Приклад:

cdу підкаталог, а потім запустіть lsу батьківському каталозі. Тобто введіть щось подібне:

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

Або зверніться до нього за повної назвою шляху. Приклад:

ls /Volumes/microSD007

Для мене, будь-який із цих обхідних завдань працює (тобто вони призводять до очікуваного результату), коли lsдає мені той самий неправильний висновок, про який повідомляв ОП. (А для мене немає виводу в dmesg, коли це lsдіє дивно.)

Я бачу ті самі несправності 10.12.6 в Terminal.app, що працює bash. Те ж саме в cshі sh, навіть після установки TERM в vt100. Це вирішення працює і в цих оболонках.

І я погоджуюсь з помилкою stat64, як зазначено в zshтемі випуску, на яку вказує Ніл. (Я думав, що проблема спричинена несправними та / або фальшивими флеш-пам’яттю, і досі дивуюсь, чи це іноді чинник.)

Я помітив, що ця помилка також впливає на:

  • Emacs перенаправлений режим, тому що він викликає lsі
  • ls коли він використовується в режимі оболонки Emacs.

2
Я не розумію, чому Горо вніс зміни, і резюме редагування не було надано. Я думаю, що вони погіршили відповідь, і тепер я бачу, що вона отримала -1. Я надав обхідне рішення, якщо видалити мій індикатор "обхідного шляху", схоже, я вимагаю прямої відповіді. Я думаю, що пропоную більше коментарів, але менше відповіді. Чи не варто це заохочувати? Я визначив нового; Чи не підходить підсумок редагування та причина -1? Горо також видалив більш коротку, кращу відповідь, яку я додав. Я не розумію.
Меттью Елві

1
Я на паркані; як правило, відповіді потрібно відповісти на запитання, а не просто надати більше інформації, але вирішення проблеми, ймовірно, є частиною того, що шукав запитувач, навіть якщо вони конкретно не згадували про це. Більшість редагувань видаються непотрібними, і принаймні одна однозначно псує форматування, тому я повернув їх назад. Я не впевнений, чи був цей пост колись зниженим, але наразі це 2 оновлення та 0 потік
Майкл Мрозек

0

Якщо ви іноді видаляєте накопичувач, то відповідь полягає в тому, що кожного разу, коли ви знову вставляєте диск, ви повинні повертатися до каталогу за допомогою cd. Це пояснюється тим, що дескриптор файлу, відкритий вашою оболонкою для читання каталогу, недійсний під час видалення диска, і він не повторно ініціалізується при повторному введенні диска (навіть якщо ви могли використовувати диск в іншому терміналі чи файловому менеджері).

Якщо диск ніколи не видаляється, це може бути проблема з обладнанням або, можливо, якесь програмне забезпечення, яке дещо відключає накопичувач; вам слід надати системні журнали.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.