Convertendo arquivo UTF-8 com BOM para UTF-8 sem BOM
Dica publicada em Linux / Comandos
Convertendo arquivo UTF-8 com BOM para UTF-8 sem BOM
Estou migrando minhas atividades totalmente para o GNU/Linux. Uma das minhas tarefas, era a conversão de arquivos .bat para os respectivos .sh.
Porém, ao tentar executar esses arquivos .sh, eles sempre retornavam erro.
Depois de alguns testes, percebi que o problema era a assinatura BOM (Byte Order Mark) dos arquivos UTF-8, gerados por mim no Notepad++.
Veja: Byte Order Mark - Wikipedia, the free encyclopedia
Para resolver esse problema, utilizei um comando para reescrever um arquivo, retirando essa assinatura.
Supondo que o arquivo seja o file.sh, teremos o seguinte comando:
tail --bytes=+4 file.sh | tee file.sh > /dev/null
Observações do comando:
Fonte original:
Porém, ao tentar executar esses arquivos .sh, eles sempre retornavam erro.
Depois de alguns testes, percebi que o problema era a assinatura BOM (Byte Order Mark) dos arquivos UTF-8, gerados por mim no Notepad++.
Veja: Byte Order Mark - Wikipedia, the free encyclopedia
Para resolver esse problema, utilizei um comando para reescrever um arquivo, retirando essa assinatura.
Supondo que o arquivo seja o file.sh, teremos o seguinte comando:
tail --bytes=+4 file.sh | tee file.sh > /dev/null
Observações do comando:
- tail --bytes=+4 file.sh :: Apresenta o conteúdo do arquivo, com exceção da assinatura - os 4 primeiros bytes;
- | tee file.sh :: Redireciona o texto para o comando tee que reescreve o conteúdo no arquivo;
- > /dev/null :: Evita que o conteúdo seja exibido na tela.
Fonte original: