co oznacza -x w instrukcji warunkowej?

20

Co to -xznaczy tutaj:

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

Jak mogę znaleźć tę stronę podręcznika if?

taymindis Woon
źródło
4
tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html To jest strona wyjaśniająca podstawy bash jeśli.
Christophe De Troyer
2
Sprawdza, czy plik istnieje i jest wykonywalny.
jobin
Próbowałeś help if?
Avinash Raj,

Odpowiedzi:

26

Ze man bashstron (szczególnie sekcja WYRAŻENIA WARUNKOWE):

   -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
źródło
3
Należy zauważyć, że plik wykonywalny dla katalogu oznacza, że ​​można go przechodzić.
bogate przypomnienie
2
@StevenPenny Druga część pytania brzmiała: „Jak mogę znaleźć tę instrukcję, jeśli?”
Sparhawk
1
@drewbenn Kiedy wywołujesz testbash, nie wywołujesz pliku testbinarnego. Zamiast tego testwywołujesz wbudowane bash , które ma dokumentację help testmiędzy innymi. man testz tego powodu może wprowadzać w błąd w niektórych przypadkach.
Chris Down,
11

ifsamo w sobie jest słowem kluczowym powłoki, więc możesz znaleźć informacje na jego temat help if. ifsam rozgałęzia się tylko na podstawie tego, czy następne polecenie zwraca true (0) czy false (nie zero). Tym, czego naprawdę chcesz, jest man [lub man test, gdzie [jest alias test. Ta instrukcja faktycznie wykonuje się test -x /etc/rc.local, która sprawdza, czy plik istnieje i jest wykonywalny (lub ma uprawnienia do wyszukiwania).

psusi
źródło
1
man [też działa.
Sparhawk
1
Nie tylko sprawdza, czy istnieje, ale także sprawdza, czy plik jest wykonywalny.
Tom Fenech,
@TomFenech, ahh, racja ...
psusi
@psusi ifnie jest wbudowaną powłoką, to słowo kluczowe powłoki. Uruchom to polecenie, type ifaby to sprawdzić.
Avinash Raj
3

Od info test:

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

Wymagane jest zezwolenie na wykonanie katalogu, aby móc w nim cd (tzn. Aby jakiś katalog stał się bieżącym katalogiem roboczym).

Aby uzyskać dostęp do informacji o „i-węzłach” plików w katalogu, konieczne jest wykonanie. Potrzebujesz tego do przeszukiwania katalogu w celu odczytania i-węzłów plików w nim zawartych. Z tego powodu uprawnienie do wykonywania katalogu jest często nazywane zamiast tego uprawnieniem do wyszukiwania.

girardengo
źródło