-x có nghĩa là gì nếu tuyên bố có điều kiện?


20

-xnghĩa là gì ở đây:

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

Làm thế nào tôi có thể tìm ra trang hướng dẫn này cho if?


4
tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html Đây là trang giải thích những điều cơ bản cho bash if.
Barshe De Troyer

2
Nó đánh giá là đúng nếu tập tin tồn tại và có thể thực thi được.
việc

Bạn đã thử help ifchưa
Avinash Raj

Câu trả lời:


26

Từ các man bashtrang (đặc biệt là phần GIẢI THÍCH ĐIỀU KIỆN):

   -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
Cần lưu ý, thực thi cho một thư mục có nghĩa là nó có thể được duyệt qua.
người làm giàu giàu

2
@StevenPenny Phần thứ hai của câu hỏi là "Làm thế nào tôi có thể tìm ra trang hướng dẫn này nếu?"
Sparhawk

1
@drewbenn Khi bạn gọi testbash, bạn không gọi testnhị phân. Thay vào đó, bạn đang gọi testdựng sẵn bash , có tài liệu tại help test, trong số những nơi khác. man testcó thể gây hiểu nhầm trong một số trường hợp vì lý do đó.
Chris Down

11

ifchính nó là một từ khóa shell, vì vậy bạn có thể tìm thấy thông tin về nó với help if. ifchính nó chỉ là các nhánh dựa trên việc lệnh tiếp theo trả về true (0) hay false (không phải zero). Những gì bạn thực sự muốn, mặc dù là man [hay man test, nơi [là một bí danh cho test. Câu lệnh đó thực sự đang thực thi test -x /etc/rc.local, kiểm tra xem tệp đó có tồn tại và có thể thực thi được không (hoặc có quyền tìm kiếm).


1
man [làm việc quá
Sparhawk

1
Nó không chỉ kiểm tra xem nó có tồn tại hay không, nó còn kiểm tra xem tập tin có thực thi được không.
Tom Fenech

@TomFenech, ahh, phải ...
psusi

@psusi ifkhông phải là shell dựng trong từ khóa shell. Chạy lệnh này type ifđể kiểm tra điều đó.
Avinash Raj

3

Từ info test:

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

Thực thi quyền là cần thiết trên một thư mục để có thể cd vào nó (nghĩa là để làm cho một số thư mục thư mục làm việc hiện tại của bạn).

Thực thi là cần thiết trên một thư mục để truy cập thông tin "inode" của các tập tin trong. Bạn cần điều này để tìm kiếm một thư mục để đọc các nút của các tệp trong đó. Vì lý do này, quyền thực thi trên một thư mục thường được gọi là quyền tìm kiếm thay thế.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.