apa -x artinya jika pernyataan kondisional?

20

Apa yang dimaksud di -xsini:

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

Bagaimana saya bisa mengetahui halaman buku panduan ini if?

taymindis Woon
sumber
4
tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html Ini adalah halaman yang menjelaskan dasar-dasar untuk bash jika.
Christophe De Troyer
2
Ini mengevaluasi ke true jika file ada dan dapat dieksekusi.
jobin
Apakah kamu sudah mencoba help if?
Avinash Raj

Jawaban:

26

Dari man bashhalaman (terutama bagian EKSPRESI KONDISI):

   -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.

   [...]
Sylvain Pineau
sumber
3
Perlu dicatat, executable untuk direktori berarti dapat dilalui.
Pengingat kaya
2
@StevenPenny Bagian kedua dari pertanyaan adalah "Bagaimana saya bisa mengetahui halaman manual ini jika?"
Sparhawk
1
@drewbenn Ketika Anda memanggil testdalam bash, Anda tidak memohon testbiner. Anda, sebaliknya, memohon bash's testbuiltin, yang memiliki dokumentasi di help test, di antara tempat-tempat lain. man testmungkin menyesatkan dalam beberapa kasus karena alasan itu.
Chris Down
11

ifitu sendiri adalah kata kunci shell, sehingga Anda dapat menemukan informasi tentang itu dengan help if. ifsendiri hanya cabang berdasarkan apakah perintah berikutnya mengembalikan true (0) atau false (bukan nol). Apa yang sebenarnya Anda inginkan, adalah man [atau man test, di mana [alias untuk test. Pernyataan itu sebenarnya mengeksekusi test -x /etc/rc.local, yang menguji untuk melihat apakah file itu ada dan dapat dieksekusi (atau memiliki izin pencarian).

psusi
sumber
1
man [bekerja juga.
Sparhawk
1
Itu tidak hanya menguji untuk melihat apakah ada, itu menguji apakah file tersebut dapat dieksekusi juga.
Tom Fenech
@ TomFenech, ahh, benar ...
psusi
@psusi ifbukan shell builtin kata kunci shell. Jalankan perintah ini type ifuntuk memeriksa itu.
Avinash Raj
3

Dari info test:

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

Jalankan izin diperlukan pada direktori untuk dapat cd ke dalamnya (yaitu, untuk membuat beberapa direktori direktori kerja Anda saat ini).

Jalankan diperlukan pada direktori untuk mengakses informasi "inode" dari file-file di dalamnya. Anda memerlukan ini untuk mencari direktori untuk membaca inode file di dalamnya. Untuk alasan ini izin eksekusi pada direktori sering disebut izin pencarian.

girardengo
sumber