Исправлена ​​ли строка состояния терминала вместо командной строки?

В командной строке Unix часто используется полезная информация, но у меня слишком много вещей, на которые я хочу следить, чтобы соответствовать всем этим в одном приглашении: текущее окно экрана Gnu, текущий каталог, текущее время, имя хоста, текущая ветка git , фаза луны, вы-имя-это.

Было бы разумнее иметь фиксированную область состояния внизу (или верхней) терминала, чтобы отобразить всю эту информацию, и оставить запрос в одиночку. (Я написал «область фиксированного статуса», а не «фиксированную строку состояния», потому что я не хочу ограничивать себя одной строкой).

(Этот регион, конечно, не повлияет на нормальный интерактивный выход.)

Существует ли стандартная Unix для реализации такой фиксированной области состояния и позволит мне обновить ее через функцию precmd ?

3 Solutions collect form web for “Исправлена ​​ли строка состояния терминала вместо командной строки?”

Вы можете разделить экран по горизонтали на screen , установить одну область, размер которой вы хотите для своего региона статуса , и запустить в нем некоторое время watch -t cat ~/.status а затем заполнить содержимое этого ~/.status в вашем precmd() ,

Если ваш терминал поддерживает терминальную адресацию, сохраните курсор и верните курсор, это может сработать:

 PS1="$(tput sc;tput cup 0 0;tput rev;tput el)\u@\h \W$( tput rc;tput sgr0)\$ " 

Но будьте осторожны, что команда может быть трудно отредактировать, поскольку оболочка путается о том, где она находится во входном буфере.

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

 PS1="\[$(tput sc;tput cup 0 0;tput rev;tput el)\]\u@\h \W\[$( tput rc;tput sgr0)\]\$ " 

Если это не сработает, попробуйте отправить вывод напрямую на терминал:

 TOSL=$(tput sc;tput cup 0 0;tput rev;tput el) FROMSL=$(tput sgr0; tput rc) PS1='$(echo -n "$TOSL $LOGNAME@$HOSTNAME ${PWD/#$HOME/~}$FROMSL">/dev/tty)\$ ' 

AT & T Unix имела команду sysline , которая предоставляла строку состояния для терминалов, которые не имеют ее в аппаратном обеспечении. Возможно, теперь есть эквивалент GNU …

  • Имя хоста на терминале изменяется при подключении Интернета: почему?
  • Как сохранить / восстановить вывод терминала
  • Как включить ctrl + v в redhat?
  • поддержка tmux, TERM и 256 цветов
  • Ошибка Malloc после запуска chown -R on / usr /
  • узнать размер открытого терминала
  • Некоторые символы мусора в терминале Linux
  • Горизонтальная прокрутка в терминале
  • В чем разница между различными переменными $ TERM?
  • Выход выключения
  • Что делать, чтобы выбрать каталог, в котором компьютер считается действительным?
  • Linux и Unix - лучшая ОС в мире.