Sé que podemos imprimir una secuencia de letras del Alfabeto usando echo
y lo experimenté un poco haciendo esto.
Secuencia de letras minúsculas
$ echo {a..z}
a b c d e f g h i j k l m n o p q r s t u v w x y z
Secuencia de letras mayúsculas
$ echo {A..Z}
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Secuencia de letras mayúsculas y minúsculas
$ echo {A..z}
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z
Ahora bien, esta es la parte que no entiendo. Ver los special charcaters
de Z a a. Aquí hay una mejor vista.
$ echo {a..Z}
a ` _ ^ ] [ Z
quiero saber
-
¿Cómo llegaron aquí estos caracteres especiales entre letras mayúsculas y minúsculas?
-
¿Qué significa esta secuencia de caracteres especiales?
-
Además, ¿cómo solo imprimo esta secuencia en el medio?
Respuesta aceptada:
{A..z}
se expande de acuerdo con la codificación de caracteres de su configuración regional actual, que probablemente sea ASCII o algo parecido. Si ejecuta man ascii
(en caso de que tenga esto en su sistema) o eche un vistazo a una tabla ASCII, verá estos caracteres adicionales entre Z
y a
(lo mismo que obtienes cuando ejecutas echo {Z..a}
en realidad).
Para obtener solo caracteres en mayúsculas/minúsculas, use
echo {A..Z} {a..z}
Para obtener solo los intermedios, puede usar
typeset -a foo=($(echo {Z..a}))
echo ${foo[@]:1:((${#foo[@]} - 2))}
que crea una matriz primero incluyendo los dos caracteres justo fuera del límite y luego accede a todos los elementos de la matriz además los caracteres de límite.
PD:averiguar por qué typeset -a foo=({Z..a})
no funciona se deja como ejercicio al lector 🙂