デフォルトでspecificディレクトリの下に作成されたすべてのファイルに実行許可を与える方法があるかどうかを知りたいです。
すなわち、
ディレクトリfooscripts
の下にfoo.sh
というファイルを作成すると、デフォルトで実行許可が必要になります。ただし、fooscripts
の外部に同じファイルを作成する場合は、通常どおりです。
前述のように、inotify-tools
(inotifywait
)を使用して、たとえば以下のスクリプトによって特定のディレクトリの変更を監視し、その後新しいファイルを再帰的に実行可能に設定できます。
スクリプトは、inotifywait
-コマンドを使用します。これは、-e
-オプションで設定された特定のeventsによってトリガーされます。幸いなことに、このコマンドは複数のイベントタイプと組み合わせて使用できます。
ディレクトリ内のファイルを実行可能にするため、スクリプトでは2つのイベントが設定されます。
-e move
ファイルに気づくmovedディレクトリに、そして
-e create
これにより、ディレクトリ内に新しいファイル作成済みが表示されます。
さらに、オプション:
-m -r
コマンドを無期限に(「モニター」)実行し、ディレクトリ内で再帰的に実行します。
--format '%w%f'
イベントを引き起こしたディレクトリ(ファイルへのパス、%w
)とファイル名(%f
)を出力します。
inotifywait
のオプションの詳細は here で見つけることができます。または、いつものように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
はchanges(イベント)に作用することに注意してください。これは、追加または作成されたファイルbeforeが実行されたスクリプトは影響を受けないことを意味します。また、ターゲットディレクトリ内にある間に手動で故意にファイルを実行可能に設定した場合、notが実行可能ファイルを再設定することもありません。
いいえ。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