ls показывает файл, но при попытке прочитать он говорит, что его не существует

У меня на компьютере установлено крепление CIFS, а ls Команда показывает мне определенный файл:

[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

Тем не менее, при попытке прочитать из него (или сохранить в нем), он говорит, что файл не существует:

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

Пытаясь cat GoodFile работает.

У меня проблемы с CIFS, так как я перешел на Fedora 26 и вынужден перейти на версию 2.1 в fstab. Основная проблема - плохая производительность (медленно!), Но это просто странно.

Обновление при перемонтировании общего ресурса, файл пропал.

2 ответа

Возможная причина, по которой этот Weirdfile на самом деле не использует символы ASCII в имени. В этом случае, если вы набираете имя файла, оно не работает, но если вы используете копирование / вставку, оно работает (оно также может работать с завершением команды, в зависимости от того, где находится символ, отличный от Ascii).

Для символов не-ASCII есть две возможности: * символ не-ASCII имеет глиф, который идентичен глифу в латинском алфавите (типично кириллица "a", "o", "e") * символ не-ASCII не виден (например, +U200B, без пробела нулевой ширины).

Кроме разницы между копированием / вставкой и перепечаткой:

  • если вы делаете ls suspisciousfile | wc -c, со всеми ASCII wc вывод будет всего на один байт больше, чем вы можете сосчитать в имени файла (из-за последнего перевода строки), если есть символы не ASCII, он будет длиннее.
  • с hexdump: ls suspisciousfile | hexdump -C сделает любые не-ASCII символы очень очевидными.

Пример со специально созданным filе (где финал е на самом деле кириллический символ:

У меня был файл журнала из приложения поставщика, который меня очень сбил с толку.

Оказывается, имя файла заканчивалось пробелом.

Пытатьсяcat *WeirdFile*чтобы увидеть, есть ли какие-либо непечатаемые символы

Другие вопросы по тегам