目录
内容来源:
【GUN】【ptx】指令介绍
【busybox】【ptx】指令介绍
【linux】【ptx】指令介绍
使用示例:
常用组合指令:
指令不常用/组合用法还需继续挖掘:
内容来源:
GUN : Coreutils - GNU core utilities
busybox v1.36.1 : 【busybox记录】【shell指令】基于的Busybox的版本和下载方式-CSDN博客
【GUN】【ptx】指令介绍
ptx:生成置换索引
ptx 读取一个文本文件,本质上生成一个置换索引,每个关键字都在其上下文中。调用的sketch可以是:
ptx [option ...] [file ...]
ptx -G[选项…[输入[输出]]
-G(或其等效:--traditional)选项禁用所有GNU扩展并恢复到传统模式,从而引入一些限制并更改程序的一些默认选项值。当不指定-G时,总是启用GNU扩展。在本文档中适当的地方列出了ptx的GNU扩展。完整的列表参见第7.5.5节[ptx中的兼容性],第68页。
以下各节将解释各个选项。
当启用GNU扩展时,选项后面可能有零个、一个或几个文件。如果没有文件,程序就读取标准输入。如果有一个或几个文件,它们给出输入文件的名称,这些输入文件依次读取,就像所有输入文件连接在一起一样。
然而,每个文件之间都有一个完整的上下文分隔符,并且当请求自动引用时,文件名和行号指向单个文本输入文件。在所有情况下,程序都会将排序后的索引输出到标准输出。
当GNU扩展未启用时,即程序在传统模式下运行时,除了选项之外,可能还有零个、一个或两个参数。如果没有参数,则程序读取标准输入,并将置换后的索引输出到标准输出。
如果只有一个参数,它将命名要读取的文本输入,而不是标准输入。如果给出了两个参数,它们分别给出要读取的输入文件的名称和要生成的输出文件的名称。要非常小心:在这种情况下,由第二个参数指定的file的内容会被销毁。这种行为由System V ptx兼容性决定。GNU标准通常不鼓励非由选项引入的输出参数。
对于任何以选项值命名的文件或作为输入文本文件的文件,可以使用单破折号'-',在这种情况下,假定标准输入。但是,对于每个程序调用,多次使用这种约定是没有意义的。
7.5.1通用选项
‘-G’
‘--traditional’
如前所述,该选项禁用对ptx的所有GNU扩展,并切换到传统模式。
‘--help’
在标准输出上打印一个简短的帮助信息,然后退出,不做进一步处理。
‘--version’
在标准输出上打印程序版本,然后退出,不再做进一步处理。
退出状态为零表示成功,非零值表示失败。
7.5.2字符集选择
根据现在的设置,ptx假设输入文件是使用8位字符编码的,在多字节语言环境中可能不能很好地工作。在单字节语言环境中,关键字的默认正则表达式允许使用外文字母或变音符号字母。然而,关键字排序仍然很粗糙;
它完全盲目地遵循底层的字符集顺序。ptx的输出假定是区域设置的字符编码。
例如,使用ptx的-T选项,如果语言环境使用Latin-1编码,你可能需要像‘\usepackage[latin1]{inputenc}’这样的LaTeX指令来正确渲染非ascii字符。
‘-f’
‘--ignore-case’
将小写字母叠成大写字母进行排序。
7.5.3选词和输入处理
‘-b file’
‘--break-file=file’
这个选项提供了一种替代(与-W相比)的方法,用于描述哪些字符是由哪些字符组成的单词。它介绍了一个文件的名称,其中包含一个字符列表,不能是一个单词的一部分;这个文件称为Break文件。任何不属于Break文件的字符都是一个单词组成部分。如果同时指定了选项-b和-W,则-W具有优先级,-b将被忽略。
当启用GNU扩展时,避免换行符作为换行符的唯一方法是在文件中写入所有换行符,而不包含换行符,即使在文件末尾也不包含换行符。当禁用GNU扩展时,空格、制表符和换行符总是被视为断行字符,即使断行文件中没有包含这些字符。
‘-i file’
‘--ignore-file=file’
与此选项相关联的文件包含一个单词列表,这些单词永远不会被用作 concordance 输出的关键字。它被称为忽略文件。该文件每行只包含一个单词;单词的行尾分隔不受-S选项值的影响。
‘-o file’
‘--only-file=file’
与此选项相关联的文件包含一个单词列表,将保留在concordance输出中;这个文件中没有提到的词将被忽略。该文件称为唯一文件(Only file)。该文件每行只包含一个单词;单词的行尾分隔不受-S选项值的影响。
唯一的文件没有默认值。在同时指定了only文件和ignore文件的情况下,只有当某个单词出现在only文件中而不在ignore文件中时,该单词才被认为是关键字。
‘-r’
‘--references’
在每一行输入上,前导的非空白字符序列将被作为一个参考,用于在产生的置换索引中标识该输入行。有关参考产品的更多信息,请参阅第7.5.4节[ptx中的输出格式],第66页。
使用这个选项会改变option -S的默认值。
使用这个选项,程序不会试图从输出的上下文中删除引用,但当上下文正好以换行符结束时,它会成功地删除引用。
如果option -r与-S默认值一起使用,或者当GNU扩展被禁用时,这个条件总是被满足,并且引用完全被排除在输出上下文之外。
‘-S regexp’
‘--sentence-regexp=regexp’
此选项选择描述行尾或句子结尾的正则表达式。事实上,这个正则表达式并不是行尾和句子结尾的唯一区别,输入行边界除了这个选项之外没有什么特别的意义。
默认情况下,当启用GNU扩展时,如果不使用-r选项,则使用句子的结尾。在这种情况下,这个正则表达式从GNU Emacs中导入:
[.?!][]\"')}]*\\($\\|\t\\| \\)[ \t\n]*
每当GNU扩展被禁用或使用-r选项时,行尾将被使用;在这个例子中,默认的regexp是:
\n
使用空regexp等同于完全禁用行尾或句尾识别。在这种情况下,整个文件被认为是一个大的行或句子。用户可能还想通过option -F ""禁止所有截断标志的生成。请参阅GNU Emacs手册中的“正则表达式语法”一节。
当关键字碰巧出现在输入行或句子的开头时,通常会在输出上下文行开头创建一个未使用的区域;
当关键字恰好位于输入行或句子的末尾时,这通常会在输出上下文行的末尾创建一个未使用的区域。程序试图通过将context包裹在其中来填充这些未使用的区域;输入行或句子的尾部用于填充输出行的左侧未使用的区域;输入行或句子的开头用于填充输出行的右侧未使用的区域。
为了方便用户,许多来自C语言的常用反斜杠转义序列可以被ptx识别并转换为相应的字符。
‘-W regexp’
‘--word-regexp=regexp’
此选项选择描述每个关键字的正则表达式。默认情况下,如果启用了GNU扩展,单词是字母序列;这里使用的regexp是‘\w+’。当禁用GNU扩展时,一个单词默认是任何以空格、制表符或换行符结尾的东西;这里使用的regexp是‘[^ \t\n]+’.
空的regexp等同于不使用这个选项。请参阅GNU Emacs手册中的“正则表达式语法”一节。
为方便用户,在C语言中可以找到许多常用的反斜杠转义序列,ptx本身可以识别并转换为相应的字符。
7.5.4格式化输出
输出格式主要由下表中描述的-O和-T选项控制。
如果既不选择-O也不选择-T,并且启用了GNU扩展,程序将选择适合哑终端的输出格式。每次出现关键字都会输出到一行的中间,由左右上下文包围。
每个字段都是正确的,因此可以很容易地观察到一致性输出。作为一个特殊功能,如果自动引用是通过option -A选择的,并且在左侧上下文之前输出,也就是说,如果option -R没有被选择,那么在引用之后添加一个冒号;
这与GNU Emacs下一个错误处理很好地结合在一起。在这种默认的输出格式中,每个空格字符(如换行符和制表符)只会被更改为一个空格,而不会对连续的空格进行特殊的压缩。这在未来可能会改变。
除了这些空白字符,底层的256个字符集中的所有其他字符都会逐字传送。
输出格式由下列选项进一步控制。
‘-g number’
‘--gap-size=number’
选择输出行上字段之间的最小空白间隙的大小。
‘-w number’
‘--width=number’
选择每一行的最大输出宽度。如果使用了引用,则它们是否包含在最大输出宽度中,这取决于option -R的值。如果没有选择此选项,也就是说,当引用在左侧上下文之前输出时,最大输出宽度将考虑所有引用的最大长度。
如果选择了这个选项,也就是说,当引用在正确的上下文之后输出时,最大输出宽度不考虑引用所占用的空间,也不考虑它们之前的间隙。
‘-A’
‘--auto-reference’
选择自动引用。每个输入行都有一个自动引用,由文件名和行序号组成,它们之间有一个冒号。
但是,在读取标准输入时,文件名将为空。如果同时选中-A和-r,则仍然读取并跳过输入引用,但在输出时使用自动引用,覆盖输入引用。
‘-R’
‘--right-side-refs’
在默认的输出格式中,当不使用选项-R时,由选项-R或-A产生的任何引用都被放置在输出行的最右边,在右侧上下文之后。
使用默认的输出格式,当指定-R选项时,引用被放置在每一行输出的开头,在左侧上下文之前。对于其他输出格式,option -R将被忽略,但有一个例外:
使用-R时,引用宽度不会被考虑到由-w给出的总输出宽度中。当禁用GNU扩展时,此选项将自动选择。
‘-F string’
‘--flag-truncation=string’
此选项将要求使用字符串string报告输出中的任何截断。理论上,大多数输出字段会扩展到当前行或当前句子的开始或结束,这取决于使用option -S选择的范围。
但是有一个最大允许的输出行宽度,可以通过选项-w改变,它被进一步划分为各种输出字段的空间。当字段不能扩展到当前行的开头或结尾以适应其中而必须截断时,就会发生截断。默认情况下,使用的字符串是一个斜杠,如-F /。
字符串可以包含多个字符,如-F ....此外,在string为空的特殊情况下(-F ""),会禁用截断标记,在这种情况下不会添加截断标记。
为方便用户,在C语言中可以找到许多常用的反斜杠转义序列,ptx本身可以识别并转换为相应的字符。
‘-M string’
‘--macro-name=string’
选择另一个字符串来代替' xx ',同时生成适合nroff、troff或TEX的输出。
‘-O’
‘--format=roff’
选择适合nroff或troff处理的输出格式。每一行输出如下所示:
.xx "tail" "before" "keyword_and_after" "head" "ref"
所以可以写一个'.xx' roff宏来处理输出排版。这是禁用GNU扩展时的默认输出格式。Option -M可用于将'xx'更改为另一个宏名称。
在这种输出格式中,每个非图形字符(如换行符和制表符)只会被更改为一个空格,而不会对连续的空格进行特殊的压缩。每个引号字符‘"’被加倍,因此它将被nroff或troff正确处理。
‘-T’
‘--format=tex’
选择适合TEX处理的输出格式。每一行输出如下所示:
\xx {tail}{before}{keyword}{after}{head}{ref}
因此,可以编写一个\xx定义来处理输出排版。当不产生引用时,即option -A和option -r都不被选中时,\xx调用的最后一个参数将被禁止。选项-M可用于将'xx'更改为另一个宏名称。
在这种输出格式中,一些特殊字符,如‘$’, ‘%’, ‘&’, ‘#’ 和 ‘_’会自动使用反斜杠进行保护。大括号'{','}'由反斜杠和一对$符号保护(以强制数学模式)。
反斜杠本身产生的序列是\反斜杠{}。回旋变音符号和波浪号分别产生序列^\{}和~\{}。底层字符集的其他变音符化字符尽可能产生适当的TEX序列。
其他非图形字符,如换行符和制表符,以及所有其他不属于ASCII的字符,只会被更改为一个空格,而不会对连续的空格进行特殊的压缩尝试。
让我知道如何改进对TEX的特殊字符处理。
7.5.5 ptx的GNU扩展
这个版本的ptx包含了一些在System V ptx中不存在的特性。除非被其他命令行选项覆盖,否则使用-G命令行选项会抑制这些额外的功能。有些GNU扩展无法通过覆盖恢复,所以如果你关心GNU扩展,简单的规则是避免使用-G。下面是这个程序和System V ptx之间的区别。
这个程序可以一次读取多个输入文件,它总是将结果写入标准输出。另一方面,System V ptx只读取一个文件,并将结果发送到标准输出,或者,如果命令中给出了第二个file参数,则发送到该文件。
不通过options引入输出参数是一种危险的做法,GNU会尽可能避免这种做法。因此,为了在GNU和System V之间移植使用ptx,您应该始终将它与单个输入文件一起使用,并始终期望在标准输出上得到结果。
如果配置器发现安装的ptx接受-G,您可能还想自动配置-G选项,以便ptx在使用ptx的产品中调用ptx。
在System V ptx中唯一可用的选项是选项-b、-f、-g、-i、-o、-r、-t和-w。所有其他选项都是GNU扩展,不在此枚举中重复。此外,在启用GNU扩展时,有些选项的含义略有不同,如下所述。
默认情况下,concordance的输出不支持troff或nroff格式。它的格式相当适合一个哑终端。troff或nroff输出仍然可以通过option -O选择。
除非使用-R选项,否则最大参考宽度将从总输出行宽度中减去。禁用GNU扩展后,在计算输出行宽度时不会考虑引用的宽度。
所有256字节,即使是ASCII NUL字节,总是从输入文件中读取和处理,而没有任何不利影响,即使禁用了GNU扩展。然而,System V ptx不接受8位字符,一些控制字符被拒绝,波浪线' ~ '也被拒绝。
输入行的长度仅受可用内存的限制,即使禁用了GNU扩展。但是,System V ptx只处理每行的前200个字符。
换行符(非单词)默认为除基础字符集的所有字母之外的所有字符,无论是否变音符号。当禁用GNU扩展时,换行符默认为空格、制表符和换行符。
该程序更好地利用了输出行宽度。如果禁用GNU扩展,程序会尝试模仿系统V ptx,但仍然有一些轻微的配置故障,这个程序不会完全重现。
用户既可以指定忽略文件,也可以指定唯一文件。这在System V ptx中是不允许的。
【busybox】【ptx】指令介绍
NA
【linux】【ptx】指令介绍
[root@localhost bin]# ptx --help
用法:ptx [选项]... [输入]... (不包括 -G 选项)
或:ptx -G [选项]... [输入 [输出]]
Output a permuted index, including context, of the words in the input files.
如果没有指定文件,或者文件为"-",则从标准输入读取。
必选参数对长短选项同时适用。
-A, --auto-reference output automatically generated references
-G, --traditional behave more like System V 'ptx'
-F, --flag-truncation=STRING use STRING for flagging line truncations.
The default is '/'
-M, --macro-name=STRING macro name to use instead of 'xx'
-O, --format=roff generate output as roff directives
-R, --right-side-refs put references at right, not counted in -w
-S, --sentence-regexp=REGEXP for end of lines or end of sentences
-T, --format=tex generate output as TeX directives
-W, --word-regexp=正则表达式 使用正则表达式匹配每个关键字
-b, --break-file=文件 以文件中包含的单词为分隔字符
-f, --ignore-case 排序时合并小写字母和大写字母
-g, --gap-size=数值 指定多个输出区块间的列间隙尺寸
-i, --ignore-file=文件 从指定文件中读取忽略单词的列表
-o, --only-file=文件 只从指定文件中读取单词列表
-r, --references 设置每行的第一个区块为关联引用
-t, --typeset-mode -- 此功能尚未实现 --
-w, --width=数值 每列的输出宽度,不计关联引用
--help 显示此帮助信息并退出
--version 显示版本信息并退出
GNU coreutils 在线帮助:<https://www.gnu.org/software/coreutils/>
请向 <http://translationproject.org/team/zh_CN.html> 报告 ptx 的翻译错误
完整文档请见:<https://www.gnu.org/software/coreutils/ptx>
或者在本地使用:info '(coreutils) ptx invocation'
使用示例:
目前没有什么合适的例子,后续补充
常用组合指令:
NA