如何知道每个命令有哪些选项?

如何知道每个命令有哪些选项?

我已经使用 Linux 一段时间了,脑子里一直有一个问题。我将使用 mount 命令作为示例。

当您看到 mount 的手册页时,它会提示您使用如下命令: mount $type $drive $dir其中 $drive 是您要挂载的驱动器,$type 是该驱动器的类型,$dir 是您将要挂载它的目录。

至于在 $drive 和 $dir 变量中放什么,这很容易说清楚。现在在 $type 变量中你不能随便放任何你喜欢的东西,因为系统不会理解它。你必须使用预先设定的单词,如 vfat、ext3、auto 等。

我的问题是:对于每个需要这种预制单词来填充变量空间的命令,我如何知道我有哪些选项?在哪里可以看到这种变量的所有选项的列表?

mount 只是一个命令,还有无数其他命令像这个一样,需要从一组预制单词中选择一个单词才能工作。据我所知,手册页或某些明显的网站中没有这样的列表。

答案1

没有通用的方法,特别是对于像这样的可扩展程序mount

对于mount-t foo选项指示mount运行mount.foo命令。这取决于您安装了什么。例如,我可以使用以下选项mount

ceph  cifs  fuse  fuse.ceph  lowntfs-3g  nfs  nfs4  ntfs  ntfs-3g

为什么?因为我安装了以下帮助程序mount

$ ls /sbin/mount.*
/sbin/mount.ceph       /sbin/mount.cifs        /sbin/mount.fuse
/sbin/mount.fuse.ceph  /sbin/mount.lowntfs-3g  /sbin/mount.nfs
/sbin/mount.nfs4       /sbin/mount.ntfs        /sbin/mount.ntfs-3g

不过,一般来说,没有办法知道可以运行给定的命令,特别是如果它可以使用外部程序的话mount

答案2

通常你有两个选择:

  1. 一种是研究你想知道的每个命令的源代码,这可能不是一个好主意(实际上,如果你想知道内部工作原理的话,这是一个好主意,但你知道,从时间上讲;)),因为它要花费无数个小时。

  2. 第二个更可行的选择是研究手册,使用maninfo可以为您提供所有选项和参数的详细解释。

答案3

据我所知,手册页中没有这样的列表(...)。

即使是在非常特殊的 mount 情况下(muru 解释了原因)实际上手册页很有帮助:

-t, --types fstype
  The argument following the -t is used to indicate the filesystem type.
  The filesystem types which are currently  supported depend on the running
  kernel. See /proc/filesystems and /lib/modules/$(uname -r)/kernel/fs for
  a complete list of the filesystems. The most common are ext2, ext3, ext4,
  xfs, btrfs, vfat, sysfs, proc, nfs and cifs.

它不仅列出最常见的论点, 但是也/proc/filesystems(这是一个文件,所以我们将使用cat)和 /lib/modules/$(uname -r)/kernel/fs(这是一个目录,所以我们将使用ls)。结合起来,为您提供了特定系统上可用的完整参数列表。

通常,manand/orinfo要么包含选项的可能参数的完整列表,要么(如您的示例)指向您获取此信息的其他来源。要在详尽的手册页中搜索选项,搜索功能非常方便,只需键入例如/--types,点击Enter搜索第一个出现项并N浏览后续出现项。

相关内容