可执行文件```做什么?

时间:2017-10-05 18:40:45

标签: linux bash

我的问题:

  • 我的计算机上有一个名为[的可执行文件。它做了什么?

更多信息:

关于上周的家庭作业的一个问题是"哪些可执行程序的名称只有一个字符长,他们做了什么?"

我运行了命令:find $PATH{1,2,3,4,5,6,7} -executable -name "?"(我将PATH的每个部分保存到名为PATH1,PATH2,PATH3等的变量中)

部分输出是:

/usr/bin/X
/usr/bin/w
/usr/bin/[

我之前使用过w,我知道它的作用。我不知道X做了什么,并且没有手册页,所以我运行了命令。在输出中,它告诉我去" http://wiki.x.org"一切都很好。

但是[没有手册页,我甚至无法弄清楚如何运行[命令!

$ /usr/bin/[
/usr/bin/[: missing ']'

$ source /usr/bin/[
-bash: source: /usr/bin/[: cannot execute binary file

我用一个大的" ???"来完成作业。我的[条目旁边,但我仍然想知道它的作用。或者,如果它甚至是一个实际的可执行文件。

3 个答案:

答案 0 :(得分:2)

[基本上是语法糖,test的紧急备份版本,在if语句中看起来更好。在bash中你可以(并且可能应该)实际上总是使用[[ ]]代替,它由解释器直接解析并且不会产生新的进程。您还应该仔细阅读bash手册页并理解进行数学评估的(( ))

答案 1 :(得分:1)

您收到的错误消息实际上来自[,而不是shell。那就是你确实运行了[并且[抱怨它想要在其参数列表中有一个]

因此,运行[的最简单方法是[ ],它不执行任何操作并返回false。

[做的是评估一个条件。它经常用在if语句中:

if [ some-condition ]
then
  do_something
fi

这看起来好像括号是if语法的一部分,但它们并非如此。它只是使用参数[some-condition调用程序]

答案 2 :(得分:0)

[test

的同义词

https://www.gnu.org/software/bash/manual/html_node/Bash-Conditional-Expressions.html

  

测试 - 检查文件类型并比较值

https://linux.die.net/man/1/test

您获得的错误missing ]是因为此测试的同义词执行为

[ test_expression ],如果没有结束括号]

,则不完整
相关问题