暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

从Linux终端打印文件

TIAP 2021-09-04
210

在Linux上打印很容易,但有时启动应用程序、打开文件、在菜单中找到打印选项、单击确认按钮等都会让人感觉工作量很大。当你是Linux终端用户时,通常希望使用简单的触发器执行复杂的操作。打印是复杂的,几乎没有lpr命令那么简单。


使用lpr命令打印

要从终端打印文件,可以使用lpr命令:

    $ lpr myfile.odt


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


    设置默认打印机

    实际的lpr命令是不够的,因为现代计算机很可能可以访问多台打印机,当然也可以访问比点阵式打印机复杂得多的打印机。现在有一个子系统,称为通用Unix打印系统(CUPS),用于跟踪你希望计算机访问的所有打印机,计算机应使用哪个驱动程序与每个打印机通信,默认情况下使用哪个打印机,等等。lpr.cups或lpr-cups命令与cups捆绑在一起,通常符号链接到lpr,允许你首先通过引用通用Unix打印系统(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作为目标之前,它会向系统查询打印机环境变量。

      在本例中,HP_LaserJet_P2015_Series是打印机的可读名称。将打印机设置为该值:

        $ PRINTER=HP_LaserJet_P2015_Series
        $ export 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有一个用户友好的前端,可通过Firefox等web浏览器访问。尽管它使用web浏览器作为用户界面,但它实际上是一个在端口631的计算机(称为localhost的位置)上本地运行的服务。CUPS管理连接到计算机的打印机,并将其配置存储在/etc/CUPS/printers.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,是理光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是结果的后半部分。在本例中,这是理光Aficio 1060-CUPS+Gutenprint v5.2.11。

                  DeviceURI属性标识打印机在网络上的位置(或物理位置,如USB端口)。在本例中,DeviceURI是lpd://192.168.4.8 因为我正在使用lpd(line printer daemon)协议将数据发送到网络打印机。在另一个系统上,我用USB电缆连接了一个HP LaserJet,因此设备URI是DeviceURI:

                  hp:/usb/HP_LaserJet_P2015_Series?serial=00CNCJM26429


                  将作业发送到打印机是一个简单的过程,只要你了解连接到系统的设备以及如何识别它们。从终端打印速度快、效率高、易于编写脚本或作为批处理作业完成。试试看!


                  文章转载自TIAP,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                  评论