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
, со всеми ASCIIwc
вывод будет всего на один байт больше, чем вы можете сосчитать в имени файла (из-за последнего перевода строки), если есть символы не ASCII, он будет длиннее. - с
hexdump
:ls suspisciousfile | hexdump -C
сделает любые не-ASCII символы очень очевидными.
Пример со специально созданным filе
(где финал е
на самом деле кириллический символ:
У меня был файл журнала из приложения поставщика, который меня очень сбил с толку.
Оказывается, имя файла заканчивалось пробелом.
Пытатьсяcat *WeirdFile*
чтобы увидеть, есть ли какие-либо непечатаемые символы