Linux print命令详解

一、"print"在Linux中的多重含义

Linux的"print"命令实际涉及三类截然不同的东西

  1. /usr/bin/print:Debian/Ubuntu下mailcap机制提供的命令,会根据文件类型自动选择程序进行打印,实践中很少直接使用
  2. print内建命令 :仅存在于ksh和zsh的内建命令,用于输出文本(类似echo/printf),bash中不可用
  3. 真正的打印命令 :即lp(System V风格)和lpr(BSD风格),这才是用户需要的核心命令

💡 当你想要"在Linux命令行打印文件",实际应使用lp或lpr,而非名为"print"的命令。


二、系统环境准备

2.1 安装打印系统

绝大多数Linux发行版已预装lp和lpr。若缺失,安装CUPS(通用Unix打印系统)即可:

发行版 安装命令
Ubuntu/Debian sudo apt install cups
Fedora/RHEL sudo dnf install cups
Manjaro/Arch sudo pacman -S cups

安装后需启动CUPS服务:sudo systemctl start cups

2.2 检查打印机配置

打印前先确认打印机状态:

命令 用途 示例
lpstat -p 列出已配置的打印机 显示所有打印机及状态
lpstat -d 查看默认打印机 若无默认需手动设置
lpoptions 查看打印机的支持选项 lpoptions -p 打印机名

若没有默认打印机,可通过以下命令设置:

bash

复制代码
export PRINTER=你的打印机名          #临时生效
复制代码
lpoptions -d 你的打印机名           #永久生效

2.3 文件格式说明

lp/lpr不能直接发送任意类型文件 到打印机。打印机通常只理解PostScript(.ps)或PDF格式。因此,打印Word文档等文件前,需先转换为支持的格式------这也就是为什么普通用户更多使用GUI应用程序(如LibreOffice)打印,因为应用程序会自行完成格式转换。


三、基础打印命令:lp vs lpr

Linux历史上存在两套打印命令风格:System V体系(以lp为代表)和BSD体系(以lpr为代表)。当前主流的CUPS系统同时支持两者,绝大多数场景下它们可以互换使用

3.1 lp命令------System V风格

基本语法

bash

复制代码
lp [选项] [文件名]
参数 含义 示例
-d printer 指定打印机 lp -d myprinter file.txt
-n num 打印份数 lp -n 5 file.txt 打印5份
-P pages 指定页码范围 lp -P 1-3 file.txt
-t title 作业标题 lp -t "Report" file.txt
-o option 打印机特定选项 lp -o media=A4 file.txt
-m 完成后发送邮件 lp -m file.txt
-H 指定打印时间 lp -H 08:00 file.txt(延迟到8点)
-U username 指定用户名 lp -U john file.txt
-E 强制加密连接 lp -E file.txt

3.2 lpr命令------BSD风格

基本语法

bash

复制代码
lpr [选项] [文件名]
参数 含义 示例
-P printer 指定打印机 lpr -P myprinter file.txt
-# num 打印份数 lpr -# 3 file.txt 打印3份
-T title 作业标题 lpr -T "Report" file.txt
-o option 打印机特定选项 lpr -o media=A4 file.txt
-r 打印后删除原文件 lpr -r file.txt
-h 不打印标题页 lpr -h file.txt
-m 完成后发送邮件 lpr -m file.txt

3.3 标准输入(stdin)用法

两者均支持从管道接收数据,方便脚本集成:

bash

复制代码
echo "Hello, World!" | lp                     #一行内容直接打印
复制代码
ls -l | lpr                                   #打印目录列表
复制代码
cat *.txt | lpr -P myprinter                  #合并多个文件并打印

四、打印选项详解

4.1 页面与布局控制

通过-o参数(lp和lpr均支持)控制打印外观:

选项 功能 示例
media=A4 / media=Letter 纸张大小 -o media=A4
orientation-requested=Portrait 纵向 -o orientation-requested=Portrait
orientation-requested=Landscape 横向 -o orientation-requested=Landscape
fit-to-page 自适应缩放 -o fit-to-page
color=black-and-white 黑白打印 -o color=black-and-white
sides=one-sided 单面打印 -o sides=one-sided
sides=two-sided-long-edge 双面(长边装订) -o sides=two-sided-long-edge
sides=two-sided-short-edge 双面(短边装订) -o sides=two-sided-short-edge
page-ranges=1-5 打印指定页 -o page-ranges=1-3
job-name="My Document" 作业命名 -o job-name="Report"

4.2 打印机依赖选项

不同打印机的选项集不同,使用lpoptions -l查看当前打印机支持的具体选项。


五、完整示例

5.1 打印文本文件

bash

复制代码
#使用默认打印机打印
复制代码
lp document.txt
复制代码
复制代码
#或
复制代码
lpr document.txt

5.2 指定打印机打印

bash

复制代码
# lp风格
复制代码
lp -d HP_LaserJet document.pdf
复制代码
复制代码
# lpr风格
复制代码
lpr -P HP_LaserJet document.pdf
相关推荐
fanzhonghong1 小时前
javaWeb后端开发之Linux项目部署3和Docker部署1
linux·服务器·前端·docker
AI云原生1 小时前
容器网络模型与服务发现:从踩坑到精通,Kubernetes 网络问题排查全指南
服务器·网络·云原生·容器·kubernetes·云计算·服务发现
石小千1 小时前
Docker-排查占用磁盘空间大问题
运维·docker·容器
仙柒4151 小时前
Docker 网络
运维·docker·容器
Harm灬小海1 小时前
【云计算学习之路】学习Centos7系统:服务搭建(NFS)
linux·运维·服务器·学习·云计算
Harm灬小海1 小时前
【云计算学习之路】学习Centos7系统-权限管理
linux·运维·服务器·学习·云计算
我先去打把游戏先1 小时前
Ubuntu虚拟机(服务器版本)Git安装教程(附常用命令)——从零开始掌握版本控制
服务器·c语言·c++·git·嵌入式硬件·物联网·ubuntu
xhbh6661 小时前
MC端口映射完全教程:路由器虚拟服务器配置+防火墙放行+内网穿透备用方案
运维·服务器·网络·网络协议·tcp/ip·智能路由器·流量端口转发
weixin_426150701 小时前
AI辅助Oracle容量规划:告别拍脑袋扩容
运维·数据库·人工智能·oracle