Как я могу распечатать вывод командной строки непосредственно на принтер?
Я использую ubuntu server 12.04, и мне нужно скопировать файлы в общий каталог, а затем загрузить их из настольного дистрибутива ubuntu, чтобы распечатать их.
lpr отправляет файлы на печать. Файлы, указанные в командной строке, отправляются на принтер с именем (или в пункт назначения по умолчанию, если пункт назначения не указан). Если в командной строке нет файлов, lpr считывает файл печати из стандартного ввода.
man lp дает выходные данные:
lp отправляет файлы на печать или изменяет ожидающее задание. Используйте имя файла "-" для принудительной печати из стандартного ввода.
Они полезны для предоставления пронумерованных страниц с заголовками и необязательными номерами строк.Вы также можете использовать его для печати в стиле буклета (например, по две страницы с каждой стороны листа).
Я использую их с принтерами с поддержкой Postscript, но я считаю, что система печати Ubuntu может растрировать PS для любого поддерживаемого принтера.
Возможно, вы захотите сначала узнать, как осуществляется доступ к принтеру - lpstatдаст вам эту информацию. Если вы сравните его выходные данные в обеих системах, вы, вероятно, сможете определить, был ли соответствующий принтер настроен на обеих из них. lpstat -p -d выводит список всех принтеров с указанием их статуса и сообщает, какой из них был установлен в качестве принтера по умолчанию.
Вы можете просто передать свой вывод в lp или lpr тогда командуй. Однако вы можете захотеть вставить фильтр для автоматической печати или разбивки на страницы. На сайте есть хорошее краткое описание инструментов руководство debian "Выделение и форматирование текстовых данных", но обычно я просто использую sed чтобы выделить подсказки и другие материалы, прежде чем отправлять все через a2ps
Вопрос заключается в том, как печатать из командной строки на сервере, и похоже, что у вас еще нет никаких принтеров, определенных в этой системе. У меня нет системы для проверки, поэтому следующие данные являются приблизительными, но они должны дать вам общее представление:
Убедитесь, что система CUPS установлена и запущена. Он предоставляет демонов, которые будут обрабатывать ваши задания на печать.
После этого вам необходимо настроить один или несколько сетевых принтеров для печати. Обычный способ установки принтеров - с помощью Администратор принтера утилита, но вы, очевидно, не настроены на запуск каких-либо GUIP-программ со своего сервера - просто доступ из командной строки через ssh. Поскольку у вас уже есть настольная система Ubuntu в той же сети, я бы попробовал скопировать содержимое каталога /etc/cups из окна рабочего стола на сервер. Он должен содержать все необходимые определения принтера и драйверы. Проверьте файлы на наличие любых необходимых настроек (в случае, если в вашей настройке указаны идентификаторы пользователей или пароли, которые отличаются между двумя системами), перезапустите cupsd, и если вам повезет, вы сможете использовать lpr для печати из командной строки.
пс. В крайнем случае, вы могли бы установить достаточное количество утилит X для запуска Администратор печати Утилита GUI через удаленное подключение X к вашему рабочему столу Ubuntu box (войдите в систему с помощью ssh -X) и определите нужные вам принтеры. Но, надеюсь, в этом не будет необходимости.
Если вы хотите управлять различными параметрами макета, шрифтами, размером шрифта и т.д. Вы можете использовать enscript как предложено RedGrittyBrick.
sudo apt install enscript
Несколько деталей, которые могут оказаться полезными:
Шрифты, которые вы можете использовать, - это те, которые имеют .afm файл в /usr/share/enscript/afm/
Имя шрифта, которое будет использоваться с -f опция должна быть кратким именем, указанным как FontName in it's .afm file. For example: "ZapfDingbats", not "ITC Zapf Dingbats". Эти имена также перечислены в /usr/share/enscript/afm/font.map файл.
Если вы хотите увидеть, какие моноширинный шрифты, которые у вас есть, вы могли бы использовать что-то вроде этого: for f in /usr/share/enscript/afm/*.afm; do grep -q '^IsFixedPitch true' "$f" && grep FontName "$f"; done
Чтобы задать размер шрифта, добавьте "@n" к названию шрифта.
Вы можете получить список имен принтеров, которые будут использоваться для -d или -P вариант с lpstat -p
Пример команды печати :
font=Courier@9printer=HP-4350your_command | enscript -P $printer -f $font --tabsize=4# or for files:enscript -P $printer -f $font --tabsize=4 $Your_file_to_print
Конечно, есть еще много вариантов, перечисленных с man enscript.
Вы не сказали, будете ли вы печатать обычный текст или PDF. Некоторые системы поддерживают только обычный текст из коробки, поэтому это необходимо учитывать.