Linux 文本格式化命令 fmt 用法及注意事项

作者: Himanshu Arora 译者: LCTT DarkSun

本教程将会讨论 fmt 的基本用法以及它提供的一些主要功能。

适用的 Linux 版本

fmt 命令是一个标准的 Linux 命令,它适用于大多数的 Linux 发行版,如 Ubuntu、Debian、Fedora、CentOS 等。

如果系统中没有安装 fmt 命令,可以使用以下命令来安装它:

  • 基于 Debian 的系统,如 Ubuntu,可以使用 apt-get 命令:
$ sudo apt-get install coreutils
  • 基于 Red Hat 的系统,如 Fedora 或 CentOS,可以使用 yum 或 dnf 命令:
$ sudo yum install coreutils

$ sudo dnf install coreutils

fmt 命令基本语法:

fmt [-WIDTH] [OPTION]... [FILE]...

重新格式化文件中的每一个段落,将结果写到标准输出。选项 -WIDTH--width=DIGITS 形式的缩写。

fmt 命令基本语法常用选项说明

选项说明
-c保持每段前两行的缩进不变
-p只格式化以指定字符串开头的行,并保留该字符串
-s只拆分超过指定宽度的行,不合并不足指定宽度的行
-t保持每段前两行的缩进不变,并使第一行和第二行的缩进不同
-u使用一个空格分隔单词,两个空格分隔句子
-w指定每行的最大字符数

fmt 命令使用实例

  1. 重新排列文本到指定宽度
    将文件 test.txt 重新排列成 85 个字符一行,并保存到新文件 new.txt 中:

    fmt -w 85 test.txt > new.txt
    
  2. 格式化特定前缀的行
    只格式化以 # 开头的注释行,并保留 # 符号:

    fmt -p '#' code.py
    
  3. 保留前两行的缩进:并使第一行和第二行的缩进不同

    fmt -t article.txt
    
  4. 统一单词和句子的间距:使用一个空格分隔单词,两个空格分隔句子

    fmt -u poem.txt
    
  5. 默认的 fmt 命令:会将给定文件中的所有单词格式化为一行

    fmt kt.txt
    
  6. 使用 -s 选项拆分长行:拆分长行,但不填充它们

    fmt -s kt.txt
    
  7. 格式化多个文件:同时处理多个文件

    fmt file1.txt file2.txt
    
  8. 使用重定向操作符: 使用重定向将格式化后的文本保存到新的文件中

    fmt file1.txt > formatted_file1.txt
    
  9. 使用管道操作符:将其他命令的输出格式化

    ls -l | fmt
    

fmt 命令的注意事项

  • fmt 命令只能处理普通文本文件,不能处理富文本文件或二进制文件。

  • fmt 命令会忽略空白行和制表符,并将多个空格替换为一个空格。

  • fmt 命令会尽量保持单词的完整性,不会在单词中间断行,除非单词本身就超过了指定的宽度。

  • fmt 命令会根据输入中的字符集切换来确定输出时是否需要切换字符集。如果输入中有 SI(shift in)和 SO(shift out)这样的控制字符,fmt 命令会相应地切换到正常字符集或替代字符集。

总结

fmt 提供的功能不多,但不代表它的应用就不广泛。

在本教程中讲解了 fmt 提供的主要选项,了解更多细节,请查看该工具的 man 页


via: https://www.howtoforge.com/linux-fmt-command/

作者:Himanshu Arora 译者:lujun9972 校对:wxy

本文由 LCTT 原创编译,Linux 中国 荣誉推出 2018-01-15 13:54

<think>嗯,用户想了解Linux命令的固定语法格式。这是一个关于Linux基础知识的系统性提问,需要结合之前的引用内容给出结构化说明。回顾站内引用资料时注意到,引用[1]提到"简化书写"原则和参数合并,引用[4]详细列举了cat命令的参数说明样式,这些都属于命令语法的具体表现。用户可能刚接触Linux,需要将抽象语法规则具象化展示。考虑从三方面构建回答框架:首先是核心语法模板,准备用$$...$$独立公式呈现命令的标准结构;其次针对用户可能遇到的疑惑点,比如引用[1]提到的选项合并现象要重点说明;最后必须强调注意事项里的权限和环境变量问题。在示例部分考虑选用用户熟悉的ls命令,配合引用[3]安装命令的sudo用法展示权限提升场景。末尾问题设计涵盖基础语法(选项/参数区别)、进阶用法(参数合并原理)和实用技巧(查找帮助),形成知识梯度。用户虽然没有明确需求层次,但既然询问"固定格式",可能在准备考试或编写脚本。回答需侧重可操作性,避免过多理论延伸。特别要注意之前引用[3]提到的命令安装差异,不同发行版虽语法统一但可用命令集可能不同,这点必须包含在注意事项里。</think> ### Linux 命令通用语法格式 Linux 命令的标准语法结构如下: ``` 命令 [选项] [参数] ``` 详细说明: 1. **命令主体** - 命令名称或可执行程序(如 `ls`, `cd`) - 必须放在首位,区分大小写(如 `cp` 和 `CP` 不同) - 系统内置命令或外部程序(引用[1][^1]) 2. **选项 (Options)** - 以 `-` 或 `--` 开头 - 修改命令行为(如 `ls -a` 显示隐藏文件) - 短选项可合并:`ls -l -a` = `ls -la`(引用[1][^1]) - 长选项用双横线:`grep --color=auto` 3. **参数 (Arguments)** - 命令作用对象(文件/目录/文本等) - 如 `cd /home` 中的 `/home` - 部分命令需要多个参数(如 `cp file1 file2`) > 📌 **特殊说明:** > - 隐藏文件以 `.` 开头(如 `.bashrc`)[^1] > - 部分命令有别名(如 Ubuntu 的 `ll` = `ls -la`)[^1] > - 选项位置可能影响行为(如 `rm -rf dir/`) #### 常用命令示例 ```bash # 1. 基础命令 $ ls -l ~/Documents # 选项+参数 # 2. 输入输出(引用[4]) $ cat -n file.txt # 显示带行号的内容[^4] # 3. 文本处理(引用[3]) $ fmt -w 80 text.md # 格式化行宽[^3] # 4. 文件比较(引用[2]) $ diff file1 file2 # 比较文件差异[^2] ``` ⚠️ **关键注意事项:** 1. **空格分隔**:命令/选项/参数间必须有空格 2. **权限要求**:系统操作需 `sudo`(如引用[3]安装命令)[^3] 3. **引号规则**:含空格参数需引号包裹:`grep "hello world" file.txt` 4. **路径处理**: - 绝对路径:`/home/user/file` - 相对路径:`./script.sh` 5. **环境变量**:通过 `$PATH` 定位命令位置 📖 学习建议:使用 `man 命令名`(如 `man ls`)查看完整语法文档 --- ### 相关问题 1. Linux 命令中短选项(如 `-a`)和长选项(如 `--all`)有何区别? 2. 如何理解 `命令 > 文件.txt 2>&1` 这种语法结构? 3. `sudo apt-get install` 和 `sudo yum install` 的语法差异由什么决定?(参考引用[3][^3]) 4. 为什么有些命令需要绝对路径执行(如 `/sbin/reboot`)? 5. 如何快速查阅陌生命令的语法格式? [^1]: Linux基础命令文档 [^2]: 文件比较命令说明 [^3]: 软件安装语法说明 [^4]: 文本输出参数说明
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值