Я создал файл Блокнота в Windows и скопировал его в Ubuntu. Файл содержит некоторые правила iptables. После создания исполнимого использования файла chmod +x
и выполняя его, он не работал.
Однако, когда я создал Ubuntu (gedit) файл и скопировал то же содержание из файла Блокнота, сделал это исполняемым файлом и выполнил его, это работало.
Что я должен сделать, чтобы заставить файл Блокнота работать на Ubuntu?
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
В Windows вам нужно изменить формат конца строки (EOL) в Notepad ++ на UNIX:
Таким образом, он будет работать и в Ubuntu.
Я использую cygwin на Windows.
Откройте файл с помощью vi. Затем введите
:set ff=unix<enter> followed by
:wq<enter>
и сохраните файл с символами конца строки Unix.
Вы можете использовать Vim в режиме Ex:
ex -bsc '%s/\r//|x' file
%
выберите все строки
s
замените
\ r
возврат каретки
x
сохранить и закрыть
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 ...]