当我在终端中键入以下内容时
./a.out
我正在使用的命令的名称是什么?我不知道如何在这种情况下查找命令行选项,因为我不知道实际查找什么。
已编译 C 程序的默认输出文件名是 a.out。每个程序都解析自己的参数,因此没有规范的参数列表。由于您拥有 a.out,因此您可能拥有该程序的源代码。找到名为“main”的函数并查找检查 argv 或调用 getopt 的代码,也许有人会提供一个显示简短程序帮助的函数(名为帮助或用法)。
另一种方法是使用“-q”或“?”运行程序。论据。
另一种方法是使用“字符串”在可执行文件中查找可打印的字符串,
strings a.out |less
手册页与代码分开编写,因此您的可执行文件可能没有手册页。
./
是一个位置,而不是一个命令。.
代表当前目录。是/
目录分隔符。 a.out
是当前目录中的(可能是可执行的)文件。这是由 构建的已编译可执行文件的默认名称gcc
。
您通常使用此显式调用方法,因为.
它通常不是搜索路径的一部分。因此,如果您尝试a.out
不带./
前缀运行,即使您在当前目录中,系统也将无法找到它。这是一种安全措施(当您认为自己正在运行其他程序时,阻止您无意中运行恶意程序),并且是一件好事。
a.out 是“c”程序的默认名称,该程序已被编译但未命名。通常程序是用 -ofilename 参数编译的
请参阅确定 C 可执行文件名称
该命令可能没有任何关于其选项的文档。如果它是一个预编译的二进制文件,你可能几乎没有办法找出它的选项是什么,如果有的话。您可以尝试 strace 查找线索,但不能保证该程序有联机帮助页或任何类型的--help
输出。
./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 在您广泛使用命令的地方(日复一日)很有用。