UTF8 локаль в ArchLinux
Дизель выложил в свое время замечательную ссылочку на форуме по поднятию UTF8 локали в Arch Linux http://vl-lug.ru/forum/viewtopic.php?id=105
Здесь я хочу что бы все желающие выдавали свои дополнения, оформенные ввиде статьи.
И так, положим начало...
Имена файлов
На старой koi8-r системе было довольно приличное количество файлов в русскими именами, естественно в кодировке koi8-r. Что делать, в UTF локали с такими именами файлов работать несподручно...
На решение пробелемы навел запуск такой команды:
LANG=ru_RU.KOI8-R ls | iconv -f koi8-r
Эта команда вывела список имен файлов с русскими именами как и положено, русскими буковками. Так родился скрипт:
#!/bin/bash # # Recode all file names in given codepage to UTF8 # on UTF8 system # CODE_FROM="KOI8-R" recursive=0 scan_only=0 function parse_cmd_line() { prev_arg="" need_next=0 for i in "$@" do if [ $need_next -eq 0 ]; then case $i in "-f") prev_arg="-f" need_next=1 ;; "-r") recursive=1 ;; "-s") scan_only=1 ;; esac else case $prev_arg in "-f") CODE_FROM=`echo $i | tr '[:lower:]' '[:upper:]'` ;; esac prev_arg="" need_next=0 fi done } function recode_file() { old_name="$@" new_name=`echo $@ | iconv -f $CODE_FROM` stat1=$? mid_name=`echo $@ | iconv -f UTF8 2>/dev/null` stat2=$? if [ x"$old_name" != x"$new_name" -a $stat1 -eq 0 -a x"$mid_name" != x"$old_name" ]; then if [ $scan_only -eq 0 ]; then echo "Recode: $old_name -> $new_name" mv "$old_name" "$new_name" else echo `pwd`"$@" fi fi } parse_cmd_line $@ oldIFS=$IFS IFS=$'\n' files=`ls -1 --color=none` for i in $files do if [ -d "$i" ]; then if [ $recursive -eq 1 ]; then name=`basename $0` if [ `dirname $0` == "." ]; then prefix=`pwd` else prefix=`dirname $0` fi cd "$i" $prefix/$name "$@" cd .. fi fi recode_file "$i" done
запускам сей скрипт из директории содержимое которой нужно привести к виду UTF8:
recodedir
Скрипт понимает ключи:
- -r говорит что перебрать все каталоги рекурсивно, начиная с текущего
- -s просканирует каталоги и выдаст список файлов которые нужно изменять
- -f <кодировка> задает кодировку из которой перекодировать, по умолчанию KOI8-R
Кроме того, можно использовать готовую утилиту «convmv» из репозитория «extra». Умеет она намного больше, чем вышеописанный скрипт, но требует установленный perl в системе.
Midnight Commander
Есть два вариант, mc-utf8 из репозитария community либо вот этот образец: http://pupykins.googlepages.com/mc.html
Автор mc-cru и автор порта в community - суть один человек, имя ему Сергей Пупыкин (надеюсь правильно написал фамилию) в том виде в котором идет mc-cru очень нелицеприятный. Что бы привести его в чувство, смержил utf8 патч с той версии что в репозитарии, плюс сделал пееркодировку в редакторе (но тут кроется бага... страшная, которую пока лень решать, при перекодировке в редакторе не работает поиск и замена).
И так, по этой ссылке можно скачать правило для сборки для makepkg и патч: mc-cru.tar.gz
Вы находитесь здесь: Сайт группы пользователей Linux города Владивостока » Статьи » UTF8 локаль в ArchLinux

