4 Làm quen với hệ thống tập tin ext3fs
5.8.2 Toán tử test và điều kiện của biểu thức
Biểu thức điều kiện, sử dụng trong toán tửtest, được xây dựng trên cơ sở kiểm tra thuộc tính tập tin, so sánh các dòngvà các so sánh số học thông thường. Biểu thức phức tạp hơn được tạo ra từ các thao tác đơn và kép sau (“những viên gạch cơ sở”):
-a file
-b file
Đúng nếu file tồn tại, và là một tập tin thiết bị khối (block device) đặc biệt.
-c file
Đúng nếufiletồn tại, và là một tập tin thiết bị ký tự (charater device) đặc biệt.
-d file
Đúng nếu filetồn tại và là một thư mục. -e file
Đúng nếu tập tin có tênfile tồn tại. -f file
Đúng nếu tập tin có tênfile tồn tại và là một tập tin thông thường. -g file
Đúng nếu tập tin có tênfile tồn tại và được đặtbit thay đổi nhóm. -h filehay-L file
Đúng nếu tập tin có tên file tồn tại và là liên kết mềm (liên kết tượng trưng).
-k file
Đúng nếu tập tin có tênfile tồn tại và được đặtbit sticky. -p file
Đúng nếu tập tin có tênfile tồn tại và là tên của một ống (kênh FIFO). -p file
Đúng nếu tập tin có tênfile tồn tại và là tên của một ống (kênh FIFO). -r file
Đúng nếu tập tin có tênfile tồn tại và có quyền đọc. -s file
Đúng nếu tập tin có tênfile tồn tại và kích thước lớn hơn không. -t fd
Đúng nếu bộ mô tả của tập tin (fd) mở và chỉ lên terminal. -u file
Đúng nếu tập tin có tênfile tồn tại và được đặtbit thay đổi người dùng. -w file
Đúng nếu tập tin có tênfile tồn tại và có quyền ghi. -x file
5.8 Shell - một ngôn ngữ lập trình 119
-0 file
Đúng, nếu tập tin có tên file và chủ sở hữu của nó là người dùng mà ID có hiệu lực chỉ đến.
-G file
Đúng, nếu tập tin có tên file tồn tại và thuộc về nhóm, xác định bởi ID nhóm có hiệu lực.
-S file
Đúng, nếu tập tin có tênfile tồn tại và là socket. -N file
Đúng, nếu tập tin có tênfiletồn tại và thay đổi từ lần được đọc cuối cùng. file1 -nt file2
Đúng, nếu tập tin file1cóthời gian sửa đổimuộn hơnfile2. file1 -ot file2
Đúng, nếu tập tinfile1“già” hơnfile1(trường hợp ngược lại của trường hợp trên).
file1 -ef file2
Đúng, nếu tập tin file1 và file2 có cùng một số thiết bị và chỉ số mô tả inode.
-o optname
Đúng, nếu tùy chọn optname của hệ vỏ được kích hoạt. Chi tiết xin xem trên trang man bash.
-z string
Đúng, nếu độ dài của chuỗistringbằng không. -n string
Đúng, nếu độ dài của chuỗi khác không. string1 == string2
Đúng, nếu hai chuỗi trùng nhau. Có thể thay hai==bằng một=. string1 !== string2
Đúng, nếu hai chuỗi không trùng nhau. string1 < string2
Đúng, nếu chuỗistring1, theo từ điển, đứng trước chuỗistring2(đối với ngôn ngữ hiện thời).
string1 > string2
Đúng, nếu chuỗi string1, theo từ điển, đứng sau chuỗi string2(đối với ngôn ngữ hiện thời).
arg1 OP arg2
Ở đây OP là một trong các phép so sánh số học: -eq (bằng), -ne (khác, không bằng), -lt (nhỏ hơn), -le (nhỏ hơn hoặc bằng), -gt (lớn hơn),-ge
(lớn hơn hoặc bằng). Ở chỗ các tham số arg1 và arg2 có thể sử dụng các số nguyên (âm hoặc dương).
Từ các biểu thức điều kiện cơ bản này có thể xây dựng các biểu thức phức tạp theo ý muốn nhờ các phép lôgíc thông thường PHỦ ĐỊNH, VÀ (cộng) và HOẶC:
!(expression)
Phép phủ định. Đúng, nếu biểu thứcsai. expression1 -a expression2
Phép cộng lôgicAND. Đúng nếucả haibiểu thức đều đúng. expression1 -o expression2
Phép lôgíc hoặcOR. Đúng nếumột trong haibiểu thức đúng.