Как исправить разрывы строк в текстовых файлах с помощью Dos2Unix и Unix2Dos

Вы когда-нибудь отправляли кому-то текстовый файл, созданный в системе Linux, и заставляли его жаловаться, что он выглядит неправильно в macOS или Windows? Это может быть связано с тем, что эти системы по-разному обрабатывают окончания строк. К счастью, это легко исправить с помощью пары утилит: Dos2Unix и Unix2Dos.

Что делать с окончаниями строк?

Одно из различий между Windows и Linux, которое может затруднить обмен файлами, – это способ подсчета окончаний строк. Это восходит к тем временам, когда компьютеры использовали телетайпы для ввода и вывода, которые фактически были автоматическими пишущими машинками.

Новая строка, также называемая переводом строки, продвигает бумагу на одну строку, а возврат каретки перемещается в начало строки. Интерфейсы командной строки поддерживают это соглашение об интерпретации символов новой строки.

Windows унаследовала соглашение MS-DOS о подсчете новой строки и возврата каретки как одной строки, в то время как Linux, в свою очередь, сохранил традицию Unix просто подсчитывать новые строки как новые строки.

В большинстве случаев текстовые редакторы достаточно умны, чтобы обнаруживать файлы, созданные в разных системах, и соответствующим образом настраивать отображение, но вы все равно можете иногда сталкиваться с проблемами. Вы можете попытаться запустить сценарий, и интерпретатор может выдать ошибку, потому что он ожидает, что строки будут заканчиваться по-другому.

Использование Dos2Unix и Unix2Dos

К счастью, есть несколько утилит, которые позволяют конвертировать окончания строк в файлах между форматами. Они называются Dos2Unix и Unix2Dos .

Хотя эти утилиты распространены во многих установках Linux, если они не установлены в вашей системе, вы можете загрузить их с помощью диспетчера пакетов по умолчанию.

Чтобы преобразовать файл, созданный в системе Windows, в Linux, используйте dos2unix :

 dos2unix file

… где файл – это имя файла, который вы хотите преобразовать. Эта программа преобразует файл из новых строк DOS в символы Unix на месте, как следует из названия. Если вы хотите преобразовать копию файла, используйте параметр -n :

 dos2unix -n file1 file2

… где файл1 и файл2 – это имена исходного файла и выходного файла . Команда unix2dos работает так же и принимает те же аргументы.

Альтернативный вариант – использовать текстовый редактор в Linux или Windows для преобразования файлов, поскольку они также могут обнаруживать и изменять поведение окончания строки.

Связанный: Unix против Linux: разница между и почему это имеет значение

Теперь ваши текстовые файлы выглядят правильно в любой системе

С помощью этой пары утилит вы можете убедиться, что любой текстовый файл будет работать как в Windows, так и в Linux. Исправлять символы новой строки теперь проще, чем когда-либо, с помощью dos2unix и unix2dos.

В реальном мире пользователям Linux и Windows часто нужно обмениваться файлами. К счастью, в наши дни это сделать очень просто.