Как установить Cols и Lines для подпроцесса

У меня есть скрипт, который запускает серию сценариев с номером 001,002,003,004 … и т. Д. До 041 прямо сейчас, будет больше в будущем – и эти скрипты сами используют некоторый элемент управления курсором для печати индикатора выполнения и другой информации о статусе и получения ширины и высоты терминала от tput cols и tput lines соответственно.

Не переписывая суб-скрипты, я хотел бы зарезервировать одну строку внизу для общей информации о статусе внешнего скрипта. Мне было любопытно, есть ли способ установить, какие ответы tput для строк и столбцов.

Должен быть способ, потому что tmux достигает его. Я думал, что может быть переменная окружения, но единственное изменение, которое я вижу, что tmux делает при запуске env, задает значение $ TERM для отображения.

Любая помощь будет принята с благодарностью

  • Какие терминальные эмуляторы поддерживают режим управления tmux?
  • Почему Bash readline иногда пытается проанализировать второе слово команды из контекста?
  • «Наложить» подсказку оболочки поверх сеанса терминала?
  • Как отправить ключ для выхода из режима прокрутки в tmux?
  • Отправить переменную через привязку tmux
  • tmux: создание нового сплит-окна не работает
  • Эффективно скопировать вставку (kill / yanking) с emacs, запущенным в tmux на Mac OS X
  • tmux: переназначение клавиш на панель слева / справа / сверху / вниз
  • 2 Solutions collect form web for “Как установить Cols и Lines для подпроцесса”

    Ниже вы можете настроить количество строк и столбцов.

     export LINES=1000 export COLUMNS=1000 

    Чтение источника было бы окончательным, но для малодушного, руководство – это место, куда нужно идти. Если параметр командной строки отсутствует, база данных терминала в сочетании с переменными среды предоставит сценарию все, что может потребоваться:

    • На странице руководства tput не упоминаются переменные среды.
    • Но в разделе « См. Раздел» он ссылается на curs_termcap (3x) , руководство для интерфейса termcap (функции).
    • На этой странице важны функции форматирования , указывающие на tputs на curs_terminfo(3x) .
    • Опять же (см. Функции вывода ) нет явного упоминания переменных среды.

    В поисках просветления вы можете попробовать страницу руководства ncurses .

    • В разделе « Окружающая среда» перечислены LINES и COLUMNS .
    • В LINES он просто говорит, чтобы видеть COLUMNS .
    • COLUMNS дает дополнительную информацию:

    Укажите ширину экрана в символах. Приложения, запущенные в среде окон, обычно имеют возможность получить ширину окна, в котором они выполняются. Если ни значение COLUMNS ни размер экрана терминала не доступны, ncurses использует размер, который может быть указан в базе данных terminfo (то есть, возможности cols ).

    Теперь, по этому вопросу, было бы неплохо, если бы страница руководства была более прямой, говоря, что tput использует tput для вывода, а также использует setupterm для инициализации. Иногда (когда эта информация легко доступна в журнале изменений) никто не замечает, что это не указано в руководстве. Например, этот элемент с 2002 года :

      + modify setupterm() to ensure that it initializes the baudrate, for applications such as tput (report by Frank Henigman). 

    Вернуться к теме:

    • Раздел инициализации curs_terminfo(3x) описывает setupterm , отмечая
    • в нормальном случае, когда use_env не был вызван, setupterm позволяет переменным LINES и COLUMNS переопределять значения базы данных терминала.
    • use_env руководства use_env повторяет это, а также комментируя, что значения могут быть получены из операционной системы.
    • Опять же, в changelog упоминается, что tput делает это (получает значения из операционной системы), например, это с 2007 года :

       + restore a call to obtain screen-size in _nc_setupterm(), which is used in tput and other non-screen applications via setupterm() (Debian #433357, reported by Florent Bayle, Christian Ohm, cf: 20070310). 

    Таким образом, существующая документация дает ответы на почти все вопросы о поведении ncurses, но вы должны сделать некоторое чтение.

    Interesting Posts

    Запуск приложения без GUI после подключения к сети

    Лучшие загрузочные диски usb для Linux?

    CentOs eth2 не начнет перезагрузку

    Как изменить мою ассоциацию файлов / url на всех моих DM / WM без использования графического интерфейса?

    LVM Snapshot без копирования на запись

    Fedora, CentOS, Ubuntu Linux – это Linux с открытым исходным кодом, но как насчет того, когда я хочу сделать свой собственный бренд?

    Linux-рейд собрал «сам» с неисправным приводом. Зачем?

    Выполнять скрипты без их расшифровки

    Как написать isolinux в файловую систему ext4

    разрыв с программой, запущенной в интерактивном сеансе в окне экрана

    Преобразование старых / домашних файлов из ext3 в ext4

    добавьте пробел 5 раз в начале каждой строки в текстовом файле

    Linux mint wifi устройство не входит в список rfkill

    несколько туннелей openvpn на одном и том же порту

    Как получить простые скрипты, которые, как представляется, нуждаются в корневых привилегиях для запуска через пользователя www-data?

    Linux и Unix - лучшая ОС в мире.