终端:扩展类似文件名快捷方式列表

终端:扩展类似文件名快捷方式列表

我记得在某个地方的 stackoverflow 评论中读过一个技巧,用于在终端中获取文件名列表,但我记不清了。

如果你有一堆文件,例如:

foo-a.txt
foo-b.txt
foo-c.txt

有一个技巧大致如下:

  1. 类型cat foo-*
  2. 按下类似tabbackspace,之类的键esc(这不起作用,但这是我想知道的步骤)
  3. 命令行现在应该有cat foo-a foo-b foo-c

请注意,这与基本制表符补全不同,后者在命令下方显示文件名列表。这会将所有文件名放在命令输入中,这样按“enter”键将对所有文件执行 cat。

有人可以启发我吗?

答案1

  1. 类型cat foo-*
  2. Ctrl+X然后按*(星号/星号)展开 glob
    • 如果不起作用,请运行bind -p | grep glob-expand-word并检查是否显示"\C-x*": glob-expand-word。如果没有,您可以设置它:
      bind '"\C-x*": glob-expand-word'
      
  3. 命令行现在应该是cat foo-a.txt foo-b.txt foo-c.txt

glob-expand-word对比insert-completions

OP 的回答是关于insert-completionsEsc*Alt+ *),它与 类似但不同glob-expand-word

  • glob-expand-word扩展文件名全局。
  • insert-completionsTab插入按下后显示的所有可能的完成。

因此,这意味着除了文件名之外,您还可以使用insert-completions它,例如选项。例如,键入ls --f,按Esc*,然后您将获得ls --file-type --format=,尽管我不确定这有多大用处。

这意味着它在扩展 glob 时的行为会有所不同。例如,如果你输入cat foo-*并按下Esc, *,它将仅扩展为第一个补全:cat foo-a.txt

答案2

我找到了原始评论这里。(有更高分数的人可以帮我给他点赞吗?:P)

顺序如下:

  • 类型cat foo-
  • esc
  • *(星号)

相同的序列似乎适用于任何程序(不仅仅是cat

相关内容