如何使用linux access命令和test命令有什么区别

时间:2012-10-14 11:37:08

标签: linux shell unix scripting

我浏览了access命令的Linux手册页,但不确定该命令的应用。

有人可以解释一下。

可以像这样使用:

access -f filename;

如果我想检查文件是否存在? 但是我收到了一个错误:

The transaction failed: no-cache,

同样的事情发生在:

 access -w filename;

如果我想检查文件是否可由当前用户写入。

这也可以轻松地使用test命令轻松完成。那么这两个命令之间的确切区别是什么。请详细说明。 提前谢谢。

1 个答案:

答案 0 :(得分:3)

这不是Linux命令。它是C函数,可以通过unistd.h库加载。

您可以在C程序中使用它,如下所示:

#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;
}

请注意,成功时会返回00和许多其他语言的C为false,但在这种情况下,它意味着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