Переименование файла со странным именем на Samba mount

Перезагрузка системы - это излишество, даже выход из системы и вход в нее не нужны, если вы используете gpasswd.

Вы можете добавить takpar в группу webdev, используя:

$ gpasswd -a takpar webdev

Вы можете проверить членство в группе, используя команду getent group {name}:

$ getent group webdev
webdev:x:1008:webdev,takpar

которая должна быть такой же, как cat /etc/group | grep webdev. Для полноты картины вот id вывод из takpar shell сессии:

$ id takpar
uid=1007(takpar) gid=1007(takpar) groups=1007(takpar),1008(webdev)
10
13.04.2017, 01:52
3 ответа

Резюме соответствующих комментариев:

Файловые системы Unix разрешают использовать в имени файла любой символ, кроме \0 (nul) и / (прямая косая черта). Тот факт, что ls показывает знаки вопроса, объясняется только тем, что он не может отобразить некоторые символы имени файла в текущей локали (это одна из причин, почему вы должны избегать разбора вывода ls).

Однако, при использовании общего ресурса Samba, вы, очевидно, предъявляете более строгие требования к именам файлов, чем в стандартной файловой системе Unix.

Поскольку файл имел имя, которое было "незаконным" на вашем промежуточном ресурсе Samba, файл был недоступен по своему правильному имени на машине, монтирующей этот ресурс.

Команда mv не сработала, так как имя, возвращаемое из ресурса Samba для расширения шаблона globbing, не было реальным именем файла на хостинговой файловой системе, а только собственной искаженной версией имени Samba.

Ваше решение заключалось в том, чтобы войти на сервер, на котором действительно находился файл (на файловой системе с менее строгими правилами именования, чем Samba), и изменить имя файла там. Это было правильное решение.

См. также Unix&Linux чат по этому вопросу.

16
27.01.2020, 20:02

Прежде чем я узнал о цитировании в оболочках unix, я бы использовал режим emacs dired для переименования или удаления файлов, которые трудно сопоставить. Вы просто открываете каталог в emacs:

emacs -q .

... затем вы можете использовать клавиши со стрелками для перехода к файлу, который хотите изменить, и переименовать файл с R . ? предоставит вам список доступных команд (вы также можете удалить файлы, которые трудно сопоставить).

Затем вы просто C-x C-c выходите из emacs, и все готово.

-2
27.01.2020, 20:02

Часто с необычными именами файлов вы можете добавить "./" перед именем файла, и Linux правильно его распознает. Например: $ ls ./?j?Z?R?C1_000c.jpg

-3
27.01.2020, 20:02

Теги

Похожие вопросы