LoginSignup
5
5

More than 1 year has passed since last update.

【小ネタ】LinuxやMacには/bin/[という謎のバイナリがある

Last updated at Posted at 2022-09-17

概要

LinuxやMacには/bin/[という謎のバイナリファイルがあります。
(※Windowsでは、WSLは当然として、CygwinとかGitBashにもあります)

$ which [
/usr/bin/[
$ file $(which [)
/usr/bin/[: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=e839984e966cdfd5f1bfde6ecda802397d4a4c1f, stripped

これは一体何なのだろう...
ググってもあんまり情報出てこなかったので、Manコマンド叩いてちょっと見てみました。

結論

シェルスクリプトのif文の条件とかで使う[]の事でした。

考察?

まさかif [ 条件 ]; then[がコマンドだったとは。。。
これはtestコマンドの省略系なので、確かに言われてみればコマンドですね。
[ 条件 ]は以下の性質を持つようです。

  • 条件が真⇒$?=0
  • 条件が偽⇒$?=1(※1以外もあるのかも。とりあえず0にはならないみたい。)

ということは、bashなどのifは、

  • if $?=0となるコマンド⇒処理が実行される
  • if $?!=0となるコマンド⇒処理が実行されない

という性質を持つのかな?ちょっとやってみました。

$ cat test.txt
hello
$ if grep 'hello' test.txt >/dev/null; then echo '真'; fi
真
$ if grep 'hoge' test.txt >/dev/null; then echo '真'; fi
# 何も出力されなかった

どうやら合ってそうですね。

5
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5