列出 bash 中特定命令的所有可选参数

列出 bash 中特定命令的所有可选参数

我想知道是否有一种方法可以找出 bash 中命令的所有可选参数,而无需打开手册页并浏览大量不需要的信息。

Eg:
Input: <some_command> cat
Output: -A, --show-all           equivalent to -vET
  -b, --number-nonblank    number nonempty output lines, overrides -n
  -e                       equivalent to -vE
  -E, --show-ends          display $ at end of each line
  -n, --number             number all output lines
  -s, --squeeze-blank      suppress repeated empty output lines
  -t                       equivalent to -vT
  -T, --show-tabs          display TAB characters as ^I
  -u                       (ignored)
  -v, --show-nonprinting   use ^ and M- notation, except for LFD and TAB
      --help     display this help and exit
      --version  output version information and exit

答案1

它绝不是通用的,但许多命令提供了使用摘要回应-h--help论点例如

$ cat --help
Usage: cat [OPTION]... [FILE]...
Concatenate FILE(s) to standard output.

With no FILE, or when FILE is -, read standard input.

  -A, --show-all           equivalent to -vET
  -b, --number-nonblank    number nonempty output lines, overrides -n
  -e                       equivalent to -vE
  -E, --show-ends          display $ at end of each line
  -n, --number             number all output lines
  -s, --squeeze-blank      suppress repeated empty output lines
  -t                       equivalent to -vT
  -T, --show-tabs          display TAB characters as ^I
  -u                       (ignored)
  -v, --show-nonprinting   use ^ and M- notation, except for LFD and TAB
      --help     display this help and exit
      --version  output version information and exit

Examples:
  cat f - g  Output f's contents, then standard input, then g's contents.
  cat        Copy standard input to standard output.

GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
Full documentation at: <http://www.gnu.org/software/coreutils/cat>
or available locally via: info '(coreutils) cat invocation'

答案2

最佳方法取决于你正在运行的命令类型。你可以尝试-h--helpsteeldriver 建议,但对于某些命令可能不会显示全部可用选项。理想情况下,所有选项都会显示出来;但即便如此,它们也可能不会全部解释清楚。官方文档,例如man或者info页面通常会显示并解释所有选项——或者至少是开发人员希望用户实际使用的所有选项。(有时确实存在未记录的选项。)

首先我建议检查命令是否是外部命令shell 内置命令。您可以使用命令执行此type操作。在bash,你可以将-a标志传递给type命令,以显示什么如果第一个匹配项不存在则运行:

ek@Io:~$ type -a ls
ls is aliased to `ls --color=auto'
ls is /bin/ls

对我来说(可能对你来说也是如此),ls是一个别名。别名扩展是非递归的,因此lsinls --color=auto不使用别名,而是使用第二个列表/bin/ls。这是一条路径可执行文件,因此是一个外部命令。

因此,要查看ls包括所有可用选项,我会跑man ls

有些情况,例如cat,很简单:

ek@Io:~$ type -a cat
cat is /bin/cat

shell 的内置命令通常没有自己的手册页,但您可以使用help内置命令来了解它们:

ek@Io:~$ type -a history
history is a shell builtin
ek@Io:~$ type -a help
help is a shell builtin

因此,您可以运行help history以了解historyhelp help了解help

对于某些内置命令,例如compgenhelp内置命令会显示所有选项,但不会解释其中大部分选项。每当您需要有关 shell 内置命令的更多信息时,您可以查阅bash( ) 的手册页,或者您可以通过运行或man bash来查阅更长更完整的文档info bash在线访问. 你可能会发现内置部分特别有用。

一些命令既可以作为外部可执行文件使用作为 shell 内建命令,这是使用type -afirst 会有帮助的另一个原因:

ek@Io:~$ type -a printf
printf is a shell builtin
printf is /usr/bin/printf

例如,如果你运行man printf,你将看不到有关该-v选项的任何信息,因为/usr/bin/printf不支持它。bash但是 shell 内建命令支持它,运行时显示的文本help printf会列出并解释它。

最后,对于手册页,了解以下内容很有用你可以在线阅读

相关内容