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
相关推荐
阿龙的工作记录5 分钟前
深入理解Linux设备驱动模型
linux·嵌入式硬件·工作记录
代码村新手18 分钟前
Linux的基本指令
linux·运维·服务器
MonolithIoT1 小时前
实战方案|设备备件无人值守仓库:连续化产线运维备件 7×24 小时数字化管控方案
运维·网络·数据库
瞬间&永恒~1 小时前
【MySQL】4-6:在同一个主机上使用 systemd 运行多个 MySQL服务器
服务器·数据库·mysql
gwf2162 小时前
磨损均衡算法(Wear Leveling)——SSD如何让每块闪存“公平退休“?
运维·数据库·人工智能·python·嵌入式硬件·算法·智能硬件
AAA@峥2 小时前
CentOS7 源码编译安装 MySQL5.7|SQL 基础操作 + 备份恢复完整实战
运维·数据库·sql·centos
撩得Android一次心动2 小时前
Linux编程笔记3【个人用】
linux·笔记
OpenPomeloxCommunity2 小时前
3. Linux 同步机制之 spinlock 设计与实现(一):通用层
linux
念恒123063 小时前
网络基础
linux·网络·c++
Ai_easygo3 小时前
自动化客服Agent实战:用LangGraph+RAG+MCP把80%工单交给AI(从设计到部署)
运维·人工智能·自动化