Linux中國

從 Linux 終端列印文件

在 Linux 上列印很容易,但有時感覺要做很多工作,比如啟動應用程序、打開文件、在菜單中找到列印選項,單擊確認按鈕等等。當你是一個終端用戶時,通常希望使用簡單的觸發器執行複雜的操作。列印很複雜,但沒有什麼比 lpr 命令更簡單了。

使用 lpr 命令列印

使用 lpr 命令在終端列印文件:

$ lpr myfile.odt

如果失敗的話,你需要設置默認印表機或手動指定印表機。

設置默認印表機

根據我在 1984 年印刷的 Berkeley 4.2 手冊的舊版本中找到的資料,lpr 命令會分頁並將文件發送到印表機池,後者將數據傳輸到稱為 行式印表機 line printer 的東西。

顯示 LPR 命令信息的頁面

現在,最初的 lpr 命令已經無法滿足,因為現代計算機可以訪問多台印表機,而且是那些比點陣行式印表機複雜得多的印表機。現在有一個稱為 通用 Unix 列印系統 Common Unix Printing System (CUPS)子系統,可以跟蹤你的計算機可以訪問的所有印表機,計算機應該使用哪個驅動程序與每台印表機通信,默認使用哪台印表機等等。 CUPS 捆綁提供的 lpr.cupslpr-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 印表機,因此 DeviceURIhp:/usb/HP_LaserJet_P2015_Series?serial=00CNCJM26429

在終端中列印

將作業發送到印表機是一個簡單的過程,只要你了解連接到系統的設備以及如何識別它們。在終端列印非常快速、高效,並且易於編寫腳本或作為批處理作業完成。試試看!

via: https://opensource.com/article/21/9/print-files-linux

作者:Seth Kenlon 選題:lujun9972 譯者:MjSeven 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國