默认情况下对特定目录下创建的所有文件的执行权限
我想知道是否有任何方法可以默认为在特定目录下创建的所有文件提供执行权限。
即
如果我在foo.sh
目录下创建一个文件fooscripts
,默认情况下应该具有执行权限。 但是,如果我在fooscripts
之外创建相同的文件,它应该像往常一样。
使用inotifywait
如上所述,您可以使用inotify-tools
( inotifywait
)来查看特定目录以进行更改,例如通过下面的脚本,然后递归地设置可执行的新文件。
该脚本使用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
如何使用
-
您可能必须先安装
inotify-tools
:sudo apt-get install inotify-tools
-
将脚本复制到空文件中,将其另存为
set_executable.sh
-
在脚本的头部,设置目标文件夹的路径:
# change the directory below into the targeted directory DIR="/home/jacob/Bureaublad/test123"
…并从终端测试运行脚本。
- 如果一切正常,请将脚本添加到“启动应用程序:虚拟”>“启动应用程序”>“添加”。
注意
请注意, 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