在Bash中选择Unicode文件名


9

好; 假设我在Bash中,并且一个文件夹中有几个文件。其中有几个被命名为file☠☡☢☣.txt,其中☠☡☢☣以疯狂的无法键入的unicode字符开头。我将如何提及其中之一?按Tab仅自动完成到file,然后希望您键入一个疯狂的字符。有什么方法可以告诉bash“选择您刚刚给我的列表中的第三个”?

Answers:


9

我建议您解决此问题,并在readline中使用另一种类型的键绑定,例如Shift+ TAB。将以下内容添加到您的~/.inputrc

"\e[Z": menu-complete

然后发出一个exec bash(然后应阅读中的设置~/.inputrc)。一次性运行,而不是重新启动bash,可以通过运行来设置相同的绑定bind '"\e[Z": menu-complete'

现在,您应该能够使用重复的ShiftTAB序列来循环显示匹配的文件名(而不是必须输入下一个匹配的字符)。这将对发出的任何命令有效(因为这是绑定到ShiftTAB序列的标准读取行命令)。如OP所述,这不会影响TAB键的标准行为,而只是增加了ShiftTAB组合的功能 。


编辑提到的使用exec bash,因为这是使其工作很重要的一步!;)
Drav Sloan 2013年

谢谢!对于任何想知道的人来说,这似乎并没有改变正常的功能。它只是添加了Shift-Tab键组合。
Erhannis 2013年

正确,请不要留下我的Tab键!!:)如果那改变了,我会很沮丧:D
Drav Sloan 2013年

3

有时可行的另一种方法是使用?*遍历通配符,然后键入“ stuff”的其余部分,直到获得带有制表符补全的唯一匹配项。


2

转到包含的目录,file☠☡☢☣.txt然后输入ls -i。您将看到以下行:

xxxxx file☠☡☢☣.txt

xxxxx的索引号在哪里file☠☡☢☣.txt?输入:

find . -maxdepth 1 -inum xxxxx -exec /bin/mv -i {} bettername.txt \;

其中xxxxx前一行是从中获得的上述索引号ls -i。这重命名file☠☡☢☣.txtbettername.txt

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.