GNU/Linux >> Znalost Linux >  >> Linux

Co znamenají speciální postavy v Echo {a..z}?

Vím, že můžeme vytisknout posloupnost písmen abecedy pomocí echo a trochu si to vyzkoušeli.

Sekvence malých písmen

$ 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

Sekvence velkých písmen

$ 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

Sekvence velkých a malých písmen

$ 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

Tohle je část, kterou nechápu. Viz special charcaters od Z do a. Tady je lepší pohled.

$ echo {a..Z}
a ` _ ^ ]  [ Z

Chci to vědět

  1. Jak se sem dostaly tyto speciální znaky mezi velkými a malými písmeny?

  2. Co znamenají tyto speciální sekvence znaků?

  3. Také, Jak vytisknu tuto sekvenci pouze mezi?

Přijatá odpověď:

{A..z} expanduje podle kódování znaků vašeho aktuálního národního prostředí, což je s největší pravděpodobností ASCII nebo něco jemu blízkého. Pokud spustíte man ascii (v případě, že to máte na svém systému) nebo se podívejte na ASCII tabulku, kde uvidíte tyto další znaky mezi Z a a (totéž získáte při spuštění echo {Z..a} vlastně).

Chcete-li získat pouze velká/malá písmena, použijte

echo {A..Z} {a..z}

Chcete-li získat pouze ty mezi, můžete použít

typeset -a foo=($(echo {Z..a}))
echo ${foo[@]:1:((${#foo[@]} - 2))}

který nejprve vytvoří pole včetně dva znaky těsně za hranicí a poté přistupuje ke všem prvkům pole kromě hraniční znaky.

PS:Zjistěte, proč typeset -a foo=({Z..a}) nefunguje je ponecháno jako cvičení pro čtenáře 🙂


Linux
  1. Jak psát speciální znaky??

  2. Co hledat u poskytovatele cloudového hostingu

  3. Zkontrolujte platnost IP

  1. Co pro vás může udělat shell dotfile

  2. linuxový shell wc -c počet znaků +1

  3. Co znamená echo $? dělat?

  1. Zdroje pro programování Portable Shell?

  2. Co znamená „rc“ v .bashrc?

  3. Převést heslo se speciálními znaky pro použití s ​​Expect Script?