時々、GNU sort は期待通りに動作しないことがあります。次に例を示します。
> bind | sort
(これは fish を使用していることを前提としています。bash では、同等のものは ですbind -p
。) 出力内のアルファベット以外の文字はすべてソート時に基本的に無視されるため、意図したとおりになりません。出力のサンプルを次に示します。
bind --preset \e\b backward-kill-word
bind --preset \eb backward-word
bind --preset \e\[B down-or-search
bind --preset \e\< beginning-of-buffer
bind --preset \e cancel
bind --preset \ec capitalize-word
bind --preset \e\[C forward-char
bind --preset \e\[D backward-char
bind --preset \ed kill-word
私が望んでいたのは、すべてのキーバインディングを隣り合わせに配置することでした\e[a-z]
。すべての文字を文字として扱い、厳密に ASCII 順にソートするように sort の動作を変更するにはどうすればよいでしょうか? man ページを調べましたが、役に立つ情報は見つかりませんでした。
答え1
まったくのランダムな見知らぬ人、その通りです。sort のコマンドライン スイッチにはこのオプションはありません。ただし、sort をこのように動作させることは可能です。必要なのはロケールを変更することだけです。
> bind | LANG=C sort
...
bind --preset \e\x7f backward-kill-word
bind --preset \eb backward-word
bind --preset \ec capitalize-word
bind --preset \ed kill-word
bind --preset \ee edit_command_buffer
bind --preset \ef forward-word
bind --preset \eh __fish_man_page
bind --preset \el __fish_list_current_token
...