從 Linux 終端列印文件
在 Linux 上列印很容易,但有時感覺要做很多工作,比如啟動應用程序、打開文件、在菜單中找到列印選項,單擊確認按鈕等等。當你是一個終端用戶時,通常希望使用簡單的觸發器執行複雜的操作。列印很複雜,但沒有什麼比 lpr
命令更簡單了。
使用 lpr 命令列印
使用 lpr
命令在終端列印文件:
$ lpr myfile.odt
如果失敗的話,你需要設置默認印表機或手動指定印表機。
設置默認印表機
根據我在 1984 年印刷的 Berkeley 4.2 手冊的舊版本中找到的資料,lpr
命令會分頁並將文件發送到印表機池,後者將數據傳輸到稱為 行式印表機 的東西。
現在,最初的 lpr
命令已經無法滿足,因為現代計算機可以訪問多台印表機,而且是那些比點陣行式印表機複雜得多的印表機。現在有一個稱為 通用 Unix 列印系統 (CUPS)子系統,可以跟蹤你的計算機可以訪問的所有印表機,計算機應該使用哪個驅動程序與每台印表機通信,默認使用哪台印表機等等。 CUPS 捆綁提供的 lpr.cups
或 lpr-cups
命令通常以符號鏈接到 lpr
,允許你首先藉助 CUPS 配置從終端列印。
使用 lpr
列印文件,你應該首先設置默認印表機。你可以在系統的印表機設置中設置:
或者,你也可以使用 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 有一個友好的前端頁面,可通過 Web 瀏覽器如 Firefox 訪問。雖然它使用 Web 瀏覽器作為用戶界面,但它實際上是在本機(一個稱為 localhost
的位置)的 631 埠上提供服務。CUPS 管理連接到計算機的印表機,並將其配置存儲在 /etc/cups/priters.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 埠)。在本例中,它是 lpd://192.168.4.8
,因為我使用 lpd
協議將數據發送到一台網路印表機。在我的另一個系統上,我有一個通過 USB 連接的 HP LaserJect 印表機,因此 DeviceURI
是 hp:/usb/HP_LaserJet_P2015_Series?serial=00CNCJM26429
。
在終端中列印
將作業發送到印表機是一個簡單的過程,只要你了解連接到系統的設備以及如何識別它們。在終端列印非常快速、高效,並且易於編寫腳本或作為批處理作業完成。試試看!
via: https://opensource.com/article/21/9/print-files-linux
作者:Seth Kenlon 選題:lujun9972 譯者:MjSeven 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive