echo {Z..A}; out {Z..A};なぜ?

echo {Z..A}; out {Z..A};なぜ?

私は Ubuntu の初心者です。この本「Linux コマンドライン: 完全入門」を読んでコードを練習しています。楽しいのですが、第 8 章で困っています。

➜  ~ echo {1..10}
1 2 3 4 5 6 7 8 9 10
➜  ~ echo {z..a}
{z..a}
➜  ~ echo {Z..A}
{Z..A}
➜  ~ echo {a..z}
{a..z}
➜  ~ 

文字の範囲を取得できません。なぜですか? どうすれば修正できますか? 私のシェルは oh-my-zsh です。

答え1

これはksh(そしてバッシュ)機能には含まれておらず、あなたのシェル、例:ダッシュ(Debian/Ubuntu で使用されるデフォルトのシェル)。

違いを確認するには、

bash -c "echo {a..z}"
dash -c "echo {a..z}"

Debian のデフォルト/bin/shは を指しますdash。ただし、bash シェルで実行している場合は、期待どおりにシーケンスが展開されます。 で始まるスクリプトは#!/bin/shを使用しますdash

私の Debian 7 でも、zshシーケンスは展開されません。(ksh、bash、dash、zsh をチェックしました)。

関連情報