Вы можете добавить разные профили в CUPS для одного принтера. Пример :У меня есть цветной лазерный принтер Samsung, и я использую профиль по умолчанию для цветной печати. и добавил второй профиль для оттенков серого. Всякий раз, когда я хочу печатать, я выбираю принтер по умолчанию или принтер в градациях серого.
Вы можете изменить это в веб-интерфейсе.
Изменить профиль по умолчанию (лоток 1 ):Перейдите к http ://localhost :631/admin -> «Управление принтерами» -> выберите принтер -> выберите «Установить параметры по умолчанию» из раскрывающегося списка -> выберите лоток 1 в качестве источника бумаги по умолчанию -> «Установить параметры по умолчанию»
Добавить еще один профиль (лоток 2 ):Перейдите к http ://localhost :631/admin -> «Добавить принтер» -> выберите принтер -> выберите другое имя и описание -> продолжить -> «Добавить принтер» -> выбрать лоток 2 в качестве источника бумаги по умолчанию -> «Установить параметры по умолчанию»
Ваш скрипт должен ожидать дочернего процесса less
, иначе ваш скрипт завершится раньше него, и less
внезапно окажется вне группы процессов переднего плана, не имея возможности читать команды с терминала или восстанавливать настройки терминала больше.
Кроме того, чтобы предотвратить less
вечное ожидание окончания своего ввода, ваш сценарий должен закрыть канал к нему.
Собираем все вместе:
exec > >(less) 2>&1
trap 'exec >&- 2>&-; wait' EXIT
# >&- 2>&- => close stdout and stderr => cause EOF on less' stdin
seq 1 50000
# the rest of your script
Но это не очень хорошо, не переносимо на большинство других оболочек, и, полагаясь на недокументированное (и ненадежное )поведение bash :, wait
не будет нормально работать, если у вас более одного exec > >(...)
в вашем скрипте, и он также будет ожидать других фоновых процессов, запущенных с помощью &
.
Было бы лучше, если бы ваш скрипт вызывал сам себя, используя переменную среды, чтобы избежать бесконечной рекурсии:
if [ ! "$CALLED_MYSELF" ]; then
set -o pipefail # supported in bash, but not in all the shells
CALLED_MYSELF=1 "$0" "$@" 2>&1 | less
exit
fi
seq 1 50000
# the rest of your script
Попробуйте только это (без строки exec
):
for (( i=1; i <= 500; i++ )); do echo "hello world $i"; done | less
(обновление)
Если вы хотите включить весь сценарий, вы можете обернуть сценарий с помощью{... }
#!/bin/bash
{
# output some text
for (( i=1; i <= 500; i++)) do echo "hello world $i"; done
# whatever output you want...
} | less