如何检查目录权限并创建新目录

培训师

我有 Perl 脚本。我检查用户是否在 pattern 中传递了一个参数-d dir_name

my $len = @ARGV;

    if($len == 2 ){
        if($ARGV[0] eq "-d"){
            $passed_name=$ARGV[1];
            return;
        }
    }

用户传递第二个参数,例如/this/is/path/dir_name现在我想检查用户是否对该目录具有权限,然后检查是否dir_name存在(如果不存在 - 我必须创建它)。

重的

现在我想检查用户是否对该目录有权限,然后检查 dir_name 是否存在(如果不存在 - 我必须创建它)。

“先检查后做”会引发竞争条件,如果两件事情同时尝试相同的事情,一个将会失败。

     Process 1           Process 2
-----------------------------------
|    Check "dir"                
|                        Check "dir"
t    mkdir "dir"
i    success             
m                        mkdir "dir"
e                        error, it already exists
|
V

相反,做它并决定如果出现错误该怎么办。

Perl 的错误检查基于C 的 errno.h要检查发生了什么类型的错误,请查看%!哈希中的错误是否为真在这种情况下,我们正在寻找EEXIST(文件存在)。

# It did not make the directory, and it wasn't because it already existed.
if( !mkdir $passed_name and !$!{EEXIST} ) {
    die "Could not create $passed_name: $!";
}
else {
    print "$passed_name was created, or it already existed.\n";
}

请注意,mkdir不会制作必要的子目录。/this/is/path/必须存在才能使/this/is/path/dir_name. 如果您希望它创建子目录,请使用make_pathfrom File::Path或者更好的是,优秀的Path::Tiny

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

猛击。递归目录创建权限检查

创建新目录、下载和复制文件时权限被拒绝。如何授予这些琐碎任务的权限?

如何创建目录并将工作目录更改为新目录?

在JSCH中创建新目录之前,存在检查目录的方法

如何创建具有777权限的目录?

如何检查目录是否存在,如果在Rust中不存在,则创建一个新目录?

如何设置目录权限

如何使用Ranger创建新的文件/目录?

在目录中创建文件之前检查目录中的写访问权限

如何在Java中检查目录的写入权限?

如何检查主目录中是否有“其他”权限

如何编写if语句以检查子目录的zip文件,如果该子目录不存在,则创建一个新目录?

使用Yarn创建目录的权限

如何创建具有足够的Postfix权限的Maildir目录?

如何编辑Adobe Media Server创建目录所使用的权限?

如何获得使用节点fs创建文件/目录的权限

如何授予使用C#创建目录的权限

目录权限如何影响目录中的文件?

如何在Java创建的Windows服务器上对所有新的子目录设置权限?

如何检查目录存在?

Python检查目录是否存在,然后根据需要创建目录并将图形保存到新目录?

在目录中没有设置x权限的情况下在目录中创建文件:如何?

如何创建与现有目录具有相同访问权限的目录?

创建检查目录大小的脚本

如何设置目录的读写权限

Ansible - 如何设置目录权限

如何查看特定目录的权限?

检查目录中是否已存在对目录的拒绝权限

检查共享目录权限-C#