我想知道是否有任何方法可以默认为在特定目录下创建的所有文件提供执行权限。
IE,
如果我foo.sh
在目录下创建一个文件fooscripts
,它应该默认具有执行权限。但是如果我在外面创建相同的文件fooscripts
,它应该像往常一样。
我想知道是否有任何方法可以默认为在特定目录下创建的所有文件提供执行权限。
IE,
如果我foo.sh
在目录下创建一个文件fooscripts
,它应该默认具有执行权限。但是如果我在外面创建相同的文件fooscripts
,它应该像往常一样。
使用 inotifywait
如前所述,您可以使用
inotify-tools
(inotifywait
) 监视特定目录的更改,例如通过下面的脚本,然后以递归方式设置新文件可执行文件。该脚本使用
inotifywait
-command,该命令由-option设置的特定事件触发。-e
幸运的是,该命令可以与多种事件类型结合使用。由于您希望目录中的文件是可执行的,因此在脚本中设置了两个事件:
这将注意到文件移动到目录中,并且
这将注意到目录内创建的新文件。
此外,选项:
是使命令无限期地运行(“监视器”)并在目录中递归地运行,同时:
输出目录(文件的路径,
%w
)加上%f
导致事件的文件名()。更多关于选项的信息
inotifywait
可以在这里找到,或者像往常一样,在man inotifywait
剧本
如何使用
您可能必须先安装
inotify-tools
:将脚本复制到一个空文件中,另存为
set_executable.sh
在脚本的头部,设置目标文件夹的路径:
...并从终端测试运行脚本。
笔记
请注意,
notifywait
作用于更改(事件)。这意味着在脚本运行之前添加或创建的文件不会受到影响。如果您在目标目录中手动故意将它们设置为不可执行,它也不会重置可执行文件。不,您可以使用它
inotify
来查看目录和chmod
新文件。以下是如何了解
inotify
: