GNU/Linux >> Tutoriels Linux >  >> Linux

Que signifient les caractères spéciaux dans Echo {a..z} ?

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

  1. Comment ces caractères spéciaux sont arrivés ici entre les majuscules et les minuscules ?

  2. Que signifient ces séquences de caractères spéciaux ?

  3. 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 🙂


Linux
  1. Qu'est-ce qui rend la communauté Linux spéciale ?

  2. Vérifier la validité IP

  3. À quoi sert $# dans Bash

  4. linux shell wc -c compte les caractères +1

  5. Qu'est-ce que echo $ ? fais?

Que signifie Etc ?

Convertir un mot de passe avec des caractères spéciaux pour une utilisation avec Expect Script ?

Que signifie "tty" ?

Afficher les caractères spéciaux cachés dans Vim

SystemD - A quoi sert SystemD ?

Origine d'un thread kworker