Имя скрипта не считается частью позиционных параметров. Это означает, что
somescript arg1 arg2
установит $1
на arg1
и $2
на arg2
, а $#
будет 2
.
Имя скрипта будет доступно в $0
, но $0
отличается тем, что он не включен в массив $@
, а $#
является длиной (количество элементов )из $@
.
Программа inotifywait
предназначена для эффективного мониторинга файлов, таких как то, что вы ищете. Вот доказательство концепции:
$ inotifywait -qrm -e open -e access --format "%e %f" tmp/
OPEN hello
OPEN,ISDIR
ACCESS,ISDIR
OPEN hello
Вывод происходит при запуске touch tmp/hello
, затем less tmp/h<TAB>
(, вкладка -завершается до less tmp/hello
), а затем Enter, чтобы открыть файл с помощью Less.
При общесистемном запуске вы, вероятно, захотите исключить такие места, как /proc
и /sys
. Вы также можете передать его через grep -vE '^(OPEN|ACCESS),ISDIR$
, чтобы исключить каталоги. Наконец, вам также следует обратить внимание на предостережение относительно рекурсивного мониторинга :
Warning: If you use this option while watching the root directory of a large tree, it may take quite a while until all inotify watches are established, and events will not be received in this time. Also, since one inotify watch will be established per subdirectory, it is possible that the maximum amount of inotify watches per user will be reached. The default maximum is 8192; it can be increased by writing to /proc/sys/fs/inotify/max_user_watches.