有时,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]
键绑定放在一起。如何更改 sort 的行为以严格按照 ASCII 顺序排序,将所有字符视为字母?我查看了手册页,没有找到任何有用的东西。
答案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
...