如何测试权限为 000 的文件是否存在



由于我不知道的某种原因,我有一个权限设置为"000"的文件。

我想chmod u+r它,因为我需要压缩它的整个文件夹。对于 000,zip 警告读取此文件时出现问题。

我想测试这个文件的存在,因为不是每次我都把它放到文件夹中。

但我验证了使用以下结果是布尔值错误

if [ -f $file_path ]; then 
...

同样,-e 开关返回假。

如何测试来自 bash 脚本的文件是否存在?

您可以使用

以下语句在目录中搜索具有000权限的文件:

find /tmp  -perm 000

/tmp将是您的目录。

只需按照您的建议进行操作:

$> touch none_foo
$> chmod 000 none_foo
$> if [ -f "none_foo" ]; then printf "yesn"; else printf "non"; fi
yes

但是,如果封闭文件夹有 000,那么您注定要失败 ;-)

示例(从上述状态继续):

$> mkdir disclosed
$> mv none_foo disclosed/
# still ok:
$> if [ -f "disclosed/none_foo" ]; then printf "yesn"; else printf "non"; fi
yes
# now a non-disclosure:
$> chmod 000 disclosed
$> if [ -f "disclosed/none_foo" ]; then printf "yesn"; else printf "non"; fi
no

因此,对于文件路径中禁止"输入"的文件夹,您必须先更正它。无论如何(正如另一位评论者已经建议的那样):在 shell 中的文字和变量周围使用引号......

正如@JeremyJStarcher在他的回答中发布的那样,您还可以使用:

$> find ./ -perm 000
.//disclosed
find: .//disclosed: Permission denied

但是如您所见,文件夹陷阱将由具有足够权限的用户缓解,以将 000 增加到更易于访问的内容......

相关内容

  • 没有找到相关文章

最新更新