从 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+3D打印”超级工厂。5月15日,成都经开区增材智造...
2026-05-16 16:24:10
北青AI把创意变成产品,消...
这个新春假期,北青AI文创打印机,以新鲜体验、便捷服务、科技助力个...
2026-02-23 18:48:43
代表委员点赞“AI画师”
北京两会开幕以来,北京青年报在市人大现场直播间和市政协现场直播间分...
2026-01-28 07:51:55
二维设计想换强大引擎?Dr...
是时候,为您的二维设计换一个更强大的引擎了!您可能还不知道,达索系...
2026-01-22 09:49:53
这款面向儿童的AI语音打印...
只需要语音交互,就能打印出自己想要的贴纸。最近,AI语音贴纸打印机...
2025-12-07 15:15:54
爱普生携AI+教育打印方案...
2025-10-28 11:04:31 作者:狼叫兽 10月24...
2025-10-28 12:18:35

热门资讯

“Linux 中国” 开源社区... 这是一个艰难的决定 —— 这不是调侃,而是当你真正做出改变了你十几年生活轨迹的决定时,你就会明白这个...
硬核观察 #1263 德国铁路... #1 德国铁路公司招聘 Windows for Workgroups 3.11 管理员该职位要求了解...
人工智能教程(七):Sciki... 在本系列的 上一篇文章 中,我们用 TensorFlow 构建了第一个神经网络,然后还通过 Kera...
关闭 WSL 中正在运行的 L... 以下是使用 WSL 关闭在 Windows 内运行的 Linux 系统的不同方法。你使用 WSL 在...
MX Linux 23.2 “... 最新的 MX Linux 23.2 小版本更新带来了基本的改进和新增功能。MX Linux 推出了 ...
硬核观察 #1262 网络上最... #1 网络上最古老的软件存档库之一即将关闭美国新墨西哥州立大学(NMSU)最近宣布,即将于 2024...
如何在 RHEL 上通过绑定配... 在 Linux 中,你可以根据自己的需要创建高级网络设置,如 网络绑定 Network Bondin...
Linux Matrix 消息... Matrix 用户可以升级 Fractal 6 了!Fractal 是目前 最好的 Matrix 客...
如何通过 VLC 使用字幕 使用 VLC 媒体播放器播放和管理字幕的新手指南。我是一个超级动漫迷,如果你想观看最新的剧集,那么你...
硬核观察 #1261 X 计划... #1 X 计划在奥斯汀建立内容审核总部据报道,该部门将招聘 100 名全职员工,将主要关注 CSE ...