
Lo configuré .bashrc
para mostrar un mensaje largo si el terminal tiene al menos 80 caracteres de ancho. De lo contrario, muestra un aviso más pequeño y degradado.
Utilizo una if
declaración para lograr esto:
dp_smaller_than=80
if [ $COLUMNS -lt $dp_smaller_than ]
then
PROMPT_COMMAND="degr_prompt"
else
PROMPT_COMMAND="full_prompt"
fi
Solo funciona correctamente si pongo uno sleep 0
u otro comando antes de esta declaración; de lo contrario, muestra el siguiente error:
[: -lt: unary operator expected
Nota:Tengo las funciones degr_prompt
y full_prompt
definidas al principio del archivo.
Respuesta1
COLUMNS
La variable la establece bash upon receipt of a SIGWINCH.
(consulte Shell Variables
la sección en man bash
). No está configurado en su secuencia de comandos porque no es una variable de entorno. Verse a sí mismo:
$ export COLUMNS=$COLUMNS
$ ./your-script.sh
Ahora funciona. Necesita recuperar el valor de COLUMNS
en su script. Puedes utilizar tput
por ejemplo:
$ tput cols
186
Respuesta2
COLUMNS
no está configurado de alguna manera en .bashrc
.
Simplemente obtenga las columnas de tput cols
esta manera:
dp_smaller_than=80
if [ $(tput cols) -lt $dp_smaller_than ]
then
PROMPT_COMMAND="degr_prompt"
else
PROMPT_COMMAND="full_prompt"
fi