ls mostra o arquivo, mas ao tentar ler ele diz que não existe

3

Eu tenho uma montagem CIFS no meu PC e o comando ls mostra que um determinado arquivo está lá:

[bf@localhost dirX]$ ls -la
total 4096
drwxr-xr-x. 2 bf bf      0 20 okt 09:12 .
drwxr-xr-x. 2 bf bf      0  5 sep 11:05 ..
-rwxr-xr-x. 1 bf bf    880 19 okt 17:44 WeirdFile
-rwxr-xr-x. 1 bf bf    880 19 okt 17:44 GoodFile

No entanto, ao tentar ler (ou salvar para ele), ele diz que o arquivo não existe:

[bf@localhost dirX]$ cat WeirdFile
cat: WeirdFile: No such file or directory

A tentativa de cat GoodFile funciona.

Estou tendo problemas com o CIFS de qualquer maneira desde que me mudei para o Fedora 26 e tive que forçar a versão 2.1 no fstab. O principal problema é o desempenho ruim (lento!), Mas isso é simplesmente estranho.

Atualizar ao remontar o compartilhamento, o arquivo desapareceu.

    
por Bart Friederichs 20.10.2017 / 09:26

1 resposta

2

Um possível motivo de que o Weirdfile não esteja realmente usando caracteres ASCII no nome. Se esse for o caso, se você digitar o nome do arquivo, ele não funcionará, mas se você usar copiar / colar, ele também poderá funcionar com a conclusão do comando, dependendo de onde o caractere não Ascii está.

Existem duas possibilidades para caracteres não ASCII: * o caractere não-ASCII possui um glifo idêntico a um no alfabeto latino (cirílico 'a', 'o', 'e' são típicos) * o caractere não-ASCII não é visível (+ U200B, espaço de não-zero-largura-largura, por exemplo).

Além da cópia / pasta v.s. redigite a diferença:

  • se você usar ls suspisciousfile | wc -c , com all-ASCII, a saída wc será apenas mais um byte do que você pode contar caracteres no nome do arquivo (devido ao avanço de linha final), se houver caracteres não-ASCII ser mais longo.
  • com hexdump : ls suspisciousfile | hexdump -C tornará qualquer caractere não ASCII muito óbvio.

Exemplo com um filе especialmente criado (em que o% final% co_de é realmente um caractere cirílico:

    
por 20.10.2017 / 10:24