繁体   English   中英

这些参数在 linux 中到底是什么意思?

[英]What exactly do these arguments mean in linux?

我有一个用 C 编写的程序,我应该在 linux 上运行它的命令如下所示:

./program --something X Y

这到底是什么意思呢? 我认为 XY 将是参数,所以argc[2]将是Xargc[3]将是Y

但是--something呢?

非常感谢!

C 运行时不区分任何参数,无论它们是否以--开头。 所以你有了,

argv[0] = "./program"
argv[1] = "--something"
argv[2] = "X"
argv[3] = "Y"
argv[4] = NULL

是您的程序为这些值赋予意义。

命令本身之后的任何内容都将到达argv

argv[1]--somethingargv[2]Xargv[3]Y 遵循 *unix 约定,这意味着您的程序有一个名为“something”的参数,其值为“X”,而“Y”是该程序应该应用的参数 - 但这完全取决于您对程序的实现.

argcargv而言,这些参数与其他参数没有区别。

它们的不同之处在于许多 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 的 argparse或 Java 中的 Apache Commons CLI)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM