Как я могу изменить каталог на каталог, имя которого состоит из символов, отличных от ASCII по умолчанию?
root@senior:/media/data/hudba/# ls . -l
total 3096
-rwxr-xr-x 2 user users 3160192 Jul 31 2006 Lucie BĂlĂĄ - esemes.mp3
drwxr-xr-x 1 user users 8192 Mar 28 2008 ĂplnÄahĂĄ
Как войти в этот каталог (вторая запись)? Или (лучше) переименовать его без использования mc или другого инструмента или необходимости перемонтировать раздел?
Убедитесь, что это действительно не UTF-8.
echo $LANG
; если возвращаемая строка не оканчивалась на .UTF-8
, ваш терминал не настроен на правильную кодировку.
По возможности, завершение с помощью табуляции или подстановочного знака.
Если первый или три символа - это ASCII, попробуйте использовать завершение табуляции, чтобы выполнить эту работу за вас. Удаленный сервер предоставит необработанные байты, после чего вы можете просто нажать return, даже если это не похоже на то, что имеет смысл.
Очевидно, что завершение табуляции в этом случае не применяется, но, как указал Дэвид, вы можете использовать подстановочный знак cd
на основе подстроки.
Используйте абстракцию.
Если вы не можете передать правильные коды символов, даже первый символ, вы в значительной степени иметь использовать другие инструменты для решения проблемы, например, уговорить find
, чтобы определить только интересующий каталог и переименовать его.
ls -i
в родительском каталоге, чтобы идентифицировать связанный индексный дескриптор.find . -type d -inum inode#
, заменяя номер inode соответствующим образом. Если эта команда работает и возвращает только один каталог (тот, который вы хотите переименовать), добавьте это в конец команды поиска: -okdir mv {} ILikeThisNameBetter \;
(-okdir
это вариант -execdir
который подсказывает, действительно ли вы хотите что-то сделать, что в данном случае является правильным путем)
Благодарим Аарона Буша за подход inode, я делал это по размеру файла в предыдущей версии.
Двойные кавычки для имени каталога должны работать нормально.
cd "ĂplnÄahĂĄ"
даже для имен с пробелами
cd "ĂplnÄahĂĄ hfjksf"