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:

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