由于我不知道的某种原因,我有一个权限设置为"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 增加到更易于访问的内容......