Запущение скрипта создается в Блокноте (Windows) на Ubuntu

Я создал файл Блокнота в Windows и скопировал его в Ubuntu. Файл содержит некоторые правила iptables. После создания исполнимого использования файла chmod +x и выполняя его, он не работал.

Однако, когда я создал Ubuntu (gedit) файл и скопировал то же содержание из файла Блокнота, сделал это исполняемым файлом и выполнил его, это работало.

Что я должен сделать, чтобы заставить файл Блокнота работать на Ubuntu?

14
задан 12 August 2015 в 13:53

5 ответов

Windows и Linux имеют разные символы конца строки.

Вы можете установить утилиту dos2unix , которая исправляет это:

sudo apt-get install dos2unix

Запустите ее следующим образом:

dos2unix -n winfile.txt linuxfile.txt

Существует также утилита unix2dos .

Преобразование Windows в Linux также можно выполнить без установки специального программного обеспечения с помощью

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

Примечание: Входные и выходные файлы должны быть разными .

Версия sed редактирует файл «на месте»:

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

Или записывает в другой файл:

 sed 's/\r//g' winfile.txt > linuxfile.txt
20
ответ дан 23 November 2019 в 02:55

В Windows вам нужно изменить формат конца строки (EOL) в Notepad ++ на UNIX:

enter image description here

Таким образом, он будет работать и в Ubuntu.

6
ответ дан 23 November 2019 в 02:55

Я использую cygwin на Windows.
Откройте файл с помощью vi. Затем введите

:set ff=unix<enter> followed by 
:wq<enter> 

и сохраните файл с символами конца строки Unix.

1
ответ дан 23 November 2019 в 02:55

Вы можете использовать Vim в режиме Ex:

ex -bsc '%s/\r//|x' file
  1. % выберите все строки

  2. s замените

  3. \ r возврат каретки

  4. x сохранить и закрыть

0
ответ дан 23 November 2019 в 02:55

Windows использует CR + LF для разрывы строк. В Linux / Unix вам нужен LF. Поэтому вам необходимо заменить CR + LF на LF в вашем скрипте:

Установите dos2unix

sudo apt-get install dos2unix

И исправьте свой скрипт через

dos2unix <your_script_file>

или через

dos2unix -n <your_script_file> <out_file>

, если вам нужен другой выходной файл

Дополнительная информация здесь


от 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 ...]
2
ответ дан 23 November 2019 в 02:55

Другие вопросы по тегам:

Похожие вопросы: