Executando um script criado no Bloco de Notas (Windows) no Ubuntu

11

Eu criei um arquivo do Notepad no Windows e copiei para o Ubuntu. O arquivo contém algumas regras do iptables. Depois de tornar o arquivo executável usando chmod +x e executá-lo, não funcionou.

No entanto, quando criei um arquivo do Ubuntu ( gedit ) e copiei o mesmo conteúdo do arquivo do Bloco de Notas, consegui executável e correu, funcionou.

O que devo fazer para que o arquivo do Bloco de Notas seja executado no Ubuntu?

    
por Albert 06.07.2015 / 11:30

4 respostas

17

O Windows e o Linux têm diferentes símbolos de fim de linha.

Você pode instalar o utilitário dos2unix que o corrige:

sudo apt-get install dos2unix

Execute desta forma:

dos2unix -n winfile.txt linuxfile.txt

Existe também o utilitário unix2dos .

A conversão do Windows para Linux também pode ser feita sem instalar nenhum software especial

 tr -d '\r' < winfile.txt > linuxfile.txt

Observação: Arquivos de entrada e saída devem ser diferentes.

Uma versão sed editará o arquivo "no lugar":

 sed  -i 's/\r//g' file.txt

Ou escreva para outro arquivo:

 sed 's/\r//g' winfile.txt > linuxfile.txt
    
por Pilot6 06.07.2015 / 11:38
6

No Windows, você precisa alterar o formato End of Line (EOL) no Notepad ++ para o UNIX:

Dessa forma, ele funcionará no Ubuntu também.

    
por user284234 06.07.2015 / 11:38
2

O Windows usa CR + LF para quebras de linha. No Linux / Unix você precisa de LF. Portanto, você precisa substituir CR + LF em LF no seu script:

Instale dos2unix

sudo apt-get install dos2unix

E corrija seu script via

dos2unix <your_script_file>

ou via

dos2unix -n <your_script_file> <out_file>

se você precisar de um arquivo de saída diferente

Mais informações aqui

de man dos2unix

NAME
       dos2unix - DOS/Mac to Unix and vice versa text file format converter

SYNOPSIS
           dos2unix [options] [FILE ...] [-n INFILE OUTFILE ...]
           unix2dos [options] [FILE ...] [-n INFILE OUTFILE ...]
    
por A.B. 06.07.2015 / 11:46
0

Você pode usar o Vim no modo Ex:

ex -bsc '%s/\r//|x' file
  1. % seleciona todas as linhas

  2. s substituto

  3. \r retorno de carro

  4. x salvar e fechar

por Steven Penny 16.04.2016 / 17:31