Вы можете попробовать enscript
. У него много функций, многие из которых вас не интересуют, но вы можете установить размер шрифта и размер носителя. Он не центрирует и не выравнивает, но вы можете визуализировать результат с помощью ghostview и внести поправки в свои данные. Попробуйте это сделать:
cat <<\! >>~/.enscriptrc
# Media: name width height llx lly urx ury bounding box lowleft upright
# 57mm x 32 mm converted to points:
Media: mylabel 161 90 0 0 161 90
!
echo 'hello and hello followed by bye bye' |
enscript -p - -h -B -M mylabel -f Helvetica-Bold@30 >out.ps
gv --media=mylabel out.ps
Вы можете увидеть, как текст разбивается на 2 страницы заданного размера.
Вывод предложенной команды:
Вы правы, но я бы не стал утверждать, что функции используются неправильно.
Честно говоря, я не понимаю части
"${LSB:-}"
, так как я нигде не могу найти эту переменную LSB
И я не могу найти где-либо установленную $LSB. Я могу только догадываться, почему эта переменная проверяется; полный тест:
[ "$BOOTUP" != "verbose" -a -z "${LSB:-}" ] && echo_success
Результатом теста является запуск echo_success
, если значение переменной BOOTUP равно не "подробным", а переменная LSB не набор. Определение синтаксиса ${varname:-text}
:
${parameter:-word} Используйте значения по умолчанию.
Если параметр не установлен или равен нулю, подставляется расширение слова. В противном случае подставляется значение параметра.
Здесь после тире нет «слова», поэтому, если $LSB не установлен или равен нулю, то все расширение приводит к (ничего), что позволяет пройти тест -z
.
Мое предположение заключается в том, что логика существует на тот случай, если вы захотите изменить поведение сценария инициализации, чтобы он не запускал эти функции success() или failure().
Во-вторых,
как сценарии используют функцию успеха, например, последняя строка функции демона:
[ "$?" -eq 0 ] && success $"$base startup" || failure $"$base startup"
Вы правы в том, что эти параметры передаются функциям, но не используются. Безвредно передавать параметры, которые не используются — это просто непоследовательно/запутанно! Мое предположение заключается в том, что предыдущие версии этих функций рассматривали (возможно, регистрировали?) переданные параметры.
Обратите внимание, что функция init_crypto()
вызывает success() (или failure()) без параметров!