Перенос файлов с Win на Unix ОС, по разному конец строки...

stat7819605

Сталкнулся с такой бедой:

Дома Win, на сервере Unix, переношу скрипт на перле на сервер, но он не работает (хотя точно правильный). Короч связано это с тем что поразному трактуется конец строки в этих ОС. Как грамотно переносить файлы?

Fragaria

ставить себе дома UNIX и писать уже с нормальными концами строки.
а вообще в Linux есть утилита dos2unix

stat7819605

А под винду есть такая утилита/?
Оч надо

otets-mihail

есть

stat7819605

также называется?

Fragaria

тебе кто мешает на сервере эту утилиту на свои файлы натравить?

stat7819605

Все происходит удаленно ) Удобнее это делать дома, а потом заливать )

Fragaria

открой для себя прелести SSH

kindr-16

1) напиши сам
2) воспользуйся каким нибудь редактором
Aditor например

stat7819605

Блин, надо под виндой,
Нашел прогу какую-то dos2unix.exe
Но как с ней обращаться так и не понял (

Fragaria

очевидно, так же, как и с линуксовым аналогом: dos2unix.exe script.pl
а для начала dos2unix -h или dos2unix --help или dos2unix /?

stat7819605

БЛЯ ДА НЕТ У МЕНЯ НИ ХЕРА НА ЕТОМ ЕБНУТОМ СЕРВЕРЕ! Кроме ftp.!

Вся заливка происходит только через ftp.

Fragaria

голяк сочувствую =)
значит, разбирайся с dos2unix.exe

stat7819605

Ну понятно что яб не спрашивал не попробывав этого.

Любой параметр запускает прогу и все... Любой ввод строки повторяется 2раза. Выход только ctrl+c

Fragaria

хех, так может он данные через пайп ждёт? Есть в винде пайпы? Типа cat script.pl | dos2unix.exe?

Svyatogor

А чем тогда ftp не подходит, если передавать файлы как текстовые, а не двоичные?

stat7819605

загрузка на сервер, работающий под управлением ОС семейства UNIX или Linux скрипта написанного в каком либо редакторе под Windows. Windows и UNIX по разному трактуют конец строки, поэтому интерпретатор не может корректно обработать данный скрипт.

Ivan8209

Твой ftp клиент не умеет передавать текстовые данные?
Это новость!
---
"Vyroba umelych lidi, slecno, je tovarni tajemstvi."

Svyatogor

Это я знаю, я и спрашиваю, почему использование текстового (ASCII) режима вместо двоичного (BINARY) при передаче данных не решает эту проблему? Текстовый режим как раз и предназначен для передачи текстов, при этом конвенции о форматах перевода строки и т.п. на обеих машинах может отличаться.
While transferring data over the network, two modes can be used
ASCII mode
Binary mode
The two types differ in the way they send the data. When a file is sent using an ASCII-type transfer, the individual letters, numbers, and characters are sent using their ASCII character codes. The receiving machine saves these in a text file in the appropriate format (for example, a Unix machine saves it in a Unix format, a Macintosh saves it in a Mac format). Hence if an ASCII transfer is used it can be assumed plain text is sent, which is stored by the receiving computer in its own format. Translating between text formats entails substituting the end of line and end of file characters used on the source platform with those on the destination platform, e.g. a Windows machine receiving a file from a Unix machine will replace the carriage returns with carriage return-line feed pairs. ASCII transfer is also marginally faster, as the highest-order bit is dropped from each byte in the file.
Sending a file in binary mode is different. The sending machine sends each file bit for bit and as such the recipient stores the bitstream as it receives it. Any form of data that is not plain text will be corrupted if this mode is not used.
By default, most FTP clients use ASCII mode. Some clients try to determine the required transfer-mode by inspecting the file's name or contents.
Взято в википедии

artimon

Особенно нравится это:
ASCII transfer is also marginally faster, as the highest-order bit is dropped from each byte in the file.
PS. Я не проверял, возможно современные FTP-клиенты/сервера не делают этого

Ivan8209

Ты чего? Это же самое клёвое!
---
...Я работаю антинаучным аферистом...

davidko

Что-то я не улавливаю суть проблемы...я по фтп тоталкомандером заливал скрипты на солярисную машину, сам находясь под виндой. Скрипты писались в vim. Что я делал не так (кроме того, что писал не в емакс - для самых придирчивых)?

artimon

Короче, не мозги.
Возьми любой нормальный текстовый редактор (EmEditor, vim, etc.) и пересохрани свои скрипты с нужым вариантом переносов строк.

apl13

Есть в винде пайпы? Типа cat script.pl | dos2unix.exe?
dos2unix.exe < script.pl
Оставить комментарий
Имя или ник:
Комментарий: