2

На экране GNU в статусе можно поставить условные вещи, такие как

%?%F%{+b r}%:%{+b b}%?

% F - это тест; если значение true, оно включает форматирование жирным красным цветом% {+ br}, тогда как, если значение false, оно включает форматирование жирным синим цветом% {+ bb}.

Подобные условные выражения с% F (который проверяет фокус) - единственные, которые я видел в примерах файлов .screenrc или в руководстве по экрану.

Какие еще условные выражения можно использовать? В руководстве сказано:
"часть к следующему"%?«отображается только в том случае, если экранирование«% »внутри детали расширяется до непустой строки», что немного сбивает с толку. Могу ли я, например, изменить цвет в зависимости от времени суток или дня недели?

Спасибо

1 ответ1

2

Создайте сценарий, который выводит что-то, когда условие выполняется. Этот пример выведет пробел, когда время между 9 утра и 4:59 вечера.

#!/bin/bash
time=$(date +%H)
if (( time >= 9 && time <= 16 ))
then
    echo " "
fi

Сохраните этот скрипт. Давайте назовем это "screenbtdaytime". Также выполните chmod u+x screenbtdaytime (или +x без u чтобы сделать его универсально исполняемым).

Чтобы продемонстрировать это, используйте эту строку вместо if выше, чтобы изменение происходило каждые 10 секунд, чтобы вам не пришлось ждать весь день, чтобы увидеть эффект:

if (( $(date +%s) / 10 % 2 ))    # temporary for demo

Теперь на screen нажмите Ctrl-a и :, чтобы открыть командную строку и введите эти две команды:

backtick 1 0 1 /path/to/screenbttime
caption always "%?%{+b by}%1`%:%{+b yb} %?%C | %D, %M %d, %Y"

Вы можете использовать hardstatus вместо caption если хотите.

При изменении значения 0 на 60 в команде backtick обновления будут выполняться раз в минуту, а не по умолчанию.

Это назначает сценарий команде backtick 1 (первая "1"), которая используется в заголовке, где вы видите %1` . У вас могут быть другие команды, связанные с другими номерами, чтобы вы могли выполнять несколько действий.

Поскольку сценарий выводит пробел в течение назначенного времени, он запускает условный %? который установлен для вывода цветовых кодов для синего текста на желтом фоне. Часть "else" (%: :) выполняется, когда сценарий не выводится, а желтый цвет отображается на синем фоне. В "else" добавляется дополнительный пробел, чтобы визуально соответствовать тому, который отображается как вывод скрипта.

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