Назад | Перейти на главную страницу

файл журнала linux не открывается правильно в блокноте Windows

У меня есть небольшой фрагмент кода на моем красном Linux-боксе, например

echo $ ddate ";" $ time ";" $ cpu >> / home / logfile

Вывод находится в vi

2010-04-10 12:23:32;01
2010-04-10 12:23:32;01
2010-04-10 12:23:32;01

но когда я загружаю это на компьютер с Windows и открываю его в блокноте

я вижу

2010-04-10 12:23:32;01 [] 2010-04-10 12:23:32;01 [] 2010-04-10 12:23:32;01

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

я предполагаю, что блокнот не может понять новую строку []

Есть ли способ написать его по-другому, чтобы он мог правильно отображаться в блокноте.

Если вы хотите только просмотреть данные, тогда что-то вроде WordPad (обычно поставляется с Windows) является быстрым решением и будет читать LF как новую строку. Вещей вроде блокнота нет, для тех, кому нужны LF и CR.

Лучшая альтернатива - получить текстовый редактор Windows, который может работать намного лучше, например Блокнот ++

вместо блокнота попробуйте блокнот ++ который может правильно обрабатывать разрывы строк unix без необходимости изменять файл. Он также сохранит стиль разрыва строки, когда вы, например, редактировать файлы конфигурации

Разница между текстовыми файлами в Unix и Windows заключается в том, что в первых используется символ перевода строки (\n) для завершения строки, тогда как последние используют как возврат каретки, так и перевод строки (\r\n). Вы видите эти квадраты в Блокноте, потому что редактор замечает перевод строки без предшествующего возврата каретки и не знает, как его правильно отобразить.

Если вы в первую очередь обращаетесь к файлу журнала через Vim и Блокнот, вам следует подумать об изменении сценария для вывода текстового файла в стиле Windows, указав вручную, какой разделитель строк использовать:

echo -ne "$ ddate; $ time; $ cpu \ r \ n"

На вашем компьютере с Linux запустите это, прежде чем загружать файл по ftp:

unix2dos /home/logfile

Если у вас есть Cygwin или подобное средство на вашем компьютере с Windows, которое предоставляет Unix-подобные инструменты, вы можете запустить unix2dos там после передачи файла.

Кстати, это упрощенная версия вашего скрипта. Нет причин отдельно ставить точки с запятой.

echo "$ddate;$time;$cpu" >> /home/logfile

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

Проверьте свой FTP-клиент. Должна быть возможность передать файл как текстовый файл (не двоичный).

В этом режиме он автоматически преобразует разрывы строк (кстати: этот параметр также может испортить двоичные файлы, такие как изображение, если вы его неправильно используете)

Или unix2dos в вашем Linux-окне, чтобы преобразовать файл в формат разрыва строки DOS / Windows.