Как стать автором
Обновить

Комментарии 40

Суммируя: в coreutils некорректно работает fold, зато корректно работает в busybox.
Да. Есть ещё один похожий инструмент fmt, тоже имеет проблемы с юникодом.
По моему, utf-8 должен уже поддерживаться везде.
По моему, где бы utf-8 не появлялся, работать с ним постоянно приходится через косыли.
По моему, где бы не появлялся текст не в ASCII, работать с ним постоянно приходится через костыли.
Я поправил. Юникод — это сложно, и правильная его обработка естественно выглядит «костылями» на фоне идиллии ASCII: «один байт — один символ».
>> один байт — один символ

Ох уж эта идиллия старых книжек Страуструпа, Кернигана и Ритчи, где int — 4 байта, а «увеличение времени компиляции программы» — главный недостаток использования STL.
т.е. обойти = заменить инструмент?
Fedora 20, coreutils-8.21-21.fc20.x86_64 — проблема отсутствует.
echo «абвгдеёжзи» | fold -w 4
абвг
деёж
зи
Не только в Fedora-20, сейчас попробывал Fedora 18, OEL5, OEL6.
Проблема есть только в OEL5 coreutils-5.97-34.el5_8.1.
В остальных все ок.
CentOS 5 coreutils-5.97-34.el5_8.1, также нет проблемы.
Локаль везде LANG=ru_RU.utf8
А локаль у вас какая?
Думаю, ребята из Red Hat знают об этой проблеме и накладывают патчи. В Fedora всё попадает «по наследству».
А почему тогда фикса нет в апстриме?
Все так… кроме использования более тяжелого инструмента для задачи, которая вроде как решается более простым.
Во-первых, не решается, ну вернее, прямо не решается.
Сколько у вас ушло времени на поиск решения?
Если бы сразу седом побили сколько времени б сэкономили?
Во-вторых, возможно более тяжелого, а возможно и лёгкого, никто ж не мерял.
Какая принципиальная разница?
Ну будет 8Г файл будет на 3 секунды дольше обрабатывать, и что?

Вряд ли разница будет на порядок. И не думаю, что эта задача будет крутится постоянно, и грузить процессор постоянно,
что бы имел смысл вопрос оптимизации этого процесса.

PS: я за перфекционизм, но в пределах здравого смысла.
Сколько у вас ушло времени на поиск решения?
Ноль дней ноль часов ноль минут и ноль секунд.
Вы путаете меня с автором статьи…
(=
Положим, от словацких ;)
В bsd'шном fold под маком всё действительно нормально работает.
Кстати, что более интересно:
$ echo абв | fold -w 1 

�

�

�
Загадка.

Как удалить все файлы и папки из текущей директории, запустив один раз одну утилиту и при этом не получив сообщение об ошибке?
find -delete 2>/dev/null
Ответ верный (не благодаря `2>/dev/null`, я имел в виду как раз без таких приемов). Ту же задачу можно решить с помощью locate.

А подвох в том, что утилита rm не удовлетворяет условию. И удалять приходится не утилитой удаления, а утилитой поиска (либо игнорировать ошибки, конечно).
2>/dev/null для верности и запрета его использования в условии нет))

а как через locate — если нужно удалить и «запустив один раз одну утилиту»?
Да, похоже, locate только через пайп позволяет это делать.
locate тут совсем не поможет. Он выдаёт только файлы из базы данных.
Как поведет себя эта команда на директории с миллионом файлов? rm сдувается
без проблем, так как читает и удаляет через readdir без сортировки
а чем «rm -rf *» не нравится? ошибок не даёт никаикх
Эта команда игнорирует файлы, чье имя начинается с точки.
Ну так
rm -rf * .[^.]* ..?*
Вот это я понимаю ловкость рук!
$ touch ./-a
$ ls
-a
$ rm -rf * .[^.]* ..?*
zsh: sure you want to delete all the files in /home/dginzburg/tmp/rmtest [yn]? y
rm: invalid option -- 'a'
Try 'rm ./-a' to remove the file ‘-a’.
Try 'rm --help' for more information.

Да, верно, не учёл.
rm -rf -- * .[^.]* ..?*
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации