Aparte de los caracteres que se pueden teclear mediante un teclado, hay
muchos otros que se pueden mostrar por la pantalla. He creado un script
que permite comprobar qué tiene disponible el tipo que esté usando. El
comando principal a usar para utilizar estos caracteres es echo -e
.
La opción -e
le indica a echo
que habilite la interpretación de
caracteres escapados mediante contrabarra. Lo que aparezca a partir de un
200-400 octal será muy diferente con un tipo VGA de lo que aparezca con un
tipo estándar linux. Queda avisado de que algunas de estas secuencias de
escape tienen extraños efectos en el terminal, y no he intentado
evitarlos. Los caracteres de dibujos de líneas y bloques (que nos resultan
tan familiares a los usuarios de WordPerfect) utilizados masivamente
en el proyecto Bashprompt están entre el 260
y 337
octal.
#!/bin/bash
# Script: escgen
function usage {
echo -e "\033[1;34mescgen\033[0m <valor_inferior> [<valor_superior>]"
echo " Generador de secuencias de escape octales: imprime todas las"
echo " secuencias de escape contenidas entre los valores menor y"
echo " mayor. Si no se proporciona el segundo valor, se imprimen"
echo " 8 caracteres."
echo " 1998 - Giles Orr, sin garantía."
exit 1
}
if [ "$#" -eq "0" ]
then
echo -e "\033[1;31mPor favor incluya uno o dos valores.\033[0m"
usage
fi
let lower_val=${1}
if [ "$#" -eq "1" ]
then
# Si no hay dos valores, sacar 8 caracteres
upper_val=$(echo -e "obase=8 \n ibase=8 \n $lower_val+10 \n quit" | bc)
else
let upper_val=${2}
fi
if [ "$#" -gt "2" ]
then
echo -e "\033[1;31mPor favor, incluya dos valores.\033[0m"
echo
usage
fi
if [ "${lower_val}" -gt "${upper_val}" ]
then
echo -e "\033[1;31m${lower_val} es mayor que ${upper_val}."
echo
usage
fi
if [ "${upper_val}" -gt "777" ]
then
echo -e "\033[1;31mLos valores no pueden superar 777.\033[0m"
echo
usage
fi
let i=$lower_val
let line_count=1
let limit=$upper_val
while [ "$i" -lt "$limit" ]
do
octal_escape="\\$i"
echo -en "$i:'$octal_escape' "
if [ "$line_count" -gt "7" ]
then
echo
# Put a hard return in.
let line_count=0
fi
let i=$(echo -e "obase=8 \n ibase=8 \n $i+1 \n quit" | bc)
let line_count=$line_count+1
done
echo
También se puede usar xfd
para mostrar todos los caracteres de un
tipo X, mediante el comando xfd -fn <tipo>
. Pinchando sobre un
caracter determinado se puede obtener mucha información sobre él,
incluyendo su valor octal. El script de arriba puede resultar útil en la
consola, y en el caso de que no se esté seguro acerca del nombre del tipo
de letra.