О выпиливании BOM из utf-8 файлов
March 22, 2009 by Andrew Tch · 2 Comments
После буйства Алекса, поставившего какой-то суровый русский плагин, пришлось немного починить atdodu.lv. Суть была в том что в RSS почему-то вылезала BOM UTF-8 mark, но не было понятно, из какого файла это дрянь бралась.
После 15 минут было наваяно решение на баше для нахождения файлов с utf-8 bom отметинами.
for file in `find .`; do cat $file 2>/dev/null | hexdump | grep 0000000\ bbef > /dev/null; if [ $? -eq 0 ]; then echo $file; fi; done
Немного комментариев. Начало, думаю, понятно всем – ищем все файлы в текущей папке. Далее, выполняем составную команду:
cat $file 2>/dev/null | hexdump | grep 0000000\ bbef > /dev/null
2>/dev/null нужен чтобы cat не вопила об ошибках что xxx is a directory. bbef – как раз и есть тот BOM file mark. Вывод grep нам не нужен, пихаем его в /dev/null – нам нужен только результат работы grep, 0 если что-то найдено или единица – если нет.
Полученный результат выполнения последней команды ($?) проверяем на равенство нулю и в случае равенства печатаем название файла:
if [ $? -eq 0 ]; then echo $file; fi;
Короче – выпилите notepad, пожалуйста.
——————-
У кого bash, a у кого – создание сайтов.