i-node 値と test(1) について

id:otsune 様が i-node 値について教えてくださった のでそのメモです。


i-node 値というのはファイルに割り振られている電話番号みたいなもので、ディレクトリはそのアドレス帳みたいなものです。
UNIXのinode番号: 中年SEのありふれた生活
FreeBSD QandA 592


さて、上記のサイト様で i-node 値の概要を勉強したら、昨日 id:otsune 様から 教わった内容 を考えてみましょう。
以下がその内容です。

ls -il /bin/test /bin/[
ls -li /usr/share/man/man1/¥[.1.gz /usr/share/man/man1/test.1.gz


以下が上記のコマンドを打ち込んだ結果です。

$ ls -il /bin/test /bin/[
49 -r-xr-xr-x  2 root  wheel  7460 May  7 12:56 /bin/[
49 -r-xr-xr-x  2 root  wheel  7460 May  7 12:56 /bin/test
$ ls -li /usr/share/man/man1/\[.1.gz /usr/share/man/man1/test.1.gz
2970532 -r--r--r--  2 root  wheel  2657 May  7 12:56 /usr/share/man/man1/[.1.gz
2970532 -r--r--r--  2 root  wheel  2657 May  7 12:56 /usr/share/man/man1/test.1.gz


上記を踏まえて下記のコマンドを打ち込んでみます。

$ test 1 != 2 ; echo $?
0
$ test 2 != 2 ; echo $?
1
$ [ 1 != 2 ] ; echo $?
0
$ [ 1 != 2 ] ; echo $?
1


『 test 』と『 [ 』は等価なことがわかります。
以下は参考にさせていただいたサイト様です。
testコマンドの使い方: UNIX/Linuxの部屋


以上のことを踏まえると、昨日の解説もまた微妙に間違いで、『 [ 』はコマンドのひとつなので $? に 0 が返ってきた、というのが正しい解説です。 ( ですよね? )


余談ですが、たまに下記のようなフレースを見かけることがあります。

ぐぐるんじゃなくてmanを見ろ。

これにはいろいろと深い意味合いが込められているんだなと感じた今日この頃です。