A Situação
Seu arquivo no linux apareceu com um monte de caracteres estranhos no final de cada linha, o famoso e famijerado CTRL-M ou "^M" azul.
A Causa
O arquivo foi transferido entre sistemas de diferentes tipos com diferentes convenções de quebra de linha. Por exemplo, editores de texto baseados no Windows terão um caractere especial de quebra de linha (CR+LF) no final das linhas para indicar uma quebra da linha ou nova linha, e este, será exibido incorretamente no Linux (^M).
Isto pode ser difícil de identificar, já que algumas aplicações ou programas podem lidar corretamente com os caracteres da nova linha, enquanto outras não o fazem. Assim, alguns serviços podem falhar ou não responder corretamente.
Seu arquivo no linux apareceu com um monte de caracteres estranhos no final de cada linha, o famoso e famijerado CTRL-M ou "^M" azul.
A Causa
O arquivo foi transferido entre sistemas de diferentes tipos com diferentes convenções de quebra de linha. Por exemplo, editores de texto baseados no Windows terão um caractere especial de quebra de linha (CR+LF) no final das linhas para indicar uma quebra da linha ou nova linha, e este, será exibido incorretamente no Linux (^M).
Isto pode ser difícil de identificar, já que algumas aplicações ou programas podem lidar corretamente com os caracteres da nova linha, enquanto outras não o fazem. Assim, alguns serviços podem falhar ou não responder corretamente.
Muitas vezes, isto acontece porque o arquivo é criado ou talvez até mesmo editado no Windows e depois transferido para um sistema Linux. Isto normalmente ocorre quando um arquivo é transferido do MS-DOS (ou MS-Windows) sem o modo ASCII ou de texto.
A Solução
A seguir, diferentes opções para remover, converter ou traduzir os caracteres ^M:
A Solução
A seguir, diferentes opções para remover, converter ou traduzir os caracteres ^M:
Usando o comando dos2unix (às vezes chamado fromdos, d2u ou unix2dos):
dos2unix nome do arquivo
Usando o perl:
perl -p -e ArquivoOriginalComErro 's/\r//g' > ArquivoNovoReparado
Usando o editor de fluxo sed: (essa é a opção mais simples e eficiente)
sed -e ArquivoOriginalComErro "s/\r//g" > ArquivoNovoReparado
Usando o perl:
perl -p -e ArquivoOriginalComErro 's/\r//g' > ArquivoNovoReparado
Usando o editor de fluxo sed: (essa é a opção mais simples e eficiente)
sed -e ArquivoOriginalComErro "s/\r//g" > ArquivoNovoReparado
Informações adicionais
Para fins de depuração em um sistema Unix, o seguinte comando tornará visível o caracter ^M:
Para fins de depuração em um sistema Unix, o seguinte comando tornará visível o caracter ^M:
cat -v <nomedoarquivo>
Fonte: microfocus
Muito proveitoso este comando para corrigir o nome do arquivo. Boa dica.
Olá Cristiano. Que bom que a dica foi útil. Obrigado pelo comentário!