什么是/usr/bin/[?

Jos*_*osh 23 linux shell test command

我只是在 /usr/bin 中闲逛,发现了一个名为 .elf 的 ELF 二进制文件[/usr/bin/[. 我从未听说过这个文件,我的第一个想法是它是一种隐藏程序(可能是特洛伊木马)的巧妙方法。然而,它存在于我所有的 CentOS 服务器上,似乎没有手动输入。我可以冒险猜测它是什么,但我一直在寻找更权威的答案......

Zyp*_*her 25

它是“测试”命令的另一种形式。主要用于脚本中。

IE

if [ $VAR ]
then
    echo $VAR exists!
fi
Run Code Online (Sandbox Code Playgroud)

  • `[` * 是 bash 内建的,但 `test` 也是。并非所有的 shell 都是一样的——在很多 shell 中,`test`(和 `[`)不是内置的。 (4认同)
  • 但与 test 不同的是,它要求最后一个 arg 是 ] (3认同)
  • 有一个内置的 bash,或者至少,我的系统表现得好像有。[ --help 提供与 /usr/bin/[ --help 不同的输入 (3认同)
  • test 和 [ 内置于 bash,但不一定是所有其他 shell。您可以暂时移出路径并运行使用其中任何一个的 bash 脚本,您将看到该脚本仍然有效。 (3认同)
  • @Josh:又过了一千年,Bourne shell 没有内置测试操作符。这是一个像其他命令一样的常规命令;和 /bin/test 链接到 /bin/[ 以提供符号方便。 (3认同)

Flo*_*sch 9

当您使用类似的东西时,这就是您所说的

if [ -e foo ]; then ...
Run Code Online (Sandbox Code Playgroud)

在 shell 脚本中(但现在大多数 shell 都将它作为内置)。man test应该给你文档。