что означает -x в условном выражении if?

Что значит означает здесь :

если [ -x /etc/rc.local ], то 

Как я могу найти эту страницу руководства для , если ?

20
07.03.2015, 11:54
3 ответа

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

   [...]
41
11.23.2019, 00:49
  • 1
    Следует отметить, что исполняемый файл для каталога означает, что его можно пройти. –  rich remer 04.09.2014, 16:37
  • 2
    На самом деле вам нужен man test , так как вопрос задавался об одиночной открытой скобке, [. Двойная открытая скобка [[ — это bash, построенный -, на который вы ссылались в своем ответе. –  Community 04.09.2014, 21:16
  • 3
    @StevenPenny Вторая часть вопроса заключалась в том, «Как я могу найти эту страницу руководства для if?» –  Community 04.10.2014, 03:32
  • 4
    @drewbenn Когда вы вызываете `test `в bash, вы не вызываете двоичный файл `test `. Вместо этого вы вызываете встроенную команду bash `test `, которая имеет документацию в `help test `, среди прочего. По этой причине `тест человека `может в некоторых случаях вводить в заблуждение. –  Chris Down 04.10.2014, 05:08

Из info test:

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

Разрешение на выполнение необходимо для каталога, чтобы иметь возможность перейти в него (, то есть сделать какой-либо каталог вашим текущим рабочим каталогом ).

Execute необходим в каталоге для доступа к информации об «inode» файлов внутри. Это нужно для поиска в каталоге и чтения индексных дескрипторов файлов внутри. По этой причине разрешение на выполнение в каталоге часто называют разрешением на поиск.

3
11.23.2019, 00:49

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

11
11.23.2019, 00:49
  • 1
    `man [ `тоже работает. –  Community 04.09.2014, 13:21
  • 2
    Он не только проверяет, существует ли он, но и проверяет, является ли файл исполняемым. –  Tom Fenech 04.09.2014, 16:18
  • 3
    @TomFenech, ах, верно... –  psusi 04.09.2014, 21:21
  • 4
    @psusi `, если `не является встроенной оболочкой, это ключевое слово оболочки. Запустите эту команду `, введите, если `, чтобы проверить это. –  Community 04.10.2014, 02:20

Теги

Похожие вопросы