终端:展开相似文件名快捷方式列表

mds*_*mmo 4 command-line bash shortcut-keys

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

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

foo-a.txt
foo-b.txt
foo-c.txt
Run Code Online (Sandbox Code Playgroud)

有一个技巧可以遵循以下原则:

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

请注意,这与基本选项卡完成不同,后者显示命令下方的文件名列表。这会将所有文件名放在命令输入中,以便按“输入”将执行 cat 与所有文件。

任何人都可以启发我吗?

wja*_*rea 5

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

glob-expand-word 对比 insert-completions

OP 的答案是关于insert-completions( Esc,*Alt+ *),它类似于但不同于glob-expand-word

  • glob-expand-word 扩展文件名 globs。
  • insert-completions插入按下Tab会显示的所有可能的完成。

所以这意味着你还可以使用insert-completions文件名以外的东西,比如选项。例如,键入ls --f、按Esc*,您将得到ls --file-type --format=,但我不确定这有多大用处。

这意味着它在扩展 glob 时表现不同。例如,如果您键入cat foo-*并按Esc, *,它将仅扩展到第一个完成:cat foo-a.txt