從 Linux 終端打印文件
使用 lpr 命令在終端中打印文件。
在 Linux 上打印很容易,但有時(shí)感覺要做很多工作,比如啟動(dòng)應(yīng)用程序、打開文件、在菜單中找到打印選項(xiàng),單擊確認(rèn)按鈕等等。當(dāng)你是一個(gè)終端用戶時(shí),通常希望使用簡單的觸發(fā)器執(zhí)行復(fù)雜的操作。打印很復(fù)雜,但沒有什么比 lpr
命令更簡單了。
使用 lpr 命令打印
使用 lpr
命令在終端打印文件:
$ lpr myfile.odt
如果失敗的話,你需要設(shè)置默認(rèn)打印機(jī)或手動(dòng)指定打印機(jī)。
設(shè)置默認(rèn)打印機(jī)
根據(jù)我在 1984 年印刷的 Berkeley 4.2 手冊(cè)的舊版本中找到的資料,lpr
命令會(huì)分頁并將文件發(fā)送到打印機(jī)池,后者將數(shù)據(jù)傳輸?shù)椒Q為 行式打印機(jī) 的東西。
顯示 LPR 命令信息的頁面
現(xiàn)在,最初的 lpr
命令已經(jīng)無法滿足,因?yàn)楝F(xiàn)代計(jì)算機(jī)可以訪問多臺(tái)打印機(jī),而且是那些比點(diǎn)陣行式打印機(jī)復(fù)雜得多的打印機(jī)?,F(xiàn)在有一個(gè)稱為通用 Unix 打印系統(tǒng)(CUPS)子系統(tǒng),可以跟蹤你的計(jì)算機(jī)可以訪問的所有打印機(jī),計(jì)算機(jī)應(yīng)該使用哪個(gè)驅(qū)動(dòng)程序與每臺(tái)打印機(jī)通信,默認(rèn)使用哪臺(tái)打印機(jī)等等。 CUPS 捆綁提供的 lpr.cups
或 lpr-cups
命令通常以符號(hào)鏈接到 lpr
,允許你首先借助 CUPS 配置從終端打印。
使用 lpr
打印文件,你應(yīng)該首先設(shè)置默認(rèn)打印機(jī)。你可以在系統(tǒng)的打印機(jī)設(shè)置中設(shè)置:
設(shè)置默認(rèn)打印機(jī)對(duì)話框
或者,你也可以使用 lpadmin
命令設(shè)置:
$ 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
使用環(huán)境變量設(shè)置
你不能在沒有管理員賬戶的系統(tǒng)上設(shè)置默認(rèn)打印機(jī),因?yàn)楦拇蛴C(jī)默認(rèn)設(shè)置是一項(xiàng)特權(quán)任務(wù)。在 lpr
借助 CUPS 找到目標(biāo)打印機(jī)前,它會(huì)在系統(tǒng)中查詢 PRINTER
環(huán)境變量。
在本例中,HP_LaserJet_P2015_Series
是打印機(jī)的名稱。將 PRINTER
設(shè)置為該值:
$ PRINTER=HP_LaserJet_P2015_Series
$ export PRINTER
一旦設(shè)置了 PRINTER
變量,你就可以打印了:
$ lpr myfile.pdf
獲取連接的打印機(jī)列表
你可以使用 lpstat
命令查看所有連接到系統(tǒng)接受打印任務(wù)的打印機(jī):
$ 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
打印到任意一臺(tái)打印機(jī)
將打印機(jī)添加到系統(tǒng)后,并且現(xiàn)在你知道如何識(shí)別它們了,你可以打印到其中任何一臺(tái),無論你是否設(shè)置了默認(rèn)打印機(jī):
$ lpr -P HP_LaserJet_P2015_Series myfile.txt
如何定義打印機(jī)
CUPS 有一個(gè)友好的前端頁面,可通過 Web 瀏覽器如 Firefox 訪問。雖然它使用 Web 瀏覽器作為用戶界面,但它實(shí)際上是在本機(jī)(一個(gè)稱為 localhost
的位置)的 631 端口上提供服務(wù)。CUPS 管理連接到計(jì)算機(jī)的打印機(jī),并將其配置存儲(chǔ)在 /etc/cups/priters.conf
中。
printers.conf
文件包含詳細(xì)描述計(jì)算機(jī)可以訪問的打印設(shè)備的定義。不要直接編輯它,但如果你想這樣做,你必須先停止 cupsd
守護(hù)進(jìn)程。
一個(gè)典型的文件定義如下所示:
<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>
在本例中,打印機(jī)的名稱是 r1060
,即 “Ricoh Aficio 1060”。
MakeModel
屬性是從 lpinfo
命令中提取的,該命令列出了系統(tǒng)上所有可用的打印機(jī)驅(qū)動(dòng)程序。假設(shè)你知道要打印到 Ricoh Aficio 1060,那么你會(huì)發(fā)出以下命令:
$ 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
它會(huì)列出已安裝的相關(guān)驅(qū)動(dòng)程序。
MakeModel
屬性是結(jié)果的后半部分。在本例中為 Ricoh Aficio 1060 - CUPS+Gutenprint v5.2.11
。
DeviceURI
屬性標(biāo)識(shí)打印機(jī)在網(wǎng)絡(luò)上的位置(或物理位置,例如 USB 端口)。在本例中,它是 lpd://192.168.4.8
,因?yàn)槲沂褂?nbsp;lpd
協(xié)議將數(shù)據(jù)發(fā)送到一臺(tái)網(wǎng)絡(luò)打印機(jī)。在我的另一個(gè)系統(tǒng)上,我有一個(gè)通過 USB 連接的 HP LaserJect 打印機(jī),因此 DeviceURI
是 hp:/usb/HP_LaserJet_P2015_Series?serial=00CNCJM26429
。
在終端中打印
將作業(yè)發(fā)送到打印機(jī)是一個(gè)簡單的過程,只要你了解連接到系統(tǒng)的設(shè)備以及如何識(shí)別它們。在終端打印非??焖?、高效,并且易于編寫腳本或作為批處理作業(yè)完成。試試看!