人们从哪里带来这些页面?它存储它们吗?它有多安全?

人们从哪里带来这些页面?它存储它们吗?它有多安全?

我正在尝试了解如何man运作。不幸的是,man man没有给出以下问题的答案:

  1. 命令的页面是随其一起安装的还是man从远程数据库获取的?
  2. 如果它是从网络获取的,那么它的安全性如何?它是通过 TLS 实现的吗?
  3. 是否man在本地缓存页面?如果有的话需要定期清理吗?

答案1

在现代类 Unix 系统中文件系统层次结构标准,手册页通常存储在位于 的目录树中/usr/share/man。较旧的类 UNIX 系统可能会使用/usr/man

通常man根本不使用网络,尽管可能某个地方的某人已经实现了基于网络的实现。

roff通常,手册页是使用最初称为(其 GNU 实现名为)的旧文档格式化系统编写的groff。查看手册页时,该man命令将通过格式化程序运行手册页源代码,这将生成适合您当前使用的窗口宽度的输出。格式化程序还可以从相同的源代码生成 PostScript、PDF 和可能的 HTML 版本的手册页,这不仅限于终端样式的等宽文本。

man命令可以将手册页的格式化文本版本缓存为cat页面,以便更快地重新查看,通常位于/var/cache/man(FHS)或手册页目录层次结构的单独子目录中(较旧的系统)。您可能会发现系统已经包含一个默认(通常每周一次)的 cron 作业,可以自动为您清理此缓存。

如果您的 CUPS 打印系统启用了打印到 PDF 功能,请man -t ls | lp -d <name of your PDF virtual printer>使用任何 PDF 查看器运行并查看结果输出。或者man -Thtml ls > ls_man_page.html获取 HTML 版本。 (这是针对 Debian 10 的命令man-db实现man:格式选项在其他实现中可能有所不同。)

答案2

命令的页面是否随其一起安装

是的,通常是这样,但当然您始终可以向系统添加新的自定义联机帮助页,而无需使用本地包管理系统。您可以使用系统包管理器来了解给定的联机帮助页 com 来自哪个包。基于 Linux 的系统上的联机帮助页的很大一部分来自Linux 手册页项目

如果它是从网络获取的,那么它的安全性如何?

它没有,但正如其他人所说,有人可能已经编写了自己的实现。我猜您的困惑可能来自第一行man man

man - an interface to the on-line reference manuals

或者在 BSD 版本中:

man — display online manual documentation pages

这个LQ问题 以获得解释。

为了好玩还请参阅https://explainshell.com。这是一个不错的网站,可以快速解释给定命令中选项的含义,例如 https://explainshell.com/explain?cmd=ls+-Alhtr但请记住,给定命令的本地实现可能会有所不同,或者可能不支持所有选项(在使用小型类似 Busybox 的系统时尤其如此)。

当然man可以通过网络工作,从某种意义上说,您可以在本地安装远程目录并告诉man在那里查找手册页,例如我可以从远程 FreeBSD 机器读取手册页,如下所示:

$ sshfs freebsd:/usr/share/man /mnt/bsd-manpages
$ MANPATH=/mnt/bsd-manpages man man
$ MAN(1)                                                                                

    BSD General Commands Manual                                                                                   MAN(1)

NAME
     man — display online manual documentation pages

man 是否在本地缓存页面?如果有的话需要定期清理吗?

已经很好地解释了电信的答复

相关内容