Если у вас есть файлы, которые являются текстовыми файлами DOS, а некоторые являются текстовыми файлами Unix, ваш сценарий может передавать все данные черезdos2unix
:
dos2unix
Текстовые файлы Unix при этом не изменятся.
Чтобы дополнительно справляться с разрывами строк Mac, я считаю, что вы должны уметь
dos2unix
Последняя строка не выводится вашим циклом read
, так как он не завершается и, следовательно, вообще не является строкой.
Чтобы определить, нет ли в файле завершающей новой строки в последней строке, и добавить ее, если нет, вbash
:
if [ "$( tail -c 1 filename )" != $'\n' ]; then
printf '\n' >>filename
fi
Связанные:
Это нормальное . Это раскраска синтаксиса для типа файла svn
(тип файла gitcommit
имеет аналогичный ). Красный фон говорит вам, что вторая строка должна быть отделена от первой пустой строкой. Это рекомендуемый формат (из руководства git commit
среди прочих ), и ваше сообщение о коммите не соответствует ему.
Вы можете увидеть команду, которая автоматически устанавливает этот тип файла при открытии файлов сообщений фиксации Subversion, с
:autocmd BufRead svn-commit*.tmp(Аналогично есть автокоманда для файлов git
COMMIT_EDITMSG
. )Отключите автокоманду, если вы не хотите, чтобы тип файла автоматически распознавался при загрузке. Отключите раскраску синтаксиса, если вы вообще не хотите раскрашивать синтаксис.
Но также используйте рекомендуемый стиль сообщения фиксации.
git-commit
. Справочное руководство git . git -scm.com. :help filetype
:help autocmd-remove
:help syntax