Os itens a seguir permitem personalizar o número de linhas e cols retornos de saída
export LINES=1000
export COLUMNS=1000
Eu tenho um script que executa uma série de scripts numerados 001,002,003,004 ... etc até 041 agora, será mais no futuro - e esses scripts eles mesmos usam algum controle de cursor para imprimir uma barra de progresso e outras informações de status e obtenha a largura e a altura do terminal de tput cols
e tput lines
, respectivamente.
Sem reescrever os sub-scripts, gostaria de reservar uma linha na parte inferior das informações de status geral para o script externo. Fiquei curioso para saber se havia uma maneira de definir quais respostas de linhas e colunas.
Deve haver uma maneira porque o tmux consegue isso. Eu estava pensando que pode haver uma variável de ambiente, mas a única mudança que eu posso ver que o tmux faz ao executar env é configurar o $ TERM para a tela.
Qualquer ajuda seria muito apreciada
Ler a fonte seria definitivo, mas para os que estão com medo, o manual é o lugar certo. Se não houver opção de linha de comando, o banco de dados do terminal em combinação com as variáveis de ambiente fornecerá ao seu script tudo o que for necessário:
tput
página de manual não menciona as variáveis de ambiente. tputs
na página curs_terminfo(3x)
. Procurando por esclarecimento, você pode tentar a página de manual ncurses .
LINES
e COLUMNS
. LINES
, apenas diz para ver COLUMNS
. COLUMNS
fornece mais informações: Specify the width of the screen in characters. Applications running in a windowing environment usually are able to obtain the width of the window in which they are executing. If neither the
COLUMNS
value nor the terminal's screen size is available, ncurses uses the size which may be specified in the terminfo database (i.e., thecols
capability).
Agora, para essa pergunta, seria interessante se a página de manual fosse mais direta, dizendo que tput
usa tputs
para saída e também usa setupterm
para inicialização. Ocasionalmente (quando esta informação está prontamente disponível no changelog) ninguém percebe que não está explícito no manual. Por exemplo, este item de 2002 :
+ modify setupterm() to ensure that it initializes the baudrate, for
applications such as tput (report by Frank Henigman).
Voltar ao tópico:
curs_terminfo(3x)
descreve setupterm
, observando use_env
não foi chamado , setupterm
permite que as variáveis LINES
e COLUMNS
substituam os valores do banco de dados do terminal. use_env
página de manual reitera isso, além de comentar que os valores podem ser obtidos do sistema operacional. Novamente, o changelog menciona que tput
faz isso (obtém os valores do sistema operacional), por exemplo, isto de 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).
Em resumo, a documentação existente fornece respostas para quase todas as perguntas sobre o comportamento das ncurses, mas você precisa fazer algumas leituras.