当我运行可执行二进制文件时,命令的名称是什么?

时间:2013-10-04 01:52:58

标签: unix command

当我在终端中键入以下内容时

./a.out

我使用的命令的名称是什么?我不知道如何查找这种情况的命令行选项,因为我不知道实际查找的内容。

5 个答案:

答案 0 :(得分:2)

已编译的C程序的默认输出文件名是a.out。每个程序都会解析自己的参数,因此没有规范的参数列表。由于您有a.out,因此您可能拥有该程序的源代码。找到名为“main”的函数并查找检查argv或调用getopt的代码,也许有人会提供一个显示简短程序帮助的函数(名为help或usage)。

另一种方法是使用'-q'或'?'运行程序参数。

另一种方法是使用'strings'在可执行文件中找到可打印的字符串,

strings a.out |less

手册页与代码分开编写,因此可执行文件可能没有手册页。

答案 1 :(得分:1)

./是一个位置,而不是一个命令。 .表示当前目录。 /是目录分隔符。 a.out是当前目录中的(可能是可执行的)文件。这是由gcc构建的已编译可执行文件的默认名称。

您通常使用此显式调用方法,因为.通常不是搜索路径的一部分。因此,如果您尝试在没有a.out前缀的情况下运行./,即使您位于当前目录中,系统也无法找到它。这是一种安全措施(当您认为自己正在运行其他内容时,会阻止您无意中运行恶意程序),并且是一件好事

答案 2 :(得分:0)

a.out是已编译但未给它命名的'c'程序的默认名称。通常使用-ofilename参数编译程序

请参阅Determining C executable name

答案 3 :(得分:0)

该命令可能没有任何关于其选项的文档。如果它是一个预编译的二进制文件,你可能很少找到它的选项,如果有的话。您可以尝试对其进行分析以找到线索,但无法保证程序具有联机帮助页或任何类型的--help输出。

答案 4 :(得分:0)

./a.out

本身就是一个命令。让我们试着理解这一点。

Command基本上是一个可执行元素。它可以是二进制文件,也可以是shell脚本。 在您的情况下,a.out是可执行的二进制元素。对于a.out的命令行选项,请参考源代码的main()函数中的“argv”“argc”参数,这些参数已编译并链接到得到一个。

访问Program Arguments

了解详情

关于命令执行的奖励详情:

对于执行命令的shell,有两种众所周知的方法。

方法1:


显式提供可执行文件的路径以及命令的名称。

示例1:通过显式提供路径来执行当前工作目录中的命令:

./a.out

''[dot]表示当前目录。

示例2:通过显式提供路径

,从任何地方执行命令
/home/username/a.out

方法2:


更新PATH shell环境变量以包含要执行的命令的路径。

类型:env | grep -i“PATH”,只要提供命令的名称,就可以知道当前要查看的命令的位置。

如果更新PATH shell env变量以包含a.out的位置,则只需键入:

a.out

键入以下命令以更新PATH shell env变量

export PATH=$PATH:/path-to-executable

你可能已经注意到了这种风格。

您只需键入“rm”,但shell仍然可以执行该命令。原因是,命令的路径是隐含的并且在读取“PATH”shell env变量时找到。

对于执行用户生成的命令,虽然方法1的示例2在大多数情况下已足够,但您仍然发现方法2在日常和日常使用命令的地方非常有用。