if条件文で-xはどういう意味ですか?


20

-xここでどういう意味ですか:

if [ -x /etc/rc.local ] then

どうすればこのマニュアルページを見つけることができますifか?


4
tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.htmlこれは、bash ifの基本を説明するページです。
クリストフ・デ・トロイエ14

2
ファイルが存在し、実行可能である場合、trueと評価されます。
jobin 14

試しましたhelp ifか?
アビナッシュラジ14

回答:


26

man bashページから(特にCONDITIONAL EXPRESSIONSセクション):

   -a file
          True if file exists.
   -b file
          True if file exists and is a block special file.
   -c file
          True if file exists and is a character special file.
   -d file
          True if file exists and is a directory.
   -e file
          True if file exists.
   -f file
          True if file exists and is a regular file.
   -g file
          True if file exists and is set-group-id.
   -h file
          True if file exists and is a symbolic link.
   -k file
          True if file exists and its ``sticky'' bit is set.
   -p file
          True if file exists and is a named pipe (FIFO).
   -r file
          True if file exists and is readable.
   -s file
          True if file exists and has a size greater than zero.
   -t fd  True if file descriptor fd is open and refers to a terminal.
   -u file
          True if file exists and its set-user-id bit is set.
   -w file
          True if file exists and is writable.
   -x file
          True if file exists and is executable.

   [...]

3
ディレクトリの実行可能ファイルは、ディレクトリを横断できることを意味します。
リッチリマー14

2
@StevenPenny質問の2番目の部分は、「このマニュアルページをifで見つける方法は?」
スパルホーク14

1
@drewbenn testbashで呼び出すと、testバイナリは呼び出されません。代わりに、bashのtestビルトインを呼び出しhelp testます。ビルトインには、他の場所にあるドキュメントがあります。man testそのため、場合によっては誤解を招く可能性があります。
クリスダウン14

11

ifそれ自体はシェルキーワードであるため、でそれに関する情報を見つけることができますhelp ififそれ自体は、次のコマンドがtrue(0)またはfalse(0ではない)を返すかどうかに基づいてのみ分岐します。あなたが実際にも欲しいもの、であるman [か、man testどこ、[の別名がありますtest。そのステートメントは実際に実行されてtest -x /etc/rc.localおり、そのファイルが存在し実行可能である(または検索許可を持っている)かどうかをテストします。


1
man [も動作します。
Sparhawk

1
存在するかどうかをテストするだけでなく、ファイルが実行可能かどうかもテストします。
トムフェネク14

@TomFenech、ああ、右...
psusi

@psusi ifはシェルビルトインではなく、シェルキーワードですtype if。このコマンドを実行して、それを確認します。
アビナッシュラジ14

3

からinfo test

`-x FILE'
    True if FILE exists and execute permission is granted (or search permission, if it is a directory).

ディレクトリにcdできるようにする(つまり、一部のディレクトリを現在の作業ディレクトリにする)には、ディレクトリに対する実行権限が必要です。

実行は、ディレクトリ内のファイルの「inode」情報にアクセスするために必要です。これは、ディレクトリを検索して内部のファイルのiノードを読み取るために必要です。このため、ディレクトリの実行権限は、しばしば検索権限と呼ばれます。

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