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