由于某些原因我不知道,我的文件权限设置为'000'。
我想chmod u+r
,因为我需要压缩整个文件夹。并且有了000,zip会警告读取此文件时出现问题。
我想测试这个文件的存在,因为不是每次我都进入该文件夹。
但我确认使用以下结果是布尔值假
if [ -f $file_path ]; then
...
-e开关也返回false。
如何测试bash脚本中是否存在文件?
答案 0 :(得分:2)
您可以使用以下语句在目录中搜索具有000
权限的文件:
find /tmp -perm 000
其中/tmp
将是您的目录。
答案 1 :(得分:0)
按照你的建议做:
$> touch none_foo
$> chmod 000 none_foo
$> if [ -f "none_foo" ]; then printf "yes\n"; else printf "no\n"; fi
yes
但是如果封闭文件夹有000,你注定; - )
样品(从上述状态继续):
$> mkdir disclosed
$> mv none_foo disclosed/
# still ok:
$> if [ -f "disclosed/none_foo" ]; then printf "yes\n"; else printf "no\n"; fi
yes
# now a non-disclosure:
$> chmod 000 disclosed
$> if [ -f "disclosed/none_foo" ]; then printf "yes\n"; else printf "no\n"; fi
no
因此文件路径中的文件夹禁止"进入"你必须先纠正它。 无论如何(正如alreday建议的另一位评论者所说):在shell中使用文字和变量的引号......
正如@JeremyJStarcher在回答中所说,你也可以使用:
$> find ./ -perm 000
.//disclosed
find: .//disclosed: Permission denied
但正如您所见,具有足够权限的用户可以减轻文件夹陷阱,以便将000增加到更易于访问的内容......