Распечатайте файлы с вашего терминала Linux
Чтобы распечатать файл с вашего терминала, используйте команду lpr.
Печать в Linux проста, но иногда кажется, что запуск приложения, открытие файла, поиск пункта Печать в меню, нажатие кнопки подтверждения и т. д. требует больших усилий. Когда вы являетесь пользователем терминала Linux, вам часто хочется выполнять сложные действия с помощью простых триггеров. Печать сложна, и нет ничего проще, чем команда lpr
.
Печать с помощью команды lpr
Чтобы распечатать файл с вашего терминала, используйте команду lpr
:
$ lpr myfile.odt
Если это не поможет, вам необходимо установить принтер по умолчанию или указать принтер вручную.
Установка принтера по умолчанию
Согласно моей потрепанной копии руководства по Berkeley 4.2, напечатанному в 1984 году, команда lpr
разбивала файл на страницы и отправляла файл в спул принтера, который передавал данные в потоковом режиме на нечто, называемое линейным принтером.
Рисунок 1: Команда lpr.
В наши дни фактической команды lpr
недостаточно, поскольку современные компьютеры, скорее всего, будут иметь доступ к нескольким принтерам, и, конечно же, к принтерам, которые намного сложнее, чем матричный линейный принтер. Теперь есть подсистема, называемая Common Unix Printing System (CUPS), которая отслеживает все принтеры, к которым вы хотите, чтобы ваш компьютер имел доступ, какой драйвер ваш компьютер должен использовать для связи с каждым принтером, какой принтер использовать по умолчанию и скоро. Команды lpr.cups
или lpr-cups
, поставляемые в комплекте с CUPS и обычно имеющие символическую ссылку на lpr
, позволяют вам печатать с терминала, ссылаясь на ваш Сначала настройте общую систему печати Unix (CUPS).
Чтобы распечатать файл с помощью lpr
, вам следует сначала установить принтер по умолчанию. Вы можете установить принтер по умолчанию в настройках принтера вашей системы:
Рисунок 2. Установите принтер по умолчанию.
Альтернативно вы можете пометить принтер как принтер по умолчанию с помощью команды lpadmin
:
$ sudo lpadmin -d HP_LaserJet_P2015_Series
$ lpstat -v
device for HP_LaserJet_P2015_Series: ipp://10.0.1.222:631/printers/HP_LaserJet_P2015_Series
Установка места назначения по умолчанию с помощью переменных среды
Вам не разрешено устанавливать собственный принтер по умолчанию в системах, в которых у вас нет учетной записи администратора, поскольку изменение мест назначения печати считается привилегированной задачей. Прежде чем lpr
ссылается на CUPS в качестве места назначения, он запрашивает в вашей системе переменную среды PRINTER.
В этом примере HP_LaserJet_P2015_Series
— это удобочитаемое имя, присвоенное принтеру. Установите для PRINTER это значение:
$ PRINTER=HP_LaserJet_P2015_Series
$ export PRINTER
После установки переменной PRINTER вы можете распечатать:
$ lpr myfile.pdf
Получить список подключенных принтеров
Вы можете просмотреть все принтеры, принимающие задания на печать и подключенные к вашей системе, с помощью команды lpstat
:
$ lpstat -a
HP_LaserJet_P2015_Series accepting requests since Sun 1 Aug 2021 10:11:02 PM NZST
r1060 accepting requests since Wed 18 Aug 2021 04:43:57 PM NZST
Печать на произвольный принтер
После того как вы добавили принтеры в свою систему и теперь знаете, как их идентифицировать, вы можете печатать на любом из них, независимо от того, установлен ли у вас пункт назначения по умолчанию или нет:
$ lpr -P HP_LaserJet_P2015_Series myfile.txt
Как определяются принтеры
CUPS имеет удобный интерфейс, доступный через веб-браузер, например Firefox. Несмотря на то, что в качестве пользовательского интерфейса он использует веб-браузер, на самом деле это служба, работающая локально на вашем компьютере (местоположение под названием localhost) через порт 631. CUPS управляет принтерами, подключенными к вашему компьютеру, и хранит конфигурация в /etc/cups/printers.conf
.
Файл printers.conf
состоит из определений, подробно описывающих устройства печати, к которым может получить доступ ваш компьютер. Вы не должны редактировать его напрямую, но если вы это сделаете, сначала вам необходимо остановить демон cupsd
.
Типичная запись выглядит примерно так:
<Printer r1060>
Info Ricoh 1060
Location Downstairs
MakeModel Ricoh Aficio 1060 - CUPS+Gutenprint v5.2.6
DeviceURI lpd://192.168.4.8
State Idle
StateTime 1316011347
Type 12308
Filter application/vnd.cups-raw 0 -
Filter application/vnd.cups-raster 100 rastertogutenprint.5.2
Accepting Yes
Shared No
JobSheets none none
QuotaPeriod 0
PageLimit 0
KLimit 0
OpPolicy default
ErrorPolicy stop-printer
</Printer>
В этом примере имя принтера — r1060
— удобочитаемый идентификатор Ricoh Aficio 1060.
Атрибут MakeModel извлекается из команды lpinfo
, которая выводит список всех доступных драйверов принтеров в вашей системе. Предполагая, что вы знаете, что у вас есть Ricoh Aficio 1060, на котором вы хотите печатать, вы должны ввести следующую команду:
$ lpinfo -m | grep 1060
gutenprint.5.2://brother-hl-1060/expert Brother HL-1060 - CUPS+Gutenprint v5.2.11
gutenprint.5.2://ricoh-afc_1060/expert Ricoh Aficio 1060 - CUPS+Gutenprint v5.2.11
Эта команда выводит список соответствующих установленных вами драйверов.
MakeModel — это последняя половина результата. В данном примере это Ricoh Aficio 1060 — CUPS+Gutenprint v5.2.11
.
Атрибут DeviceURI определяет, где находится принтер в сети (или физическое местоположение, например порт USB). В этом примере DeviceURI — это lpd://192.168.4.8
, поскольку для отправки я использую протокол lpd
(демон линейного принтера). данные на сетевой принтер. В другой системе у меня есть HP LaserJet, подключенный с помощью USB-кабеля, поэтому DeviceURI — это DeviceURI hp:/usb/HP_LaserJet_P2015_Series?serial=00CNCJM26429
.
Печать с терминала
Отправка задания на принтер — простой процесс, если вы понимаете, какие устройства подключены к вашей системе, и как их идентифицировать. Печать с терминала выполняется быстро, эффективно и легко запрограммирована или выполняется в виде пакетного задания. Попробуйте!