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

标签 linux permissions bit execution

我的目标是检查是否没有为目录设置执行位。

我更改了/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

check if a file is executable

这些对常规文件按预期工作,但对任何目录都不起作用,但我不知道为什么。有什么想法吗?

更新 #2

我只使用下面评论中建议的代码编写了一个迷你 bash 脚本。

结果:

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

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

最佳答案

您在问题中提供的所有代码都是正确的(我自己刚刚完成测试)。因此,按理说,脚本中的其他内容失败了。如果可以,请尝试运行这个简化的片段: 如果 [ ! -x/tmp];然后回显“不可执行!”;菲

作为一个快速的旁注,Unix 系统中目录的“可执行”标志实际上并不意味着“可执行”。这实际上是将目录标记为可搜索的方式。虽然我不确定这是否有助于解决您正在处理的问题,但这是对现有字段的有趣用法。

关于linux - bash命令检查目录是否可执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35710685/

相关文章:

mysql - mysqldump (SQL) 的位数据类型列输出

linux - Grep 文件中的错误并将它们放入新文件但不覆盖新文件

linux - 如何知道对应的根目录进行挂载

加载共享库时出现 Linux 错误 : cannot open shared object file: No such file or directory

ubuntu - 如何授予在 Ubuntu 中共享文件夹的权限?

.net - .Net3.5 和 .Net4.0 关于 WebPermission 的区别

ruby - 安装 Homebrew 错误

c - bit_test() 函数的作用是什么?

linux - 使用 shell 脚本读取 n 个文件的正确方法是什么?

c# - 为什么 Bool 数据类型的大小在 C# 中不是只有 1 位?