Вы могли использовать механизм в ядре inotify
для контроля файлов, к которым получают доступ.
Сначала необходимо проверить если inotify
включен в ядре:
pbm@tauri ~ $ zcat /proc/config.gz | grep CONFIG_INOTIFY
CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y
Следующая вещь сделать установить inotify-tools
. Инструкции для различных дистрибутивов, которые Вы могли найти на уровне страницы проекта - это должно быть в репозиториях всех основных дистрибутивов.
После этого inotify готов работать:
inotifywait /dirs/to/watch -mrq
(m
= не выходите после одного события, r
= рекурсивный, q
= тихий)
Например - вывод после ls /home/pbm
pbm@tauri ~ $ inotifywait /bin /home/pbm -mq
/bin/ OPEN ls
/bin/ ACCESS ls
/bin/ ACCESS ls
/home/pbm/ OPEN,ISDIR
/home/pbm/ CLOSE_NOWRITE,CLOSE,ISDIR
/bin/ CLOSE_NOWRITE,CLOSE ls
Важная вещь состоит в том, чтобы правильно установить каталоги для часов:
/
рекурсивно - существует большое чтение-запись к /dev
и /proc
В /proc/sys/fs/inotify/max_user_watches
существует параметр конфигурации, который показывает, за сколько файлов можно наблюдать одновременно. Значение по умолчанию (для хинду) о не настолько высоко, поэтому при установке наблюдателя на /home/
Вы могли превысить предел. Вы могли увеличить предел при помощи echo
(корневой необходимый доступ).
echo 524288 > /proc/sys/fs/inotify/max_user_watches
Но перед этим необходимо читать о последствиях того изменения.
Опции, которые могли быть интересными для Вас:
-d
= режим демона -o file
= вывод в файл--format
= указанный пользователями формат, больше информации в man inotifywait
-e EVENT
= за развитием какое событие должно следиться (например, access
, modify
, и т.д., больше информации в man
)Zsh пытается быть умным в выборе завершений, но это не достаточно умно, чтобы знать это после doctrine --configuration=
, это должно завершить имя файла. Bash или достаточно умен для парсинга этой команды правильно, или слишком глупый для завершения чего-либо кроме имени файла здесь.
Можно записать функцию завершения для doctrine
. Это немного совершенствуется, хотя — функции завершения имеют тенденцию быть немного тайными. Можно найти легче записать completer использование альтернативной, более старой, более простой, но менее мощной системы завершения zsh, compctl
(зарегистрированный в zshcompctl
страница справочника).
Если у Вас есть функция завершения удара для doctrine
, Вы смогли заставлять zsh читать его включением autoload bashcompinit; bashcompinit
в Вашем ~/.zshrc
. Посмотрите Переключение с удара на zsh Wiki.
Можно найти полезным связать несколько ключей к _bash_complete-word
. Этот виджет (интерактивная команда) выполняет завершение нескольких встроенных типов, в зависимости от последнего знака в сочетании клавиш, которое вызвало виджет: /
для каталогов, $
для названий параметра, и т.д. Например, включать bindkey '^X/' _bash_complete-word
в Вашем ~/.zshrc
, и нажмите Ctrl+X / для завершения имени файла в любом контексте (Вы, возможно, должны были бы временно вставить пробел перед именем файла, если имени файла предшествует пунктуация, которая не является разделителем слов в оболочке).
bash
значения по умолчанию поведения к идентификации--anything=
как префикс к потенциальному имени файла, если это не знает о некотором другом завершении, которое могло пойти туда. – BRPocock 15.12.2011, 00:02