Linux lpr命令用于向打印队列提交打印作业,是CUPS打印系统中的重要命令。
lpr [选项] [文件名...]
| 选项 | 说明 |
|---|---|
-E |
强制加密连接到服务器 |
-H 服务器[:端口] |
指定打印服务器 |
-P 打印机 |
指定目标打印机 |
-# 份数 |
指定打印份数(1-100) |
-h |
不打印标题页 |
-l |
按原始数据打印,不进行过滤 |
-o 选项 |
设置作业选项 |
-p |
格式化打印文本文件(添加页眉) |
-r |
打印后删除文件 |
-U 用户名 |
指定用户名 |
-m |
打印完成后发送邮件通知 |
--help |
显示帮助信息 |
# 打印文件到默认打印机
lpr document.txt
# 打印PDF文件
lpr report.pdf
# 打印多个文件
lpr file1.txt file2.txt file3.txt
# 查看可用打印机
lpstat -p -d
# 打印到特定打印机
lpr -P HP_LaserJet document.txt
# 打印到网络打印机
lpr -H printserver.example.com -P ColorPrinter image.jpg
# 打印多份文档
lpr -# 3 document.txt
# 不打印标题页
lpr -h document.txt
# 打印后删除原文件(谨慎使用)
lpr -r document.txt
# 发送打印完成通知
lpr -m document.txt
# 格式化打印文本文件(添加页眉、页脚)
lpr -p document.txt
# 设置页面方向
lpr -o landscape document.pdf # 横向
lpr -o portrait document.pdf # 纵向
# 设置纸张大小
lpr -o media=A4 document.txt
lpr -o media=Letter document.txt
# 双面打印
lpr -o sides=two-sided-long-edge document.txt # 长边翻转
lpr -o sides=two-sided-short-edge document.txt # 短边翻转
# 单面打印
lpr -o sides=one-sided document.txt
# 设置打印质量
lpr -o print-quality=3 document.txt # 草稿质量
lpr -o print-quality=4 document.txt # 普通质量
lpr -o print-quality=5 document.txt # 高质量
# 打印PostScript文件(不进行格式转换)
lpr -l document.ps
# 打印纯文本文件(原始格式)
lpr -l raw_text.txt
# 常用于打印已经格式化的打印数据
# 打印命令输出
ls -la | lpr
# 打印文件内容
cat document.txt | lpr
# 打印当前目录列表
pwd; ls -la | lpr
# 打印系统信息
uname -a | lpr
# 结合管道和过滤器
grep "error" logfile.txt | lpr
# 1. 查看打印机状态
lpstat -p -d
# 2. 提交打印作业
lpr -P Office_Printer -# 2 -o media=A4 -o sides=two-sided-long-edge report.pdf
# 3. 查看打印队列
lpq
# 4. 如果发现错误,取消打印作业
lprm 作业号
# 5. 重新提交正确的作业
lpr -P Office_Printer corrected_report.pdf
#!/bin/bash
# 自动打印脚本
# 配置变量
PRINTER="HP_LaserJet"
COPIES=1
OPTIONS="-o media=A4 -o sides=one-sided"
# 检查打印机是否可用
if lpstat -p "$PRINTER" >/dev/null 2>&1; then
echo "打印机 $PRINTER 可用"
else
echo "错误: 打印机 $PRINTER 不可用"
exit 1
fi
# 打印所有PDF文件
for file in *.pdf; do
if [ -f "$file" ]; then
echo "正在打印: $file"
lpr -P "$PRINTER" -# "$COPIES" $OPTIONS "$file"
if [ $? -eq 0 ]; then
echo "成功提交打印作业: $file"
else
echo "打印失败: $file"
fi
fi
done
# 批量打印所有文本文件
for file in *.txt; do
lpr -P Default_Printer "$file"
done
# 批量打印并记录日志
log_file="print_$(date +%Y%m%d_%H%M%S).log"
for file in *.pdf; do
echo "$(date): 开始打印 $file" >> "$log_file"
lpr -P Network_Printer -# 1 "$file"
echo "$(date): 完成打印 $file" >> "$log_file"
done
| 选项 | 值 | 说明 |
|---|---|---|
-o media |
A4, Letter, Legal, A3等 | 纸张大小 |
-o sides |
one-sided, two-sided-long-edge, two-sided-short-edge | 单/双面打印 |
-o landscape |
(无值) | 横向打印 |
-o portrait |
(无值) | 纵向打印 |
-o fit-to-page |
(无值) | 适应页面大小 |
-o scaling |
百分比(如100, 50) | 缩放比例 |
-o page-ranges |
1-3,5,7-9 | 打印页码范围 |
-o number-up |
1,2,4,6,9,16 | 每张纸打印多页 |
-o outputorder |
normal, reverse | 输出顺序 |
-r选项会删除原文件,请谨慎使用-l选项时,文件必须是打印机可以直接处理的格式# Ubuntu/Debian系统
sudo apt-get install cups cups-client
# CentOS/RHEL系统
sudo yum install cups cups-client
# 启动CUPS服务
sudo systemctl start cups
sudo systemctl enable cups
# 检查服务状态
systemctl status cups
# 查看所有打印机
lpstat -p -d
# 设置默认打印机
lpoptions -d 打印机名
# 添加网络打印机
lpadmin -p 打印机名 -E -v socket://打印机IP:9100 -m everywhere
原因: 打印系统未安装
解决: 安装CUPS客户端
sudo apt-get install cups-client
原因: 打印机未配置或离线
解决: 检查打印机状态
lpstat -p
cupsenable 打印机名
解决: 清除打印队列
# 取消所有作业
lprm -
# 或
cancel -a
解决: 使用正确的文件格式
# 将文件转换为PDF
libreoffice --headless --convert-to pdf document.doc
lpq - 查看打印队列状态lprm - 删除打印作业lpstat - 显示打印机状态信息lp - System V风格的打印命令cancel - 取消打印作业lpadmin - 打印机管理工具