Como corrigir Erros de fim de linha no Linux
03 - 2025
Você já se deparou com um script que funciona perfeitamente no Linux mas quebra
no Windows com erros estranhos, ou vice-versa? A causa pode ser um detalhe
invisível: o caractere de fim de linha. Sistemas baseados em Unix, como Linux e
macOS, utilizam o padrão “Line Feed” (LF ou \n
), um único caractere de
controle que instrui o cursor a simplesmente pular para a próxima linha. Já o
Windows herdou de seus predecessores o padrão “Carriage Return + Line Feed”
(CRLF ou \r\n
). Essa sequência de dois caracteres funciona como uma máquina de
escrever: o \r
(Carriage Return) retorna o cursor para o início da linha,
enquanto o \n
(Line Feed) o move para a linha de baixo. Essa pequena, mas
fundamental, diferença é uma fonte clássica de problemas de compatibilidade em
programação, controle de versão com Git e na execução de scripts entre
plataformas.
A origem dessa divergência é um legado direto da era das máquinas de escrever.
Na mecânica, eram necessárias duas ações físicas para se iniciar uma nova linha:
primeiro, o “retorno do carro” (carriage return), que empurrava o cilindro de
papel de volta ao ponto inicial, e depois o “avanço de linha” (line feed), que
girava o cilindro para a linha seguinte. Os primeiros sistemas operacionais,
como o MS-DOS, emularam essa lógica com os dois caracteres (CRLF) para manter a
compatibilidade com os teletipos da época. Por outro lado, os criadores do Unix
consideraram essa abordagem redundante para o mundo digital e a simplificaram
para um único comando, o LF. Essa decisão de design, feita décadas atrás, é o
motivo pelo qual, até hoje, desenvolvedores encontram os enigmáticos caracteres
^M
em seus arquivos ao transitar entre diferentes sistemas operacionais.
Corrigindo:
Utilizando o editor NANO
Abra o arquivo utilizando a flag unix:
nano --unix arquivo.ext
Uma vez que o arquivo esteja aberto, você não precisa fazer mais nada de especial. A conversão será aplicada no momento em que você salvar. Para isso, basta usar os atalhos padrão:
- Pressione Ctrl + O para iniciar o processo de “gravar”.
- Confirme o nome do arquivo pressionando Enter.
- Pressione Ctrl + X para sair do editor.
Pronto! O arquivo foi salvo no formato correto.
Utilizando o editor VI/VIM
vi arquivo.ext
Com o arquivo aberto, pressione a tecla Esc para garantir que você está no “Modo de Comando”.
Agora é possivel definir o fileformat
com o seguinte comando:
:set ff=unix
Pressione enter para enviar o comando
Para salvar as alterações e fechar o editor, utilize o comando:
:wq!
o !
irá forçar a sobrescrita.
Utilizando o VI/VIM por linha de comando:
vi -c "set ff=unix" -c "wq" arquivo.ext
Se dos2unix tiver instalado:
dos2unix arquico.ext