有時,GNU 排序的行為不符合預期。這是一個例子:
> 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 順序排序,將所有字元視為字母?我查看了手冊頁,沒有發現任何有用的東西。
答案1
你是對的,完全隨機的陌生人。 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
...