Saída de uma string no canto inferior direito do terminal

5

Como faço para produzir uma string no canto inferior direito do terminal?

    
por PSkocik 23.11.2015 / 16:06

2 respostas

6
string=whatever
stty size | {
  read y x
  tput sc # save cursor position
  tput cup "$((y - 1))" "$((x - ${#string}))" # position cursor
  printf %s "$string"
  tput rc # restore cursor.
}

Isso assume que todos os caracteres em $string são uma célula ampla (e que $string não contém caracteres de controle (como nova linha, tabulação ...)).

Se a sua string puder conter caracteres de largura zero (como caracteres combinados) ou de largura dupla, você poderá usar o especificador de formato printf %Ls do ksh93 que formata formatos baseados ou largura de caractere:

string='whatéver'
# aka string=$'\uFF57\uFF48\uFF41\uFF54\uFF45\u0301\uFF56\uFF45\uFF52'
stty size | {
  read y x
  tput sc # save cursor position
  tput cup "$((y - 1))" 0 # position cursor
  printf "%${x}Ls" "$string"
  tput rc # restore cursor.
}

Isso apagaria a parte inicial da última linha.

    
por 23.11.2015 / 16:14
4
tput cup $(tput lines) $[$(tput cols)-16]
printf "string"

ou

tput cup $[$(tput lines)-1] $[$(tput cols)-16]
printf "string"

em que 16 é o tamanho que você deseja reservar para a string.

    
por 23.11.2015 / 16:15

Tags