pr命令仅格式化文本而不直接打印,需配合lp/lpr发送至打印机;默认带页眉页脚,-t选项可去除,-l控制页长(含页眉页脚),-2/-3实现多列布局,-n添加行号并可调宽度,nl预处理可实现全局行号。

pr 命令不是“打印驱动”,它只做格式化;真要发到打印机,得接 lp 或 lpr。 直接 pr file.txt 不会把内容打出来,只是按打印纸逻辑排好版——页眉、分页、行数、列宽这些都算好了,但输出仍在终端或管道里。
怎么让 pr 输出适合人眼阅读的紧凑文本
默认带页眉页脚(5 行页眉 + 56 行正文 + 空行补足),看日志或代码时反而干扰。用 -t 最常用:
-
-t:彻底去掉页眉和页脚,只保留纯格式化后的内容(仍按-l分页,但无标题/页码) -
-t和-l 40组合:每页 40 行、无页眉、适合终端翻页查看 - 管道中必须加
-t,否则ls /usr/bin | pr -3会混入页眉,破坏列对齐
怎么用 pr 把命令输出转成多列清单
比如 ps aux 或 find . -name "*.log" 结果太长,单列滚动费眼。用列模式更省空间:
-
pr -2 -t:双列,垂直填满(第 1 行→左列第 1 行,第 2 行→右列第 1 行) -
pr -2 -a -t:双列,水平填满(第 1 行→左列第 1 行,第 2 行→左列第 2 行) -
pr -3 -w 90 -t:三列,总宽 90 字符(每列约 30),避免换行截断文件名 - 注意:
-w控制总宽度,不是单列宽度;列数越多,单列越窄,超长行会被硬截断
怎么加行号又不破坏列对齐
-n 默认右对齐、占 5 位(如 123),在多列下容易挤歪。关键点在于控制行号宽度:
-
-n 3:行号只占 3 位(123),减少左侧空格,列间更紧凑 -
-n 3 -s " ":指定两空格作列分隔符,弥补行号缩窄后列间距变小的问题 - 别用
-n和-2单独组合:行号会加在每列开头,不是整页统一编号 - 如果只要全局行号(非每列独立),先用
nl编号再进pr,例如:nl -w3 -s" " file.txt | pr -2 -t
真正容易被忽略的是页长计算逻辑:-l 30 指的是“每页总共 30 行”,包含页眉页脚(除非用了 -t);而 -F 会改用换页符 \f 分页,某些打印机驱动依赖这个才能正确切页——测试前务必确认目标设备是否吃这一套。











