Linux 命令:fold

概述

Linux 中的 fold 命令是按指定宽度折行显示文本的工具,核心作用是将过长的文本行自动拆分,避免终端或文档中出现横向滚动,常用于格式化日志、配置文件、长文本的输出,是文本排版的实用基础命令。

资料合集:https://pan.quark.cn/s/6fe3007c3e95https://pan.quark.cn/s/561de99256a5https://pan.quark.cn/s/985f55b13d94https://pan.quark.cn/s/d0fb20abd19a

一、基本语法

bash 复制代码
fold [选项] [文件1] [文件2] ...

无文件参数时,默认读取标准输入 (可配合管道 | 对其他命令的输出做折行处理)。

二、核心功能与默认行为

  1. 默认按每行80个字符折行(适配传统终端的宽度);
  2. 折行仅按字符数 拆分,不会识别单词边界(可能将一个单词从中间拆开);
  3. 拆分后的行保留原文本的字符顺序,多文件会按顺序拼接折行。
简单示例

新建一个长文本文件 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:配合管道处理其他命令输出

catgrepls -l等命令的超长输出做折行,比如查看目录下超长文件名的列表并折行:

bash 复制代码
# 列出当前目录所有文件,按50字符折行,避免横向滚动
ls -l | fold -w 50
场景5:多文件批量折行并输出到新文件

file1.txtfile2.txt按35字符折行,结果写入formatted.txt

bash 复制代码
fold -w 35 file1.txt file2.txt > formatted.txt

五、关键注意事项

  1. 多字节字符处理 :UTF-8编码下,中文、表情、特殊符号均为多字节,必须加-b按字节折行,否则会出现字符截断、乱码;
  2. -s的局限性 :仅在有空格时生效,若一行无任何空格(如纯数字/密文),仍会按字符数直接拆分;
  3. 折行不修改原文件fold仅格式化输出 ,不会改变原文件内容,需通过重定向>写入新文件才会保存折行结果;
  4. fmt命令的区别fold纯按长度硬拆分 ,无文本排版逻辑;fmt智能格式化(自动调整行宽、保留段落、对齐单词),适合更美观的文本排版。

六、与同类命令fmt的核心区别

二者均为文本折行工具,但定位和功能差异明显,按需选择:

命令 折行逻辑 单词处理 多字节字符 适用场景
fold 按字符/字节数硬拆分 默认拆分,-s可避拆 需加-b防乱码 快速格式化、日志/密文折行、管道临时输出
fmt 智能调整行宽,保留段落 自动避拆单词 原生支持,无需额外选项 英文文档、文章、配置文件的美观排版

示例 :用fmt格式化同一份长文本(自动按75字符折行,保留单词):

bash 复制代码
fmt -w 75 longline.txt

总结

fold轻量、快速的文本折行工具,核心优势是简单、高效,无多余排版逻辑,日常使用的高频组合:

  1. 英文短文本快速折行:fold -w N 文件名
  2. 中文/多字节文本折行:fold -b -w N 文件名
  3. 英文文本防断词折行:fold -s -w N 文件名
  4. 命令输出临时折行:命令 | fold -w N
相关推荐
一叶星殇3 小时前
.NET WebAPI:用 Nginx 还是 IIS 更好
运维·nginx·.net
LUCIFER4 小时前
[驱动进阶——MIPI摄像头驱动(五)]rk3588+OV13855摄像头驱动加载过程详细解析第四部分——ISP驱动
linux·驱动开发
暮云星影4 小时前
四、linux系统 应用开发:UI开发环境配置概述 (一)
linux·ui·arm
a程序小傲5 小时前
得物Java面试被问:RocketMQ的消息轨迹追踪实现
java·linux·spring·面试·职场和发展·rocketmq·java-rocketmq
Ghost Face...5 小时前
i386 CPU页式存储管理深度解析
java·linux·服务器
LEEE@FPGA5 小时前
zynq 是不是有了设备树,再linux中不需要编写驱动也能控制
linux·运维·单片机
Trank-Lw5 小时前
Docker Devcontainer 管理命令
运维·docker·容器
RisunJan5 小时前
Linux命令-less(分页查看器)
linux·运维
赛希咨询5 小时前
人工智能自动化如何提高研究生产力
运维·人工智能·自动化
梁正雄5 小时前
linux服务-MariaDB 10.6 Galera Cluster+garbd
linux·运维·mariadb