sábado, 20 de febrero de 2010

Convertir documentos de MSDOS/Windows a Linux

Cuando tu creas un documento de texto en MSDOS/Windows (como por ejemplo en notepad.exe), Windows añade al final de cada línea un retorno de carro CR (carriage return) y un salto de línea LF (line feed). Y después, digamos que creaste un shell script o un programa en C, te llevas ese documento a Linux o Unix, pues no va a funcionar ya que el formato Linux/Unix es solo un LF al final de cada línea. El típico error que resulta al tratar de ejecutarlo es el siguiente:
bash: ./programa.txt: /bin/bash^M: bad interpreter: No existe el fichero o el directorio
Donde se lee: "/bin/bash^M", es la parte que nos indica que hay tanto CRs como LFs al final de cada línea. Claro podrías abrir el documento en vi o cualquier editor de Linux y eliminarlas manualmente, pero mejor te presento a continuación 5 tips para deshacerte de esas molestas '^M'.

Usando vi podemos solucionar esto.

En vi estando en modo de última línea ':', introduce lo siguiente
:1,$ s/{ctrl-V}{ctrl-M}// (esto es, presionar ctrl-v y ctrl-m)
(en pantalla se verá esto:)
:1,$ s/^M//
Esto es, desde la primera línea hasta la última '$' sustituye 's' ^M por nada. Y listo. (Puedes consultar la guía vi para entender más sobre esto.)

0 comentarios:

Publicar un comentario