概述
Linux 中的 fold 命令是按指定宽度折行显示文本的工具,核心作用是将过长的文本行自动拆分,避免终端或文档中出现横向滚动,常用于格式化日志、配置文件、长文本的输出,是文本排版的实用基础命令。
资料合集:https://pan.quark.cn/s/6fe3007c3e95、https://pan.quark.cn/s/561de99256a5、https://pan.quark.cn/s/985f55b13d94、https://pan.quark.cn/s/d0fb20abd19a
一、基本语法
bash
fold [选项] [文件1] [文件2] ...
无文件参数时,默认读取标准输入 (可配合管道 | 对其他命令的输出做折行处理)。
二、核心功能与默认行为
- 默认按每行80个字符折行(适配传统终端的宽度);
- 折行仅按字符数 拆分,不会识别单词边界(可能将一个单词从中间拆开);
- 拆分后的行保留原文本的字符顺序,多文件会按顺序拼接折行。
简单示例
新建一个长文本文件 longline.txt,内容为一行超长字符串:
Linux fold command is used to wrap long lines of text into specified width, it's a basic text formatting tool.
执行默认折行命令:
bash
fold longline.txt
输出会被拆分为多行(每行最多80字符),若原行不足80字符则保持原样。
三、常用选项(重点)
fold 的选项主要用于自定义折行宽度、是否识别字节/空格,高频选项均为单字符,可组合使用:
| 选项 | 英文全称 | 作用 | 实用场景 |
|---|---|---|---|
-w N |
--width=N |
指定折行宽度为N个字符(核心选项) | 适配窄终端、固定文档排版宽度 |
-b |
--bytes |
按字节数折行,而非字符数 | 处理含中文/多字节字符的文本(避免乱码) |
-s |
--spaces |
按空格折行(不拆分单词) | 格式化英文文本、日志,保证单词完整性 |
-n |
------ | 部分系统(如BSD)中替代-b,按字节折行 |
跨系统兼容场景 |
四、经典实用示例
覆盖日常最常用的折行场景,含纯英文、多字节中文、管道配合、单词防拆分等核心用法。
场景1:自定义折行宽度(最常用)
将长文本按每行30个字符折行,替代默认80字符:
bash
fold -w 30 longline.txt
场景2:处理中文/多字节文本(避免乱码)
中文属于多字节字符 (UTF-8下占3字节),默认按字符折行可能因"字符-字节"不匹配导致乱码,需用-b按字节折行:
新建含中文的长行文件 cn_longline.txt:
fold命令是Linux的文本折行工具,可将超长的文本行按指定宽度拆分,适合格式化日志和配置文件。
执行按字节折行(指定每行20字节,适配窄终端):
bash
fold -b -w 20 cn_longline.txt
场景3:折行不拆分单词(英文文本专属)
用-s选项让fold在最近的空格处折行,保证单词完整性,避免"断词":
bash
# 按40字符折行,且遇空格拆分(不拆单词)
fold -s -w 40 longline.txt
输出示例(单词完整,行宽不超40):
Linux fold command is used to wrap long lines of
text into specified width, it's a basic text
formatting tool.
场景4:配合管道处理其他命令输出
对cat、grep、ls -l等命令的超长输出做折行,比如查看目录下超长文件名的列表并折行:
bash
# 列出当前目录所有文件,按50字符折行,避免横向滚动
ls -l | fold -w 50
场景5:多文件批量折行并输出到新文件
将file1.txt和file2.txt按35字符折行,结果写入formatted.txt:
bash
fold -w 35 file1.txt file2.txt > formatted.txt
五、关键注意事项
- 多字节字符处理 :UTF-8编码下,中文、表情、特殊符号均为多字节,必须加
-b按字节折行,否则会出现字符截断、乱码; -s的局限性 :仅在有空格时生效,若一行无任何空格(如纯数字/密文),仍会按字符数直接拆分;- 折行不修改原文件 :
fold仅格式化输出 ,不会改变原文件内容,需通过重定向>写入新文件才会保存折行结果; - 与
fmt命令的区别 :fold是纯按长度硬拆分 ,无文本排版逻辑;fmt是智能格式化(自动调整行宽、保留段落、对齐单词),适合更美观的文本排版。
六、与同类命令fmt的核心区别
二者均为文本折行工具,但定位和功能差异明显,按需选择:
| 命令 | 折行逻辑 | 单词处理 | 多字节字符 | 适用场景 |
|---|---|---|---|---|
fold |
按字符/字节数硬拆分 | 默认拆分,-s可避拆 |
需加-b防乱码 |
快速格式化、日志/密文折行、管道临时输出 |
fmt |
智能调整行宽,保留段落 | 自动避拆单词 | 原生支持,无需额外选项 | 英文文档、文章、配置文件的美观排版 |
示例 :用fmt格式化同一份长文本(自动按75字符折行,保留单词):
bash
fmt -w 75 longline.txt
总结
fold 是轻量、快速的文本折行工具,核心优势是简单、高效,无多余排版逻辑,日常使用的高频组合:
- 英文短文本快速折行:
fold -w N 文件名 - 中文/多字节文本折行:
fold -b -w N 文件名 - 英文文本防断词折行:
fold -s -w N 文件名 - 命令输出临时折行:
命令 | fold -w N