Como definir cols e linhas para um subprocesso

3

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

    
por donatJ 19.12.2012 / 17:37

2 respostas

2

Os itens a seguir permitem personalizar o número de linhas e cols retornos de saída

export LINES=1000
export COLUMNS=1000
    
por 19.12.2012 / 21:53
0

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:

Procurando por esclarecimento, você pode tentar a página de manual ncurses .

  • Na seção Ambiente , lista LINES e COLUMNS .
  • Em 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., the cols 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:

  • A seção Inicialização de curs_terminfo(3x) descreve setupterm , observando
  • no caso normal, onde use_env não foi chamado , setupterm permite que as variáveis LINES e COLUMNS substituam os valores do banco de dados do terminal.
  • A 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.

    
por 28.03.2016 / 11:13