如何检查给定目录是不是可访问?

Posted

技术标签:

【中文标题】如何检查给定目录是不是可访问?【英文标题】:How can I check if a given directory is accessible?如何检查给定目录是否可访问? 【发布时间】:2015-02-05 13:55:22 【问题描述】:

我目前正在编写一个脚本,它将列出目录中的所有特定文件。我需要脚本做的是验证目录是否可访问。我目前正在使用这段代码:

# variable used to get the file permissions of the given  directory 
perm=$(stat -c %a "$dir_name")

if [ "$perm" != "755" -o "$perm" != "777" ]; then
  echo ERROR: "Directory $dir_name cannot be accessed check permissions"
  echo USAGE: "ass2 <directory>"
  exit 3
fi

这将用于检查他们是否具有这些特定的八进制权限,但我想知道是否有任何其他方法可以检查目录是否可访问,如果不是则返回错误。

【问题讨论】:

【参考方案1】:

使用 Bash 条件表达式

在 Unix 和 Linux 上,几乎所有东西都是文件……包括目录!如果您不关心执行或写入权限,您可以简单地使用-r 测试检查目录是否可读。例如:

# Check if a directory is readable.
mkdir -m 000 /tmp/foo
[[ -r /tmp/foo ]]; echo $?
1

您还可以通过类似的方式检查文件是否为可遍历目录。例如:

# Check if variable is a directory with read and execute bits set.
dir_name=/tmp/bar
mkdir -m 555 "$dir_name"
if [[ -d "$dir_name" ]] && [[ -r "$dir_name" ]] && [[ -x "$dir_name" ]]; then
    : # do something with the directory
fi

您可以根据需要使条件句变得简单或复杂,但您不必为了检查权限而比较八进制或解析 stat。 Bash 条件可以直接完成这项工作。

【讨论】:

以上是关于如何检查给定目录是不是可访问?的主要内容,如果未能解决你的问题,请参考以下文章

使rabbitmq群集可公开访问

如何在资产目录中设置可访问性标签? Xcode 11

如何检查 HTML 文件是不是在给定目录中,然后使用同一目录中引用的 CSS 和 JS 文件打开该文件

如果数据库可访问,如何快速检查? (Qt、QML、C++)- Linux

访问 2010 如何检查是不是检查了是/否字段

检查给定 UUID 的节点是不是存在