Pourquoi «ls» affiche-t-il sporadiquement uniquement «.» dans le répertoire racine d'un disque externe?


9

Dans le répertoire racine de ma clé USB, parfois lorsque je lance ls, la sortie est normale et elle répertorie les fichiers. À d'autres moments, la sortie est simplement une ligne:

$ ls
.

Si j'essaye ls -laà l'un de ces moments, j'obtiens ceci:

$ ls -la
ls: .: Invalid argument

Si je cours lsplusieurs fois de suite, il semble renvoyer la sortie normale ou la sortie anormale essentiellement au hasard.

lssemble fonctionner normalement dans d'autres répertoires. ls $drivenamesemble même fonctionner correctement à partir du répertoire parent et ls ..semble fonctionner correctement à partir d'un répertoire enfant. (Bien que je ne puisse pas être sûr à 100% de ceux qui "fonctionnent normalement" car le comportement est indéterminé pour commencer.) J'ai essayé deux autres lecteurs USB externes et j'ai eu le même comportement.

Que se passe t-il ici? Je suis sur Mac OS X 10.11.3.

Edit: Belle idée, mais je ne semble pas utiliser d'alias, et /bin/lsdonne le même résultat.


2
Ce comportement inhabituel peut être le résultat d'un alias défectueux. Que se passe-t-il si vous utilisez /bin/ls?
DopeGhoti

ls fonctionne-t-il correctement dans d'autres répertoires?
Liam

/bin/lsdonne le même résultat, parfois en sortie .. lssemble fonctionner normalement dans d'autres répertoires. ls NO\ NAMEsemble même fonctionner correctement à partir du répertoire parent et ls ..semble fonctionner correctement à partir d'un répertoire enfant. (Bien que je ne puisse pas être sûr à 100% de ceux qui "fonctionnent normalement" car le comportement est indéterminé pour commencer.)
leekaiinthesky

Quel système de fichiers utilisez-vous dans ces lecteurs flash? Peut-être est-ce une anomalie dérivée d'un système de fichiers basé sur
Windows

Quelle version lsutilisez-vous? /bin/ls --versiondevrait fonctionner
RSFalcon7

Réponses:


6

Il peut s'agir d'un bogue dans le pilote du système de fichiers pour FAT32 sur les versions récentes d'OSX. Cela semble également se produire uniquement lorsque le répertoire de travail se trouve à la racine du lecteur monté. Si c'est dans un sous-répertoire ou n'importe où ailleurs sur le système, les choses semblent fonctionner.

Il y a une discussion intéressante dans ce fil, y compris les traces du système. https://github.com/robbyrussell/oh-my-zsh/issues/4161


2

CONTOURNEMENT: (probablement une partie de ce que le demandeur apprécierait même s'il ne l'a pas spécifiquement demandé)

Reportez-vous au répertoire actuel de presque n'importe quelle autre manière que .. Exemple:

cddans un sous-répertoire, puis exécutez lssur le répertoire parent. Autrement dit, entrez quelque chose comme ceci:

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

Ou référez-vous à son nom de chemin complet. Exemple:

ls /Volumes/microSD007

Pour moi, l'une de ces solutions de contournement fonctionne (c'est-à-dire qu'elles aboutissent à la sortie attendue) quand lsme donne la même sortie erronée que l'OP a signalée. (Et pour moi, il n'y a pas de sortie dans dmesg quand il lsagit bizarrement.)

Je vois les mêmes dysfonctionnements sur 10.12.6 dans Terminal.app exécutant bash. Idem dans cshet shmême après avoir défini TERM sur vt100. Cette solution de contournement fonctionne également dans ces coquilles.

Et je suis d'accord qu'il y a un bogue stat64, comme indiqué dans le zshfil de discussion que Neil nous indique. (Je pensais que le problème était dû à une mémoire flash défectueuse et / ou fausse, et je me demande toujours si c'est un facteur parfois.)

J'ai remarqué que ce bug affecte également:

  • Le mode Dired d'Emacs, car il appelle ls, et
  • ls lorsqu'il est utilisé en mode shell d'Emacs.

2
Je ne comprends pas pourquoi Goro a effectué les modifications, et aucun résumé de modification n'a été fourni. Je pense qu'ils ont aggravé la réponse, et maintenant je vois qu'elle a reçu un -1. J'ai fourni une solution de contournement, la suppression de mon indicateur de «solution de contournement» donne l'impression que je réclame / tente de fournir une réponse directe. Je pense que je propose plus qu'un commentaire, mais moins qu'une réponse. N'est-ce pas à encourager? Je suis identifié un nouveau; un résumé d'édition et une raison pour le -1 ne seraient-ils pas appropriés? Goro a également supprimé une réponse plus courte et meilleure que j'avais ajoutée. Je ne comprends pas.
Matthew Elvey

1
Je suis sur la clôture; généralement, les réponses doivent répondre à la question, non seulement fournir plus d'informations, mais contourner le problème fait probablement partie de ce que le demandeur recherchait même s'il ne l'a pas mentionné spécifiquement. La plupart des modifications semblent plutôt inutiles, et au moins une perturbe définitivement le formatage, alors je les ai annulées. Je ne sais pas si le message a déjà eu un downvote, mais il est actuellement à 2 upvotes et 0 downvotes
Michael Mrozek

0

Si vous supprimez parfois le lecteur, la réponse est que chaque fois que vous réinsérez le lecteur, vous devez retourner dans le répertoire à l'aide de cd. En effet, le descripteur de fichier ouvert par votre shell pour lire le répertoire est invalidé lorsque le lecteur est supprimé et n'est pas réinitialisé automatiquement lorsque le lecteur est réinséré (même si vous avez peut-être utilisé le lecteur dans un autre terminal ou gestionnaire de fichiers).

Si le lecteur n'est jamais retiré, il peut s'agir d'un problème matériel ou d'un logiciel qui démonte le lecteur pour une raison quelconque; vous devez fournir les journaux système.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.