c - 创建一个文本文件作为 Unix 中的命令手册
问题描述
无论如何创建一个文本文件,其功能与 man 命令在 unix 中的工作方式相同?本质上是创建一个格式化的文本文件,其目的与 Unix 的手册相同。无论如何,我可以使用 grep 或 sed 命令从本手册文本文件中提取命令信息吗?
如果有人有任何资源或任何关于我如何开始或学习如何做到这一点的提示,那将很有帮助。
解决方案
手册页通常存储在 /usr/share 下的 man 目录中,您可以使用它manpath
来查找您的发行版使用的目录。该目录通常分为与手册节对应的子目录man1,man2,...等,文件名为program_name.1(其中1是节号)。例如 man 文件cat
可以在/usr/share/man/man1/cat.1
.
这些文件是使用带有man宏包的troff(一种排版语言)编写的。您可以直接查看这些文件,但是如果您不了解 troff 语法,它们会让人感到困惑。你可以使用命令
nroff -man man_file.1
要查看手册的排版版本,实际上 man 命令基本上只是找到您要查找的 man 文件并通过 nroff 和 less 运行它。您可以使用管道模拟此功能:
nroff -man man_file.1 | less
有些系统会压缩他们的 man 文件,在这种情况下你需要先使用gunzip
:
gunzip -c man_file.1.gz | nroff -man | less
因此,要搜索 man 文件,您可以将此输出通过管道传输到 grep、sed 甚至是文件中以进行进一步处理。需要注意的一点是,nroff 的输出将包含一些用于在终端上格式化的转义序列,因此如果在文本编辑器中打开它可能看起来很乱,尽管它仍然可以与 sed 等程序一起使用。
您可以从以下链接中找到有关 troff 的更多信息:
- Groff troff 的 GNU 实现(用于大多数系统)。
- Troff 资源关于 troff 及其各种预处理器的论文集。
- Unix Text Processing一本关于 troff 和其他基于 unix 的文本处理的书。
推荐阅读
- microsoft-teams - 无法将自定义应用添加到 Teams 管理员中的新自定义策略
- html - 在导航栏和页脚之间的主容器内填充
- html - 如何在 CSS 中使用 XML 中声明的特定属性来设计网站
- r - 在使用 auto.arima 时,我们得到了最好的 pd 和 q 值。有没有办法将这些值动态发送到 arima() 函数?
- android - TextView 不会以编程方式将高度更新为 wrap_content
- dialog - 十进制数字字段在 AEM 触摸 UI 对话框中不起作用
- kubernetes - 印花布在我有两个接口的节点上不起作用,谢谢
- pandas - 如何通过选择熊猫中的行来删除
- mysql - MAMP PRO MySQL“启动但不接受连接”
- c - 用 C 完成用户输入