Предотвратите цвета повреждения часов

Вы пытались делать это от YaST->, Загрузчик-> Выбирает Image и затем заполняет все другие опции как Ваше изображение ядра и т.д., и Вы сделаны :)

5
17.10.2014, 18:58
3 ответа

Я встретился с 'крадущими цвет' проблемами с часами, это - потому что часы используют простой выходной стиль/bin/sh, который ударяет любой цвет, псевдонимы, ярлыки... целая хижина!

Таким образом, я починил, это, помещенное в мой .bashrc, позволяет мне использовать все свои собственные псевдонимы, ярлыки и этажерку:

Usage:
    watcher 20 'somecommand | apipe | grep'

Число является задержкой между обновлениями в секундах, команда может включать что-либо, что можно заключить в кавычки.

###### 'watch' workalike, lets me use my aliases and such
function watcher() { WATCHERTIME=$1 ; WATCHERFILE=/tmp/watcher$$ ; shift ; while true ; do WATCHERHEIGHT=$(($LINES - 5)) ; ( eval $* ) | tail -n ${WATCHERHEIGHT} > ${WATCHERFILE} 2>/dev/null; clear ; /bin/echo -n "Every ${WATCHERTIME} seconds - " ; date ; /bin/echo ; cat ${WATCHERFILE} ; \rm -f ${WATCHERFILE} ; /bin/echo ; /bin/echo "==" ; sleep ${WATCHERTIME} ; done ; }

Сломать его:

function watcher()
{ 
  WATCHERTIME=$1
  WATCHERFILE=/tmp/watcher$$
  shift
  while true; do
    WATCHERHEIGHT=$(($LINES - 5))
    ( eval $* ) | tail -n ${WATCHERHEIGHT} > ${WATCHERFILE} 2>/dev/null
    clear
    /bin/echo -n "Every ${WATCHERTIME} seconds - "
    date
    /bin/echo
    cat ${WATCHERFILE}
    \rm -f ${WATCHERFILE}
    /bin/echo
    /bin/echo "=="
    sleep ${WATCHERTIME}
  done
}

Это определяет текущую экранную высоту в строках, вычитает достаточно для ее собственного вывода, затем неоднократно выполняет данную команду, затем очищает экран, отображает вывод и ожидает следующего цикла. Это отображает короткое '==' внизу, чтобы показать, что это то, где законченный вывод. Sometime полезно знать это.

Я сделал это этот путь, таким образом, была самая маленькая задержка при отображении. если Вы не получаете вывод и затем отображаетесь, Вы получаете длинную паузу, то вывод... неприглядный.

Так как это не ударяет цвета, Вы получаете все, что Вы привыкли получать.Приятного отдыха!

7
27.01.2020, 20:32
  • 1
    , который я играл вокруг с этим и заставил ее работать, как я хотел. Я закончил тем, что изменился tail кому: head и измененный эта строка следующим образом: WATCHERHEIGHT=$(($(tput lines) - 3)) Это будет автомасштабировать строки к тому, что показывает текущий терминал. Однако, Вы принесли мне большую часть пути там. Благодарит тонну! –  Ken Oh 19.07.2012, 02:58
  • 2
    , довольный, это работает на Вас, хвост/голова всегда зависит от того, что Вы просматриваете, и $LINES должен сделать то же как tput строки..., но, пока это работает.Не за что! –  lornix 19.07.2012, 03:49
  • 3
    10/10 лучше всего функционирует когда-либо. –  Raynos 09.08.2016, 06:25

Проблема - это watch Проклятия использования и curses представьте работу функций вывода в виде строки над виртуальным кадровым буфером с отдельными плоскостями для символов и их атрибутов/цветов. Строки отправляются в кадровый буфер как есть без терминальной направляющей интерпретации. Для охраны против избиения терминального состояния Проклятия игнорируют ESC (среди прочего), таким образом, watch не сделает цвета по умолчанию.

Можно зафиксировать это путем следования мудрому совету или jw013 или lornix: любое использование watch --color или перенесите свой сценарий во что-то как a while true; do clear; $SCRIPT; sleep 2; done цикл.

6
27.01.2020, 20:32

Вам, вероятно, нужно --color опция к watch.

5
27.01.2020, 20:32
  • 1
    D'oh... это похоже --color не находится в RHEL 4's watch. –  Ken Oh 30.06.2012, 02:37

Теги

Похожие вопросы