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

我想知道是否有任何方法可以默认为在特定目录下创建的所有文件提供执行权限。

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

使用inotifywait

如上所述,您可以使用inotify-toolsinotifywait )来查看特定目录以进行更改,例如通过下面的脚本,然后递归地设置可执行的新文件。

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

 -e move 

它会注意到移动到目录中的文件,以及

 -e create 

这将注意到目录中创建的新文件。

此外,选项:

 -m -r 

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

 --format '%w%f' 

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

有关inotifywait选项的更多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. 如果一切正常,请将脚本添加到“启动应用程序:虚拟”>“启动应用程序”>“添加”。

注意

请注意, notifywait更改 (事件)起作用。 这意味着在脚本运行之前添加或创建的文件不会受到影响。 如果您手动并故意将它们设置为不可执行文件,它们也在目标目录中,它也不会重置文件的可执行文件。

inotify 。您可以使用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