Unix: ls -d [2-q]* と入力するとどうなりますか?

Unix: ls -d [2-q]* と入力するとどうなりますか?

2とqの間に文字を語彙的に配置する方法がないので、-dオプションの後のビットを無視しますか?

答え1

はい、文字は2とqの間で語彙的に配置できます。これを行うと、ls /bin数字が文字の前にくるのがわかります。実際にls /bin/[2-q]*何が起こっているのかを自分で確認できます。

「C」ロケールの語彙ソートはASCII値に基づいているため、「2」は10進数32、「q」は71です。man asciiASCIIテーブル全体を表示するには、aを実行します。

たぶんあなたはあなたが尋ねたいと思うかもしれませんする無効な辞書範囲が指定されましたか?あなたは試すことができます:

% ls /bin/[q-2]*
ls: /bin/[q-2]* にアクセスできません: そのファイルまたはディレクトリがありません

もちろん、シェルはパターンを拡張しているため(「ファイル名GLOB拡張」とも呼ばれます)、表示されるエラーはシェルとシェルのオプションによって異なります。私の場合、コマンドの実行を中断するシェルエラーを生成する代わりに、GLOBを介して直接拡張できないパターンを呼び出されるコマンドに渡すオプションを有効にしてzsh設定しました。zsh

関連情報