いつから/bin配下に”[“(ブラケット)ファイルってあった?

スマホ画面

私のMacBookの/bin配下にね、ファイルがあるんですよ、”[“(左ブラケット)ってファイル。ファイル名がブラケットとかカギ括弧とか呼んでる記号の一文字だけのファイル。ubuntuにもCentOSにもない。正月にyosemiteをクリーンインストールしたMacbookにだけある。自分で軽くgoogleで検索してみたけど対象がメタすぎる。すぐにギブアップ。Mac OSのバグだか?いやっ、たぶん自分がtypoで何かやらかしてる。環境はMAC OS X 10.10 Yosemite。

$ ls -li /bin/[
526541 -rwxr-x1r-x 2 root wheel 18480 9 10 07:44 /bin/[
$ file /bin/[
/bin/[: Mach-O 64-bit executable x86_64

“[“(左ブラケット)ファイルは実行可能なバイナリファイル。まぁ、目障りではあるけど実害がなし。/bin配下なんていじらないので忘れてました。ずいぶん長いとこ忘れてた。ところがです、先日、突然に答えを見つけました、dotinstallで。

レッスン:シェルスクリプト入門
動画:#10 if文で条件分岐をしてみよう (1)
「なお、こちらの [ ] ですが、記号のように見えますが test を代替する「命令」になります。」

なんてことだ、”[“(左ブラケット)はshellのコマンドなのか。実行してみよう(わからんものを実行するのは危険です!)。

-baⅠsh: [: missing `]'

そしたらちゃんと、”]”(右ブラケット)が見つからないんだけど?って指摘してきた。manにも載ってました。

$ man [
TEST(1) BSD General Commands Manual TEST(1)

NAME
test, [ -- condition evaluation utility

SYNOPSIS
test expression
[ expression ]

DESCRIPTION
The test utility evaluates the expression and, if it evaluates to true,
returns a zero (true) exit status; otherwise it returns 1 (false). If
there is no expression, test also returns 1 (false).
:

[(ブラケット)コマンドはtestコマンドと同じ実装。地味な話だけど、ずっとモヤモヤが解決してスッキリ。

追記

$ cmp -s /bin/[ /bin/test
$ echo $?
0
$ ls -li  /bin/[ /bin/test
526541 -rwxr-xr-x  2 root  wheel  18480  9 10 07:44 /bin/[
526541 -rwxr-xr-x  2 root  wheel  18480  9 10 07:44 /bin/test

とりあえずMacbookでエックスサーバにssh接続できた

コーヒーカップ

20130824_1
エックスサーバのマニュアルページより引用

MacBookでエックスサーバにssh接続しようとするとエラーが出る。

$ ssh -p 10022 hogehoge.xsrv.jp
Permission denied (publickey,gssapi-with-mic).

.sshディレクトリや鍵ファイルのパーミッションを変えてみたが解決しない。問題はそんな単純な事じゃないらしい。

Windows7ならエックスサーバのマニュアルにあるとおりでTeratermで接続ができる。しかし、Windows以外から接続については何も書かれてない。Windowsで接続出来るならWindowsで作業すれば良さそうな話だが、仕事の仲間にはMacな人も多いので、接続手順は探しておく必要がある。googleで検索したり、-vオプションの結果を見ながら試行錯誤しているうちに、以下の措置で接続できた。

$ mv ~/.ssh/[サーバ名].key ~/.ssh/identity.key
$ chmod 600 ~/.ssh/identity

manコマンドのssh_configの説明によると、IdentityFileのデフォルトは~/.ssh/identity.key、~/.ssh/id_dsa、~/.ssh/id_ecdsa、~/.ssh/id_rsaになっている。

スクリーンショット 2013-08-24 10.44.23
manコマンドより引用

エックスサーバからダウンロードする公開鍵の[サーバ名].keyファイルの名前を変更することで対処してしまった。これでは接続するサーバが変わるごとに前掲の措置をやりなりなおさなければならない。セキュリティ面からも、安全な運用方法を検討して行きます。