从 Linux 终端打印文件
创始人
2024-03-02 09:32:17
0

使用 lpr 命令在终端中打印文件。

在 Linux 上打印很容易,但有时感觉要做很多工作,比如启动应用程序、打开文件、在菜单中找到打印选项,单击确认按钮等等。当你是一个终端用户时,通常希望使用简单的触发器执行复杂的操作。打印很复杂,但没有什么比 lpr 命令更简单了。

使用 lpr 命令打印

使用 lpr 命令在终端打印文件:

$ lpr myfile.odt

如果失败的话,你需要设置默认打印机或手动指定打印机。

设置默认打印机

根据我在 1984 年印刷的 Berkeley 4.2 手册的旧版本中找到的资料,lpr 命令会分页并将文件发送到打印机池,后者将数据传输到称为 行式打印机 line printer 的东西。

现在,最初的 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 守护进程。

一个典型的文件定义如下所示:


  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

在本例中,打印机的名称是 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中国 荣誉推出

相关内容

这款面向儿童的AI语音打印...
只需要语音交互,就能打印出自己想要的贴纸。最近,AI语音贴纸打印机...
2025-12-07 15:15:54
爱普生携AI+教育打印方案...
2025-10-28 11:04:31 作者:狼叫兽 10月24...
2025-10-28 12:18:35
京东:AI手机、AI学习机...
多知10月16日消息,自10月9日启动京东双11活动以来,截至14...
2025-10-16 13:16:28
开源打印机 Open Pr...
IT之家 9 月 30 日消息,科技媒体 Notebook Che...
2025-09-30 14:45:18
Switch 2创意手柄座...
边玩游戏边吃薯条很不方便?没关系,已经有高能人士帮玩家们想到解决方...
2025-07-30 13:13:55
2023年天津财经大学珠江...
2023年天津财经大学珠江学院高职升本科专业课准考证打印及相关事宜...
2025-06-01 20:24:08

热门资讯

如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
Textual:为 Pytho... 快速入门使用 TextualPython 在 Linux 上有像 TkInter 这样的优秀 GUI...
硬核观察 #1245 Open... #1 OpenAI 悄然删除禁止将 ChatGPT 用于 “军事和战争” 的禁令在 1 月 10 日...
使用时间序列数据,用开源工具助... InfluxData 是一个开源的时间序列数据库平台。下面介绍了它是如何被用于边缘应用案例的。收集到...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
硬核观察 #1249 LG 洗... #1 LG 洗衣机每天上传近 4GB 的数据?一个名为 Johnie 的 LG 洗衣机用户发现,他的...
2024 年 Linux 和开... 让我们尝试预测未来吧!新的一年快乐,朋友们 ✨2024 年的钟声已经敲过,我们有必要去预见一下将塑造...