1

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

./a.out

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

4

5 回答 5

2

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

另一种方法是使用“-q”或“?”运行程序。论据。

另一种方法是使用“字符串”在可执行文件中查找可打印的字符串,

strings a.out |less

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

于 2013-10-04T02:03:41.893 回答
1

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

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

于 2013-10-04T02:02:02.430 回答
0

a.out 是“c”程序的默认名称,该程序已被编译但未命名。通常程序是用 -ofilename 参数编译的

请参阅确定 C 可执行文件名称

于 2013-10-04T01:54:28.370 回答
0

该命令可能没有任何关于其选项的文档。如果它是一个预编译的二进制文件,你可能几乎没有办法找出它的选项是什么,如果有的话。您可以尝试 strace 查找线索,但不能保证该程序有联机帮助页或任何类型的--help输出。

于 2013-10-04T02:01:33.323 回答
0
./a.out

本身就是一个命令。让我们试着了解一下。

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

通过访问程序参数了解更多信息

命令执行的奖励详情:

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

方法一:


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

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

./a.out

' . '[点] 表示当前目录。

示例 2:通过显式提供路径在任何地方执行命令

/home/username/a.out

方法二:


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

类型:环境 | grep -i "PATH" 如果只提供命令的名称,则知道当前查找要执行的命令的位置。

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

a.out

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

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

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

您只需键入“rm”,shell 仍然能够执行该命令。原因是,命令路径是隐式的,可以通过读取“PATH”shell env 变量找到。

对于执行用户生成的命令,虽然方法 1 的示例 2 在大多数情况下就足够了,但您仍然会发现方法 2 在您广泛使用命令的地方(日复一日)很有用。

于 2013-10-04T09:31:46.543 回答