No diretório raiz da minha unidade flash USB, às vezes quando corro ls
, a saída é normal e lista os arquivos. Outras vezes, a saída é simplesmente uma linha:
$ ls
.
Se eu tentar ls -la
em um desses momentos, recebo o seguinte:
$ ls -la
ls: .: Invalid argument
Se eu ls
voltar repetidamente várias vezes, parece retornar a saída normal ou a saída anormal basicamente aleatoriamente.
ls
parece funcionar normalmente em outros diretórios. ls $drivename
até parece funcionar bem no diretório pai e ls ..
parece funcionar bem em um diretório filho. (Embora eu não tenha 100% de certeza daquelas que "funcionam normalmente", pois o comportamento é indeterminado para começar.) Tentei outras duas unidades USB externas e obtive o mesmo comportamento.
O que está acontecendo aqui? Estou no Mac OS X 10.11.3.
Edit: Boa idéia, mas eu não pareço estar usando um alias e /bin/ls
dá o mesmo resultado.
/bin/ls
?/bin/ls
dá o mesmo resultado, às vezes produzindo.
.ls
parece funcionar normalmente em outros diretórios.ls NO\ NAME
até parece funcionar bem no diretório pai els ..
parece funcionar bem em um diretório filho. (Embora eu não pode ser 100% de certeza dos que "trabalhar normalmente" uma vez que o comportamento é indeterminado, para começar.)ls
você está usando?/bin/ls --version
deve trabalharRespostas:
Pode ser um erro no driver do sistema de arquivos do FAT32 em versões recentes do OSX. Isso também parece ocorrer apenas quando o diretório de trabalho está na raiz da unidade montada. Se estiver em um subdiretório ou em qualquer outro lugar do sistema, as coisas parecem funcionar.
Há alguma discussão interessante neste segmento, incluindo rastreios do sistema. https://github.com/robbyrussell/oh-my-zsh/issues/4161
fonte
SOLUÇÃO: (provavelmente parte do que o solicitante apreciaria, mesmo que não o pedisse especificamente)
Consulte o diretório atual de qualquer outra maneira que não seja
.
. Exemplo:cd
para um subdiretório e, em seguida, executels
no diretório pai. Ou seja, insira algo como isto:mkdir S; cd S ; /bin/ls -al ..
Ou consulte-o pelo nome completo do caminho. Exemplo:
ls /Volumes/microSD007
Para mim, qualquer uma dessas soluções alternativas funciona (ou seja, elas resultam na saída esperada) quando
ls
me dá a mesma saída errada que o OP relatou. (E para mim, não há saída no dmesg quandols
age de maneira estranha.)Estou vendo as mesmas falhas no 10.12.6 no Terminal.app executando o bash. Mesmo em
csh
esh
, mesmo depois de definir TERM como vt100. Essa solução alternativa também funciona nessas conchas.E eu concordo que há um erro
stat64
, conforme indicado nozsh
tópico da questão que Neil nos aponta. (Eu achava que o problema era causado por falhas na memória flash e / ou falsa, e ainda me pergunto se isso é um fator algumas vezes.)Notei que esse bug também afeta:
ls
els
quando usado no modo shell do Emacs.fonte
Se você às vezes remover a unidade, a resposta é que cada vez que reinserir a unidade, você deverá retornar ao diretório usando o cd. Isso ocorre porque o descritor de arquivo aberto pelo seu shell para ler o diretório é invalidado quando a unidade é removida e não é reinicializado automaticamente quando a unidade é reinserida (mesmo que você tenha usado a unidade em outro terminal ou gerenciador de arquivos).
Se a unidade nunca for removida, pode ser um problema de hardware ou talvez algum software que desmonte a unidade por algum motivo; você deve fornecer os logs do sistema.
fonte