що означає -x у умовному твердженні?


20

Що -xтут означає:

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

Як я міг дізнатися цю сторінку керівництва if?


4
tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html Це сторінка, що пояснює основи для bash, якщо.
Крістоф Де Троєр

2
Він оцінюється як true, якщо файл існує та виконується.
Jobin

Ви пробували help if?
Avinash Raj

Відповіді:


26

Зі man bashсторінок (особливо в розділі ЗВ'ЯЗКОВІ ВИПРАВКИ):

   -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
Слід зазначити, що виконуваний файл каталогу означає, що його можна пройти.
багатий ремер

2
@StevenPenny Друга частина питання була "Як я можу дізнатися цю сторінку керівництва, якщо?"
Sparhawk

1
@drewbenn Коли ви викликаєте testbash, ви не посилаєтесь на testбінарний файл. Натомість ви посилаєтесь на testвбудований bash's , який має документацію help test, серед інших місць. man testможе вводити в оману в деяких випадках з цієї причини.
Кріс Даун

11

ifсамо по собі є ключовим словом оболонки, тому ви можете знайти інформацію про нього за допомогою help if. ifсам розгалужується лише на основі того, що наступна команда повертає true (0) або false (не нуль). Те, що ви насправді хочете, є man [або man test, де [це псевдонім test. Це твердження насправді виконується test -x /etc/rc.local, яке перевіряє, чи існує цей файл і є виконуваним (чи має дозвіл на пошук).


1
man [працює теж.
Sparhawk

1
Він не тільки тестує, щоб перевірити, чи він існує, він перевіряє, чи файл також виконується.
Том Фенек,

@TomFenech, ах, так ...
psusi

@psusi if- не оболонка, це ключове слово оболонки. Запустіть цю команду, type ifщоб перевірити це.
Avinash Raj

3

Від info test:

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

Дозвіл на виконання потрібен для каталогу, щоб мати змогу входити в нього (тобто зробити деякий каталог вашою поточною робочою каталогом).

Виконати потрібно в каталозі для доступу до інформації "inode" для файлів всередині. Це вам потрібно для пошуку в каталозі, щоб прочитати вставки файлів всередині. З цієї причини дозвіл на виконання в каталозі часто називається дозволом пошуку.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.