私のシステムの/ binにある `[`プログラムは何ですか?


32

私は最近、Fedoraの/binフォルダーを参照していましたが、という名前のバイナリに気付きました[。インターネットで詳細を検索しようとしましたが、有用なものが見つかりませんでした。これを実行してstraceも、詳細な検査に役立つものは何も生成されないようです。

それは何ですか?心配する必要がありますか?システムの侵害の結果でしょうか?実行すべきですか?パッケージに属しますか?


4
[ -f /bin/[ ] && printf "%s\n" "Don't panic"
jasonwryan

@jasonwryanええ、それを理解するのに時間がかかりました。私はネット上でそれに関する多くの情報を見つけることができず、Googleはあまり助けませんでした。私の靴の中にいる次の人の助けになることを期待して、ここに投稿しました。
NlightNFotis 14

10
実行man [して[コマンドを確認してください!
ジル「SO-悪であるのをやめる」14

@Gilles正直に言って、私はそうしました、そして、それは何かについて言及bashしました、そして、それは何か他のものであるかもしれないと思いました。ファイルシステムで今まで見たことのない名前のバイナリを見たとき、頭に浮かぶのは初めてではありません-別の言い方をすれば、頭の中の疑問をクリアするためにもっと具体的なものを見つけなければなりません。
NlightNFotis 14

4
やるrpm -qif /bin/[...それはどこから来るのかを見つけるために
vonbrand

回答:


37

[以下の下にあるバイナリ/bin多くのGNU / Linuxディストリビューションのツリーをオフに心配するものではありません。少なくとも私のFedora 19では、以下に示すように、coreutilsパッケージの一部です。

$ rpm -qf /bin/[
coreutils-8.21-13.fc19.x86_64

また、シェルスクリプトまたはインタラクティブな使用法で記述されるtestような式を可能にするための同義語です[ expression ]


16
のようなシェルにbashは組み込みがtestあり[、外部バイナリを呼び出さないことに注意してください。
ヨルダン14

1
@jordanm、今日、ほとんどのシェルには組み込み(および他の多くの単純で一般的な操作)が組み込まれています。しかし、それは常にそうではありませんでした(またはすべてのシェルでそうです)。POSIXによって義務付けられることもあります。
フォンブランド14

2
@vonbrand pubs.opengroup.org/onlinepubs/009695399/utilities/test.htmlそのとおりです。[この仕様では、テストコマンドが必要です。
yegle 14

@ vonbrand、Bourneのようなシェルのみが一般的に組み込み[コマンドを持っています。(t)csh、のような非Bourneライクなものはrces通常はそうでfishはありません(例外です)。
ステファンシャゼル14年

5

[コマンドは同じですtestコマンド。

シェルスクリプトでかなり簡潔な条件ステートメントを記述できます。SunOSのマニュアルページから:

   if [ "$1" = "pear" ] || [ "$1" = "grape" ] || [ "$1" = "apple" ]
   then
       command
   fi

削除すると、スクリプトが破損します!


[組み込みコマンドとして持っていないシェル用に記述されたスクリプトは壊れます。ほとんどのシェルはそうです。それでも、私は確かに削除することをお勧めしません/bin/[
キーストンプソン

@KeithThompson、すべてのシェルにはビルトインがあり、[シェル以外のアプリケーションを実行するスクリプト[が壊れます。のようなfind ... -exec [ -f {} ] \;またはenv LC_ALL=C [ -f bar ]
ステファンシャゼル14

@StephaneChazelas:すべてのシェル?(cshとtcshはそうではありませんが、おそらくそれは重要ではありません。)[ビルトインとしてはないが[、オリジナルではビルトインだとは思わないsh由来のシェルを見たことはないと思いますボーンシェル。いずれにしても、削除すること/bin/[は確かに悪い考えです。
キーストンプソン14

屁理屈マイナー:test[されているほとんど同じ。[終了が必要]です。testそれを許可していません(または]特別に引数を処理していません)。
キーストンプソン14

2

[は常にtestと同等のものとして指定されますが、]は明示的に言及されていませんでしたが、常に存在します。私は今これをhttp://ss64.com/bash/test.htmlで見つけました:

When the [ form is used, the last argument to the command must be a ]

それは安心です-彼らが言うように、ついに私は完了しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.