Примечание: я прочитал другой вопрос, но он мне нужен по-другому.
Я работаю на своем NAS, который также работает как устройство хранения для моего PVR. Теперь я хочу изменить приглашение оболочки на NAS всякий раз, когда PVR записывает в него широковещательную рассылку (считайте, что это «не делайте ничего продолжительного, пока широковещательная запись записывается» - предупреждение). Моя первая идея состояла в том, чтобы поставить перед подсказкой красный REC
.
Как указано в другом вопросе, я могу использовать для этого lsof
:
# lsof /broadcast/storage/path/broadcast.ts; echo $?
<output of lsof>
0
# lsof /broadcast/storage/path/doesnt-exist.ts; echo $?
1
#
Тем не менее, lsof
не работает для меня, если я использую
# lsof /broadcast/storage/path/*; echo $?
<output of lsof>
1
#
Логика выглядит так: он возвращает 1, когда находит файл, который не используется. Однако, для меня это должно возвратить 0, когда хотя бы один файл используется.
Я знаю, что могу зацикливаться на файлах и останавливаться, когда первый файл возвращает 0, но так как я хочу, чтобы это было в приглашении, я не знаю, как сделать это однострочным.
РЕДАКТИРОВАТЬ:
Благодаря тинку, я переработал свою идею, и моя подсказка теперь выглядит следующим образом (обратите внимание, что мне нужно было заставить подстановочный знак работать, так как lsof /.../*
будет добавлен в PS1):
export PS1='`find /broacast/storage/path/ -name "*.sc" -print0 | \
xargs -0 lsof | \
grep -q COMMAND && echo -e "\033[0;31m[REC]-\033[0;37m"`\u@\h:\w\$ '