En el directorio raíz de mi unidad flash USB, a veces cuando ejecuto ls, la salida es normal y enumera los archivos. En otras ocasiones, la salida es simplemente una línea:
$ ls
.
Si lo intento ls -laen uno de esos momentos, obtengo esto:
$ ls -la
ls: .: Invalid argument
Si corro lsuna y otra vez varias veces, parece devolver la salida normal o la anormal básicamente al azar.
lsparece funcionar normalmente en otros directorios. ls $drivenameincluso parece funcionar bien desde el directorio principal, y ls ..parece funcionar bien desde un directorio secundario. (Aunque no puedo estar 100% seguro de los que "funcionan normalmente" ya que el comportamiento es indeterminado al principio). Probé otras dos unidades USB externas y obtuve el mismo comportamiento.
¿Que está pasando aqui? Estoy en Mac OS X 10.11.3.
Editar: Buena idea, pero parece que no estoy usando un alias, y /bin/lsda el mismo resultado.

/bin/ls?/bin/lsda el mismo resultado, a veces dando salida..lsparece funcionar normalmente en otros directorios.ls NO\ NAMEincluso parece funcionar bien desde el directorio principal, yls ..parece funcionar bien desde un directorio secundario. (Aunque no puedo estar 100% seguro de los que "funcionan normalmente" ya que el comportamiento es indeterminado para empezar).lsestás usando?/bin/ls --versiondebería funcionarRespuestas:
Puede ser un error en el controlador del sistema de archivos para FAT32 en versiones recientes de OSX. Esto también parece ocurrir cuando el directorio de trabajo está en la raíz de la unidad montada. Si está en un subdirectorio o en cualquier otro lugar del sistema, las cosas parecen funcionar.
Hay una discusión interesante en este hilo que incluye rastros del sistema. https://github.com/robbyrussell/oh-my-zsh/issues/4161
fuente
SOLUCIÓN: (probablemente parte de lo que agradecería el autor de la pregunta, incluso si no lo pidieran específicamente)
Consulte el directorio actual en casi cualquier otra forma que no sea
.. Ejemplo:cda un subdirectorio y luego ejecutarlsen el directorio principal. Es decir, ingrese algo como esto:mkdir S; cd S ; /bin/ls -al ..O refiérase a él por su nombre de ruta completo. Ejemplo:
ls /Volumes/microSD007Para mí, cualquiera de estas soluciones funciona (es decir, dan como resultado la salida esperada) cuando
lsme da la misma salida incorrecta que informó el OP. (Y para mí, no hay salida en dmesg cuandolsactúa de manera extraña).Estoy viendo el mismo mal funcionamiento en 10.12.6 en Terminal.app ejecutando bash. Lo mismo en
cshesh, incluso después de configurar TERM en vt100. Esta solución también funciona en esos depósitos.Y estoy de acuerdo en que hay un error
stat64, como se indica en elzshhilo del problema al que Neil nos señala. (Pensé que el problema era causado por una memoria flash defectuosa y / o falsa, y aún me pregunto si eso es un factor a veces).Noté que este error también afecta:
ls, ylscuando se usa en el modo shell de Emacs.fuente
Si a veces extrae la unidad, la respuesta es que cada vez que reinserta la unidad, debe volver al directorio utilizando cd. Esto se debe a que el descriptor de archivo abierto por su shell para leer el directorio se invalida cuando se extrae la unidad, y no se reinicializa automáticamente cuando se reinserta la unidad (aunque haya utilizado la unidad en otro terminal o administrador de archivos).
Si la unidad nunca se extrae, puede ser un problema de hardware o quizás algún software que desmonte la unidad por algún motivo; Debe proporcionar los registros del sistema.
fuente