繁体   English   中英

bash命令检查目录是否可执行

[英]bash command to check if a directory is executable

我的目标是检查目录的执行位是否未设置。

我更改了/ tmp的权限,以便关闭执行位。

root$: chmod 666 /tmp

root$: ls -l /
    ....
    .....    
    drw-rw-rw-  12 root root  4096 Feb 29 15:17 tmp

在我的bash脚本中,我尝试了以下操作但未成功:

if [ ! -x /tmp ]; then 
......

我已经尝试了以下链接中的所有建议,但是唯一的语法方法对我也不起作用:

if [[ ! -x /tmp] ; then

检查文件是否可执行

这些可以正常使用,但不能用于任何目录,但是我不知道为什么。 有任何想法吗?

更新#2

我写了一个迷你bash脚本,只包含下面注释中建议的代码。

结果:

[root@mc/]# cat tst.sh
#!/bin/bash
if [ ! -x /tmp ]; then echo 'not executable!'; fi
exit

[root@mc/]# ./tst.sh
[root@mc/]#

您在问题中提供的所有代码都是正确的(我自己完成了测试)。 因此,有理由要说脚本中的其他错误。 如果可以,请尝试运行以下简化代码段: if [ ! -x /tmp ]; then echo 'not executable!'; fi if [ ! -x /tmp ]; then echo 'not executable!'; fi

简要说明一下,Unix系统中目录的“可执行”标志实际上并不意味着“可执行”。 这实际上是将目录标记为可搜索的方式。 虽然我不确定这是否可以解决您正在解决的问题,但这是对现有字段的有趣用法。

您也许可以使用find命令在没有可执行位的情况下选出任何目录

notex=$(find . -type d -maxdepth 1 -perm 666)

我认为这可能会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM