确认用户对当前目录具有读写权限

use*_*801 5 permissions bash scripts

我正在编写一个需要创建文件和目录的脚本,但在继续执行之前,我想运行检查以查看运行该脚本的用户是否具有读写访问权限。如果是这样,脚本应该继续,否则它应该告诉用户他们需要尝试在不同的目录中运行脚本。

Ser*_*nyy 4

通过test命令:

# doesn't  echo OK, because no read-write permissions
$ [ -r /proc/28127/task/28189/fd ] && [ -w /proc/28127/task/28189/fd  ] && echo "OK" 
# echoes OK, because my user has read-write permissions to the directory
$ [ -r $HOME ] && [ -w $HOME  ] && echo "OK"                                                          
OK
Run Code Online (Sandbox Code Playgroud)

可以将其放入函数中并将其存储到脚本中~/.bashrc或在脚本中使用:

check_dir() {
    [ -r "$1" ] && [ -w "$1" ] && echo "OK" 
} 
Run Code Online (Sandbox Code Playgroud)

并按如下方式使用:

$ check_dir $HOME
OK
Run Code Online (Sandbox Code Playgroud)

通过find命令:

# Doesn't return directory name because I don't have read/write permissions
$ find /proc/28127/task/28189/fd -maxdepth 0 -readable -writable                                      

# Returns  directory name, because I can write/read there
$ find $HOME  -maxdepth 0 -readable -writable                                                         
/home/xieerq
Run Code Online (Sandbox Code Playgroud)