1

Примечание: я прочитал другой вопрос, но он мне нужен по-другому.

Я работаю на своем 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\$ '

1 ответ1

3

С риском констатировать очевидное, почему бы вам просто:

lsof /broacast/storage/path/* | grep -q broadcast/storage/path ; echo $?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .