2012-10-14 62 views
0

我通過Linux手冊頁找到了access命令,但不知道該命令的應用。如何使用linux訪問命令和測試命令有什麼區別

有人可以解釋這一點。

是否可以這樣使用:

access -f filename; 

如果我要檢查文件是否存在與否? 但我得到一個錯誤:

The transaction failed: no-cache, 

同樣的事情發生的:

access -w filename; 
如果我要檢查文件是否是當前用戶寫入

此外,這也可以很容易地用test命令輕鬆完成。那麼這兩個命令之間的確切區別是什麼?請詳細說明。 在此先感謝。

+0

請發佈以下命令的輸出:1)'which access'; 2)'rpm -q --whatprovides $(which access)';順便說一句,如果你看到它類似[這一個](http://linux.die.net/man/2/access)的人,這是AC/C++功能,而不是一個shell命令... –

+0

@Oded: '哪個access'不能提供'access'的路徑。但我的問題是很多linux在線書籍都將'access'識別爲linux命令。另外它可能是一個c/C++函數,但我認爲它在linux中也有一些應用程序,因爲許多其他的linux命令也只是對某些c/C++函數的系統調用。 –

回答

2

這不是Linux命令。這是C函數,可以通過unistd.h庫加載。

#include <unistd.h> 
#include <stdio.h> 

int main() { 
    int writeable; 
    writeable = access("/path/to/file", W_OK); 
    if (writeable == -1) 
     printf("Not writeable!"); 
    else 
     printf("Writeable!"; 

    return 0; 
} 

注意,它返回0上的成功:

您可以在一個C程序按如下方式使用它。 0對於C和許多其他語言都是錯誤的,但在這種情況下,這意味着true

事實上,你可以看到man access並不意味着它是一個Linux命令,因爲任何標準的Linux發行版都爲每個C庫和函數提供手冊頁。您也可以看到man malloc。您可以通過查看標題來確定它是Linux命令還是C庫手冊頁。例如man access

ACCESS(2)     Linux Programmer's Manual     ACCESS(2) 

NAME 
     access - check real user's permissions for a file 

SYNOPSIS 
     #include <unistd.h> 

     int access(const char *pathname, int mode); 

正如你可以看到,第一行指出Linux Programmer's Manual

+0

它完全清除我的查詢。非常感謝 –

相關問題