Je sais que nous pouvons imprimer une séquence de lettres de l'alphabet en utilisant echo
commande et l'ai expérimenté un peu en faisant ceci.
Séquence de lettres minuscules
$ 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
Séquence de lettres majuscules
$ 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
Séquence de lettres majuscules et minuscules
$ 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
Maintenant, c'est la partie que je ne comprends pas. Voir les special charcaters
de Z à A. Voici une meilleure vue.
$ echo {a..Z}
a ` _ ^ ] [ Z
Je veux savoir
-
Comment ces caractères spéciaux sont arrivés ici entre les majuscules et les minuscules ?
-
Que signifient ces séquences de caractères spéciaux ?
-
De plus, comment imprimer uniquement cette séquence entre les deux ?
Réponse acceptée :
{A..z}
se développe en fonction de l'encodage de caractères de votre environnement local actuel, qui est très probablement ASCII ou quelque chose de proche. Si vous exécutez man ascii
(au cas où vous l'auriez sur votre système) ou regardez une table ASCII, vous voyez ces caractères supplémentaires entre Z
et a
(le même que vous obtenez lors de l'exécution de echo {Z..a}
en fait).
Pour obtenir uniquement des caractères majuscules/minuscules, utilisez
echo {A..Z} {a..z}
Pour obtenir uniquement ceux entre les deux, vous pouvez utiliser
typeset -a foo=($(echo {Z..a}))
echo ${foo[@]:1:((${#foo[@]} - 2))}
qui crée d'abord un tableau comprenant les deux caractères juste à l'extérieur de la limite, puis accède à tous les éléments du tableau en plus les caractères de délimitation.
PS :Comprendre pourquoi typeset -a foo=({Z..a})
ne fonctionne pas est laissé en exercice au lecteur 🙂