Alt+Shift+{ 是什么?

Mik*_*ail 10 linux keyboard-shortcuts bash autocomplete

如果您在一个包含大量文件的目录中,请在 CentOS 和 Ubuntu 上对此进行测试

$ ls
day1.tar.gz  day2.tar.gz  day3.tar.gz  day4.tar.gz  day5.tar.gz  day6.tar.gz  day7.tar.gz  day8.tar.gz day9.tar.gz day10.tar.gz
Run Code Online (Sandbox Code Playgroud)

你点击Alt+Shift+{它会 awk-complete 每个文件名

<Alt+Shift+{>
Run Code Online (Sandbox Code Playgroud)

完成为:

 day{1{0.tar.gz,.tar.gz},2.tar.gz,3.tar.gz,4.tar.gz,5.tar.gz,6.tar.gz,7.tar.gz,8.tar.gz,9.tar.gz}
Run Code Online (Sandbox Code Playgroud)

day1<Alt+Shift+{>
Run Code Online (Sandbox Code Playgroud)

完成为:

day1{0.tar.gz,.tar.gz}
Run Code Online (Sandbox Code Playgroud)

问题:这是什么?这个叫什么?它在哪里有用?我该如何配置它?我可以对以子字符串结尾而不是以一个开头的文件执行此操作吗?

Den*_*son 9

在 Bash 中,它执行 readline 函数complete-into-braces

大括号扩展是一种缩写对多个文件的引用的有用方法。

例如:

ls -l /path/to/dir/*.{c,h}
Run Code Online (Sandbox Code Playgroud)

将列出所有以“.c”或“.h”结尾的文件。

来自man bash

complete-into-braces (M-{)
执行文件名补全并插入可能的 com 列表?括号内的pletions,以便shell可以使用列表(请参阅上面的括号扩展)。

大括号扩展
大括号扩展是一种可以生成任意字符串的机制。这种机制类似于路径名扩展,但生成的文件名不需要存在。要大括号扩展的模式采用可选前导码的形式,后跟一系列逗号分隔的字符串或一对大括号之间的序列表达式,后跟可选的后记。大括号中包含的每个字符串都以前导码为前缀,然后将后记附加到每个结果字符串,从左到右扩展。

大括号扩展可以嵌套。每个展开后的字符串的结果没有排序;保留从左到右的顺序。例如,a{d,c,b}e 扩展为“ade ace abe”。

Completion 根据定义完成,因此它适用于以字符串开头的文件。