Вот несколько полезных ярлыков, которые можно попробовать:
<Ctrl><Esc>
таблица дисплеев процессов<Ctrl><Alt><Esc>
преобразовывает указатель на череп-и-скрещенные-кости и уничтожит процесс окна, на которое Вы нажимаете<Ctrl><Alt><Backspace>
уничтожает X-сервер<Ctrl><Alt><Del>
завершите работу системы и перезагрузкиПоскольку @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
Это просто предупреждает Вас, что у Вас нет конца строки (\n) на последней строке.
vi
вставьте последнюю новую строку строки. Вы проверили после сохранения?
– enzotib
25.08.2011, 17:04
:set ff=unix
, но у меня есть более чем 200 файлов и требуемый к пакетному преобразованию их.
– Kev
25.08.2011, 17:10
for
цикл для выполнения echo >> myfile
на каждом файле.
– Klox
25.08.2011, 18:14
Машины DOS вводят возврат каретки в конце строк (eol), он должен быть похожим на это в vi ^M
.
Попытайтесь выполнить это:
:%s/^M//g
Можно также использовать 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
При использовании энергии (вместо старого skool vi), можно сделать это:
:set ff=dos
:e!
и Вы сможете отредактировать файлы PHP без всех ужасных суффиксов "^M". Я полагаю, что это сохранит как формат "текстового файла" DOS, также. Это может быть полезно, если Вы совместно используете файлы с (тьфу!) Windows так или иначе.
Немного конъюнктурного высказывания: двухбайтовый маркер конца строки chosed для MS-DOS, должно быть, был одной из самых больших проблем, которые MS-DOS навязал прочь на мире, после сегментов, букв дисков и "\" как разделитель каталога. То, что двухбайтовый маркер является все еще причиной различия между "текстом" и "двоичным файлом". Ickk.
vi +":w ++ff=unix" +":q" ${f}
в цикле. – Kev 25.08.2011, 18:52