Linux ispell 命令 - 交互式文本拼写纠正校对工具
ispell 是 Linux 系统中一款经典的交互式文本拼写检查工具,英文全称为 Interactive spell,比 spell 命令提供了交互能力与词典扩展功能。它能够逐个词对文本进行检查比对,同时还能识别 TeX、LaTeX、HTML 等多种文件格式,在校对具有标签的文件格式时,能忽略标签检查有效文本;同时还可以使用个人词典,功能非常的丰富。
相似功能命令对比
如下给出与 ispell 功能相似的拼写检查工具之间的对比:
spell:传统简单拼写检查工具,不支持交互功能,功能也比较单一aspell:ispell的现代化替代工具,GNU 官方项目hunspell:ispell的现代化替代工具,支持中文,支持 LibreOffice、浏览器等软件
安装说明
多数 Linux 发行版与 FreeBSD 默认不预装 ispell,在各个系统中,使用如下命令安装:
Debian / Ubuntu 系列安装 ispell
# 更新软件源
sudo apt update
# 安装 ispell
sudo apt install -y ispell
RHEL / AlmaLinux / Rocky Linux 系列安装 ispell
# 更新源
sudo dnf check-update
# 安装 ispell
sudo dnf install -y ispell
ispell 命令语法结构
ispell 具有多种语法结构,其基础语法与通用参数的具体形式如下:
基础语法
ispell 多种语法结构形式如下:
ispell [通用选项] [-M|-N] [-L 上下文行数] [-V] 文件...
ispell [通用选项] -l
ispell [通用选项] [-f 文件] [-s] [-a|-A]
ispell [-d 文件] [-w 字符] -c
ispell [-d 文件] [-w 字符] -e[e]
ispell [-d 文件] -D
ispell -v[v]
通用选项(common-flags)
通用选项具有以下可选的值:
[-t] [-n] [-H] [-o] [-b] [-x] [-B] [-C] [-P] [-m] [-S] [-d 文件] [-p 文件] [-w 字符] [-W 数字] [-T 类型] [-k 名称 列表] [-F 程序]
附属工具语法
ispell 的附属工具主要用于词典的管理,可以使用的附属工具的语法形式如下:
# 构建哈希词典
buildhash [-s] 词典文件 词缀文件 哈希文件
# 精简词典
munchlist [选项] [文件]
# 提取词缀
findaffix [选项] [文件]
# 测试词缀
tryaffix [-p|-s] [-c] 扩展文件 词缀...
# 合并词典条目
icombine [选项] [词缀文件]
# 安全合并文件
ijoin [-s|-u] 选项 文件1 文件2
ispell 命令使用示例
如下给出一些 ispell 命令的基本使用示例,便于掌握 ispell 命令的基本用法。
交互式检查单个文本文件
不适用任何选项,会以交互模式,逐词高亮显示错误单词,并提供近词推荐,可以对错误单词进行替换:
ispell test.txt
检查 HTML 格式文件
使用 -H 选项指定文件为 HTML / SGML 格式,会自动跳过 HTML 标签,只检查文本内容:
ispell -H index.html
检查 TeX/LaTeX 文件
使用 -t 选项指定文件为 TeX / LaTeX 格式,会忽略命令、引用标签与数学公式,只检查正文文本:
ispell -t paper.tex
只输出所有错误单词列表
使用 -l 选项,启动非交互模式,仅输出拼写错误单词列表:
ispell -l < test.txt
指定自定义词典检查
使用 -d 选项指定备用系统词典,使用英式英语词检查文本内容:
ispell -d british document.txt
生成文件备份并检查
使用 -b 选项会在检查前,先生成 .bak 备份文件:
ispell -b report.txt
ispell 命令选项解释说明
如下给出 ispell 命令的全部选项的解释说明,对选项进行了分类,并解释说明其具体作用:
| 选项分类 | 选项 | 详细说明 |
|---|---|---|
| 文件格式识别 | -t | 指定输入文件为 TeX / LaTeX 格式,在检查时自动忽略命令、引用、数学公式等内容 |
-n | 指定输入文件为 nroff / troff 格式的文档 | |
-H | 指定输入文件为 HTML / SGML 格式,在检查时会跳过标签,但是会检查 alt 属性的文本内容 | |
-o | 强制按普通文本处理,不按照识别的文件格式处理文本 | |
| 界面与显示 | -M | 在屏幕的底部显示单行的迷你操作菜单,可以简化交互提示 |
-N | 禁用迷你操作菜单 | |
-L num | 设置错误单词的上下文显示的行数,默认情况下会按屏幕比例进行自动计算 | |
-V | 非 7 位可打印字符以 cat -v 风格显示,可以用于兼容老旧终端 | |
| 文件备份控制 | -b | 在检查文件之前自动生成 .bak 后缀的备份文件 |
-x | 如果没有错误,则在拼写检查完成后删除备份文件 | |
| 拼写规则控制 | -B | 将缺少空格的连写词(如 notthe)判定为拼写错误 |
-C | 允许合法复合连写词 | |
-P | 只在无近词匹配的情况下,才会生成词根 / 词缀组合猜测 | |
-m | 始终生成可能的词根与词缀组合猜测 | |
-S | 按概率的高低对推荐的替换词列表进行排序 | |
-W num | 不进行检查的单词的长度,默认为 1 个字母 | |
| 词典相关 | -d file | 指定哈希词典文件,不指定路径时从 /usr/lib/ispell/ 目录中加载文件 |
-p file | 指定自定义个人词典,如果使用的是相对路径,是相对于 $HOME 目录 | |
-D | 导出当前词典中的词缀表信息,同时输出到标准输出上 | |
-w chars | 允许单词中包含额外的字符,如:_、& | |
-T type | 设置默认格式化字符类型,如 nroff、.tex | |
| 格式化扩展 | -k name list | 自定义格式化时忽略一些内容的规则 |
-F program | 指定外部反格式化程序,需要输出字符的位置与原文的内容一致 | |
| 批量/脚本模式 | -l | 以非交互模式输出所有拼写错误的单词的列表 |
-a | 以管道模式,输出检查的结构化结果 | |
-A | 功能与 -a 选项相同,额外支持 &Include_File& 指令,用于包含文件,可以嵌套使用 | |
-f file | 与 -a/-A 结合使用,将检查后的结果输出到指定的文件中 | |
| 词缀处理 | -c | 读取单词并输出其可能的词根和词缀的组合形式 |
-e | 反向展开词缀 | |
-e1~e5 | 控制词缀展开的输出格式与等级 | |
| 版本信息 | -v | 显示 ispell 版本信息并退出 |
-vv | 显示版本号和编译配置选项等详细信息 |
附属工具常用选项表
如下给出一些与 ispell 命令一起使用的附属工具的常用的选项的解释说明:
| 工具 | 选项 | 说明 |
|---|---|---|
| buildhash | -s | 静默的构建哈希词典,不输出任何的状态信息 |
| munchlist | -v | 在精简词典的过程中,输出过程处理信息 |
-D | 调试模式,保留临时文件 | |
-s | 剔除在系统词典中的已有的单词 | |
| findaffix | -p | 提取前缀 |
-s | 提取后缀,该值是默认值 | |
-f | 使前缀按照出现的频率排序 | |
| tryaffix | -c | 只统计词缀,不输出具体的词根信息 |
| icombine | -T | 指定字符类型来合并词典 |
| ijoin | -s | 使用有符号排序,正确处理 8 位字符 |
-u | 使用无符号排序,正确处理 8 位字符 |
结语
ispell 是 Linux 系统中一款经典的交互式文本拼写检查工具,能够识别 TeX、LaTeX、HTML 等多种文件格式,也能通过管道与脚本深度集成,功能丰富。在本文中介绍了 ispell 命令的基本语法结构,给出了 ispell 命令的详细使用示例,最后也给出了 ispell 命令的所有选项的详细解释说明。
掌握 ispell 的基础交互、批量检查与词典管理用法,可以用它来完成拼写检查,但它不支持中文,要检查中文需要使用其他的工具。