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 -la
en uno de esos momentos, obtengo esto:
$ ls -la
ls: .: Invalid argument
Si corro ls
una y otra vez varias veces, parece devolver la salida normal o la anormal básicamente al azar.
ls
parece funcionar normalmente en otros directorios. ls $drivename
incluso 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/ls
da el mismo resultado.
/bin/ls
?/bin/ls
da el mismo resultado, a veces dando salida.
.ls
parece funcionar normalmente en otros directorios.ls NO\ NAME
incluso 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).ls
estás usando?/bin/ls --version
deberí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:cd
a un subdirectorio y luego ejecutarls
en 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/microSD007
Para mí, cualquiera de estas soluciones funciona (es decir, dan como resultado la salida esperada) cuando
ls
me da la misma salida incorrecta que informó el OP. (Y para mí, no hay salida en dmesg cuandols
actúa de manera extraña).Estoy viendo el mismo mal funcionamiento en 10.12.6 en Terminal.app ejecutando bash. Lo mismo en
csh
esh
, 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 elzsh
hilo 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
, yls
cuando 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