Я пытаюсь написать script, который автоматически удалит спецификации UTF-8 из файла. У меня возникли проблемы с обнаружением того, есть ли файл в первую очередь или нет. Вот мой код:
function has-bom {
# Test if the file starts with 0xEF, 0xBB, and 0xBF
head -c 3 "$1" | grep -P '\xef\xbb\xbf'
return $?
}
По какой-то причине head
, кажется, игнорирует спецификацию перед файлом. В качестве примера выполните этот
printf '\xef\xbb\xbf' > file
head -c 3 file
ничего не печатает.
Я попытался найти вариант в head --help
, который позволил бы мне обойти это, но не повезло. Есть ли что-нибудь, что я могу сделать, чтобы сделать эту работу?