这些参数在 linux 中究竟意味着什么?
What exactly do these arguments mean in linux?
我有一个用 C 编写的程序,我应该 运行 它在 linux 上的命令如下所示:
./program --something X Y
这到底是什么意思?我认为 X Y 将是参数,所以 argc[2]
将是 X
而 argc[3]
将是 Y
?
但是 --something
呢?
非常感谢!
C 运行时不区分任何参数,无论它们是否以 --
开头。所以你有,
argv[0] = "./program"
argv[1] = "--something"
argv[2] = "X"
argv[3] = "Y"
argv[4] = NULL
是您的程序为这些值赋予了意义。
命令本身之后的任何内容都将到达 argv
:
argv[1]
是 --something
,argv[2]
是 X
,argv[3]
是 Y
。遵循 *unix 约定,这意味着您的程序有一个名为 "something" 的参数,其值为 "X",而 "Y" 是程序应该应用的参数 - 但这是完全正确的对你的计划实施。
就 argc
和 argv
而言,这些论点与其他论点没有什么不同。
它们的不同之处在于许多 Linux 工具(但不仅如此)使用 getopt
来更容易理解这些选项。当您需要多个可能的选项(或不记得它们的用途)时,这特别有用。
您通常可以有带或不带参数的多头和空头选项。
惯例也是 --help
打印出所有可用选项的摘要。
例如,在 man
的帮助下:
$ man --help
Usage: man [OPTION...] [SECTION] PAGE...
-C, --config-file=FILE use this user configuration file
-d, --debug emit debugging messages
-D, --default reset all options to their default values
--warnings[=WARNINGS] enable warnings from groff
在此特定示例中,您可以使用 -d
或 --debug
来打开调试。 getopt
(或类似的)用于将 -d
或 --debug
解析为有意义的内容。 -C
或 --config-file
也是等效的,但需要一个参数。
其他语言中也有类似的等效项(例如 Python's argparse,或 Java 中的 Apache Commons CLI)。
我有一个用 C 编写的程序,我应该 运行 它在 linux 上的命令如下所示:
./program --something X Y
这到底是什么意思?我认为 X Y 将是参数,所以 argc[2]
将是 X
而 argc[3]
将是 Y
?
但是 --something
呢?
非常感谢!
C 运行时不区分任何参数,无论它们是否以 --
开头。所以你有,
argv[0] = "./program"
argv[1] = "--something"
argv[2] = "X"
argv[3] = "Y"
argv[4] = NULL
是您的程序为这些值赋予了意义。
命令本身之后的任何内容都将到达 argv
:
argv[1]
是 --something
,argv[2]
是 X
,argv[3]
是 Y
。遵循 *unix 约定,这意味着您的程序有一个名为 "something" 的参数,其值为 "X",而 "Y" 是程序应该应用的参数 - 但这是完全正确的对你的计划实施。
就 argc
和 argv
而言,这些论点与其他论点没有什么不同。
它们的不同之处在于许多 Linux 工具(但不仅如此)使用 getopt
来更容易理解这些选项。当您需要多个可能的选项(或不记得它们的用途)时,这特别有用。
您通常可以有带或不带参数的多头和空头选项。
惯例也是 --help
打印出所有可用选项的摘要。
例如,在 man
的帮助下:
$ man --help
Usage: man [OPTION...] [SECTION] PAGE...
-C, --config-file=FILE use this user configuration file
-d, --debug emit debugging messages
-D, --default reset all options to their default values
--warnings[=WARNINGS] enable warnings from groff
在此特定示例中,您可以使用 -d
或 --debug
来打开调试。 getopt
(或类似的)用于将 -d
或 --debug
解析为有意义的内容。 -C
或 --config-file
也是等效的,但需要一个参数。
其他语言中也有类似的等效项(例如 Python's argparse,或 Java 中的 Apache Commons CLI)。