默认对特定目录下创建的所有文件具有执行权限

默认对特定目录下创建的所有文件具有执行权限

我想知道是否有任何方法可以为在具体的默认目录。

IE,

foo.sh如果我在目录下创建一个文件fooscripts,默认情况下它应该具有执行权限。但如果我在外面创建相同的文件,fooscripts它应该像往常一样。

答案1

使用 inotifywait

如上所述,您可以使用inotify-toolsinotifywait)来监视特定目录的变化,例如通过下面的脚本,然后以递归方式设置新文件可执行。

该脚本使用inotifywait-command,由特定事件,由 -option 设置-e。幸运的是,该命令可以与多种事件类型结合使用。
由于您希望目录中的文件可执行,因此在脚本中设置了两个事件:

-e move

将会注意到文件已移动进入目录,然后

-e create

它将注意到新文件创建在目录内。

此外,还有以下选项:

-m -r 

是使命令在目录中无限期地运行(“监视”)和递归运行,同时:

--format '%w%f'

输出目录(文件路径, )加上导致事件的%w文件名( )。%f


更多关于选项的信息inotifywait可以找到这里或一如既往地man inotifywait

剧本

#!/bin/sh
# you might want to change the directory below into the targeted directory
DIR="/home/jacob/Bureaublad/test123"
inotifywait -m -r -e move -e create --format '%w%f' "$DIR" | while read f

do
  chmod +x "$f"
done

如何使用

  1. 您可能必须inotify-tools先安装:

    sudo apt-get install inotify-tools
    
  2. 将脚本复制到一个空文件中,另存为set_executable.sh

  3. 在脚本的头部,设置目标文件夹的路径:

    # change the directory below into the targeted directory
    DIR="/home/jacob/Bureaublad/test123"
    

    ...并从终端测试运行脚本。

  4. 如果一切正常,请将脚本添加到启动应用程序:Dash > 启动应用程序 > 添加。

笔记

注意notifywait作用于变化(事件)。这意味着添加或创建的文件脚本运行不会受到影响。如果您手动并有意设置它们,它也不会重置文件的可执行文件不是当它们位于目标目录中时,它们可执行。

答案2

不。您可以用它inotify来查看目录和chmod新文件。

了解方法如下inotify

man -k inotify
for i in $( man -k inotify | awk '{ print $1 }' ) ; do 
    man $i 
    read -p "Print?: " ans 
    if [[ "x$ans" = "xy" ]] ; then 
        man -t $i | lpr -J $i 
    fi 
done
# sr is from surfraw, Shell Users Revoultionary Front Rage Against the Web
sr google inotify

相关内容