linux判斷是否是文件
❶ linux shell 指令 諸如-d, -f, -e之類的判斷表達式
在Linux shell中,d, f, e等判斷表達式的含義如下:
e:用於檢測文件是否存在。如果指定的文件存在,則條件為真。
d:檢查是否為目錄。如果指定的路徑存在且是一個目錄,則條件為真。
f:確認是否為普通文件。如果指定的路徑存在且是一個普通文件,則條件為真。
此外,還有其他一些常用的判斷表達式:
L:判斷是否為符號鏈接。如果指定的路徑存在且是一個符號鏈接,則條件為真。
r:檢查文件是否具有可讀許可權。如果指定的文件存在且對當前用戶可讀,則條件為真。
w:檢查文件是否具有可寫許可權。如果指定的文件存在且對當前用戶可寫,則條件為真。
x:檢查文件是否具有可執行許可權。如果指定的文件存在且對當前用戶可執行,則條件為真。
nt:用於比較文件或目錄的修改時間。如果左邊的文件或目錄比右邊的更新,則條件為真。
ot:與nt相反。如果左邊的文件或目錄比右邊的舊,則條件為真。
z:用於檢查字元串長度是否為零。如果指定的字元串長度為0,則條件為真。
n:與z相反。如果指定的字元串長度不為0,則條件為真。
= 和 !=:用於字元串的比較。=表示字元串相等,!=表示字元串不相等。
eq, ne, lt, le, gt, ge:用於算術比較。分別表示等於、不等於、小於、小於等於、大於和大於等於。
這些判斷表達式在日常的系統管理、腳本編寫以及自動化任務中發揮著關鍵作用,極大地提高了系統管理的效率和便捷性。
❷ 如何判斷linux是文件還是目錄
如果是腳本可以通過ls -l命令來判斷,因為目錄第一個字母是d。
如果是編程可以參考以下內容。
man stat;
stat.h中有判斷是什麼文件的宏:
S _ I S R E G ( ) 普通文件
S _ I S D I R ( ) 目錄文件
S _ I S C H R ( ) 字元特殊文件
S _ I S B L K ( ) 塊特殊文件
S _ I S F I F O ( ) 管道或F I F O
S _ I S L N K ( ) 符號連接( P O S I X . 1或S V R 4無此類型)
S _ I S S O C K ( ) 套接字(P O S I X . 1或S V R 4無此類型)
具體可以參照APUE文件目錄相關章節。
下面給出一個具體的例子:
#include <stdio.h>
#include <sys/stat.h>
int main(int argc, char* argv[])
{
struct stat buf;
if(argc < 2)
{
printf("Need Parameter");
return -1;
}
if(lstat(argv[1], &buf) < 0)
{
printf("lstat error for %s\r\n", argv[1]);
return;
}
if(S_ISDIR(buf.st_mode))
printf("%s Is DIR\r\n", argv[1]);
else if(S_ISREG(buf.st_mode))
printf("%s Is FILE\r\n", argv[1]);
return 0;
}