GNU/Linux >> Linux の 問題 >  >> Linux

Linuxでの‘/ usr / bin / [‘[角かっこ]コマンドの使用法は何ですか?

今日、私は興味深いコマンド「 [ ‘(角括弧)nixCraftと呼ばれる有名なLinuxブログを介して。 「/ usr / bin /[」の使用法を説明した非常に興味深い投稿でした Linuxの‘コマンド。しかし、ご存知のとおり、私はLinuxで数年間働いており、nixcraftからのツイートがニュースフィードに表示されるまで、このコマンドを知りませんでした。皆さんから学びました、ありがとう。

さて、私はnixCraftから学んだことを共有するためにこの投稿を書いています。基本的に「/ usr / bin / [ ‘コマンドは‘ test と同じです Linuxの‘コマンド。説明させてください。

シェルプログラミングでは、特定のファイルが存在するかどうかを確認したい場合は、通常、IF condが存在しない場合に使用しますか?以下に示すようなもの:

if [ -f /etc/passwd ]
then
   echo "Yes"
else
  echo "No"
fi

さて、「 / etc / passwd ‘が存在すると、「はい」という出力が表示されます。 」else「いいえ 「。これは簡単で、同じことを行って値を比較することもできます。しかし、「 [ if の後の‘括弧 ‘?そこに、 / usr / bin / [ ‘が登場します。

または、以下のように(IFなしで)ファイルが存在するかどうかを確認できます。

[demo ~]$ [ -f /etc/passwd ] && echo "Yes" || echo "No"
Yes
[demo ~]$ [ -f /etc/passwd1 ] && echo "Yes" || echo "No"
No

上記のスニペットでは、‘[‘ 指図。言われたように、コマンドは「 test」と同じです ‘。以下の例を確認してください:

if test -f /etc/passwd
then
   echo "Yes"
else
  echo "No"
fi

はい、両方とも「 [ ‘および‘テスト 「同じ仕事をしますが、それらは対称的ですか?私もそれをチェックしましたが、そうではありません。

[demo ~]$ ls -l /usr/bin/test
 -rwxr-xr-x 1 root root 30064 Mar 21 2012 /usr/bin/test
[demo ~]$ ls -l /usr/bin/[
 -rwxr-xr-x 1 root root 32296 Mar 21 2012 /usr/bin/[

基本的に、「 [ ‘は組み込みのシェルコマンドです。 「type」を使用して確認します ‘コマンドは以下のとおりです:

[demo ~]$ type -a [
[ is a shell builtin
[ is /usr/bin/[

注:[」と表示されます ‘はLinuxに組み込まれているコマンドです。つまり、コマンドにスラッシュが含まれていない場合、SHELLは PATHを介してコマンドを見つけようとします。 変数。

コマンドなので、マニュアルページがあるはずですよね?

[demo ~]$ man [
 No manual entry for [
の手動入力なし

[」のマニュアルページが見つかりませんでした ‘、それから‘ testのmanページを見ました ‘下部に、‘ [ ‘。以下を参照してください:

[demo ~]$ man test
:::::::::::::
NOTE: your shell may have its own version of test and/or [, which usually supersedes the version described here. Please refer to your shell's documentation for details about the options it supports.
これに関連するJoeWalnesからの興味深いツイートがあります。

ボーナス…‘[‘のように‘[[‘もあります

[demo ~]$ type -a [[
[[ is a shell keyword

[[ ‘は実際にはSHELLの他のキーワードと同様のキーワードです–‘ !完了するまで、{}時間の間に[[]]の場合、ケース関数にelif elseesacfiを選択します。 ‘

キーワードなので、コマンドとして見つけることはできません。

[demo ~]$ ls -l /usr/bin/[[
ls: /usr/bin/[[: No such file or directory
[demo@gridfs ~]$ whereis [[
[[:

Linux
  1. /usr/sbin、/usr/local/sbin、/usr/local/bin の意味は何ですか?

  2. /bin と /usr/bin の違い

  3. /bin の内容を /usr/bin に移動しました。元に戻すことはできますか?

  1. Linuxgrepコマンドの使用方法

  2. Linuxでhistoryコマンドを使用する方法

  3. /usr/bin/[とは?

  1. Linuxは複数の連続したパスセパレーター(/ home //// username /// file)をどのように処理しますか?

  2. / usr/binと/usr/ local / bin Linuxの場合?

  3. Linux – / usr/binと/usr/sbinを/bin(gnu / linux)にマージしますか?