Самый быстрый способ проверить, является ли последний байт файла новой строкой, - это прочитать только этот последний байт. Это можно сделать с помощью tail -c1 file
. Однако упрощенный способ проверить, является ли значение байта новой строкой, в зависимости от оболочки, обычное удаление завершающей новой строки внутри расширения команды не удается (например) в yash, когда последний символ в файле является UTF- 8 значение.
Правильный, POSIX-совместимый, все (разумный) способ оболочки для определения, является ли последний байт файла новой строкой, - это использовать либо xxd, либо hexdump:
tail -c1 file | xxd -u -p
tail -c1 file | hexdump -v -e '/1 "%02X"'
Затем, сравнивая вывод выше с 0A
предоставит надежный тест.
Полезно избегать добавления новой строки в пустой файл.
Файл, который не может предоставить последний символ 0A
, конечно:
f=file
a=$(tail -c1 "$f" | hexdump -v -e '/1 "%02X"')
[ -s "$f" -a "$a" != "0A" ] && echo >> "$f"
Короткий и приятный. Это занимает очень мало времени, так как он просто читает последний байт (переход к EOF). Неважно, большой ли файл. Затем добавьте только один байт, если необходимо.
Временные файлы не нужны и не используются. Никакие жесткие ссылки не затронуты.
Если этот тест запускается дважды, он не добавит еще одну новую строку.
dpkg не предоставляет никаких средств для чтения журнала изменений пакета. вы должны распаковать пакет и прочитать журнал изменений
dpkg -X <package.deb> <folder>
, затем вы можете прочитать журнал изменений с помощью утилиты dpkg-parsechangelog
dpkg-parsechangelog -l <folder>/usr/share/doc/<package>/changelog.Debian.gz
. Поскольку это реальная проблема, если ваш дистрибутив использует apt-get, вы можете использовать
apt-get changelog <packagename>
или
apt changelog <packagename>
Если пакет установлен, просто перейдите в / usr / share / doc /
, и там вы найдете ChangeLog
и Debian (пакет). журнал изменений.
Возможно, файлы заархивированы, в таком случае вы можете использовать zless
для их просмотра.
Если я хочу узнать, например, почему 'passwd' был обновлен в недавнем обновлении, есть ли способ использовать dpkg, чтобы увидеть, что изменилось?
apt-listchanges охватывает этот конкретный случай использования. Вы можете просмотреть записи журнала изменений, соответствующие обновлению.
Если вы хотите просмотреть журналы изменений для пакетов, которые не установлены, вероятно, проще всего поискать в Интернете. Например, зайдите на https://packages.qa.debian.org, введите нужный исходный пакет (скажем, dpkg), и вы увидите журнал изменений справа в разделе 'links'. В данном случае вы попадете на http://metadata.ftp-master.debian.org/changelogs/main/d/dpkg/unstable_changelog.
Этот конкретный сайт можно использовать только для Debian, конечно.