Преобразование текстовых файлов DOS к Unix

Вот несколько полезных ярлыков, которые можно попробовать:

  • <Ctrl><Esc> таблица дисплеев процессов
  • <Ctrl><Alt><Esc> преобразовывает указатель на череп-и-скрещенные-кости и уничтожит процесс окна, на которое Вы нажимаете
  • <Ctrl><Alt><Backspace> уничтожает X-сервер
  • <Ctrl><Alt><Del> завершите работу системы и перезагрузки
3
25.08.2011, 16:56
6 ответов

Поскольку @Klox сказал, после running dos2unix, остающаяся проблема vi шоу являются недостающей новой строкой на последней строке.

Если Вы открываете файл в vi и сохраните его, это добавит новую строку для Вас.

Или в пакете можно сделать все это с ed:

#!/bin/bash
for f in <list-of-files-goes-here>; do
    ed -s -- "$f" <<<$',s/\r//g\nw' >/dev/null
done
5
27.01.2020, 21:10
  • 1
    Спасибо, я поднял вариацию в этом. dos2unix повреждается? –  Kev 25.08.2011, 18:29
  • 2
    @Kev: я не знаю, я рассматриваю это, неполезный инструмент, учитывая многие другие методы существуют, чтобы сделать то же, не устанавливая ничто нового. –  enzotib 25.08.2011, 18:50
  • 3
    ответа я в конечном счете, сделал: vi +":w ++ff=unix" +":q" ${f} в цикле. –  Kev 25.08.2011, 18:52

Это просто предупреждает Вас, что у Вас нет конца строки (\n) на последней строке.

2
27.01.2020, 21:10
  • 1
    Это было первой вещью, которую я проверил, и это там. –  Kev 25.08.2011, 16:56
  • 2
    @Kev: когда Вы сохраняете, vi вставьте последнюю новую строку строки. Вы проверили после сохранения? –  enzotib 25.08.2011, 17:04
  • 3
    Да, который работает, как делает :set ff=unix, но у меня есть более чем 200 файлов и требуемый к пакетному преобразованию их. –  Kev 25.08.2011, 17:10
  • 4
    Используйте оболочку for цикл для выполнения echo >> myfile на каждом файле. –  Klox 25.08.2011, 18:14

Машины DOS вводят возврат каретки в конце строк (eol), он должен быть похожим на это в vi ^M.

Попытайтесь выполнить это:

:%s/^M//g
1
27.01.2020, 21:10

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

Используя ed нет никакой потребности в tmp файлах также.

# using Bash
IFS=$'\n'
for file in *.php; do
   ed -s "$file" <<< $'H\n,g/\r*$/s///\nwq'
   #printf '%s\n' H $',g/\r*$/s///' wq | ed -s "$file"
done
1
27.01.2020, 21:10
  • 1
    я указал бы, что пришел почти к тому же решению, не видя Ваш :) –  enzotib 25.08.2011, 18:51

При использовании энергии (вместо старого skool vi), можно сделать это:

:set ff=dos
:e!

и Вы сможете отредактировать файлы PHP без всех ужасных суффиксов "^M". Я полагаю, что это сохранит как формат "текстового файла" DOS, также. Это может быть полезно, если Вы совместно используете файлы с (тьфу!) Windows так или иначе.

Немного конъюнктурного высказывания: двухбайтовый маркер конца строки chosed для MS-DOS, должно быть, был одной из самых больших проблем, которые MS-DOS навязал прочь на мире, после сегментов, букв дисков и "\" как разделитель каталога. То, что двухбайтовый маркер является все еще причиной различия между "текстом" и "двоичным файлом". Ickk.

0
27.01.2020, 21:10

Попробуйте это

Найти. -тип е |. xargs -i {} dos2unix {}

0
27.01.2020, 21:10

Теги

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