0

背景:

bash 的一个众所周知的特性是“别名”命令。

它允许用户通过“缩写”常用或烦人的命令并执行它们来节省击键,就好像用户自己输入了整个命令并在 bash 提示符下按 ENTER 一样。

问题:

别名命令在用户输入别名后立即自动执行与别名对应的命令。但有时用户可能不希望这种行为。

问题:

bash 中有没有办法创建“填充空白”别名命令?这将是一个别名,它不会在按 ENTER 后自动运行命令,而是让用户有机会键入参数。

要避免的陷阱:

排除 reverse-i-search: bash 的“reverse-i-search”功能支持这种“填充空白”功能请求,但它(显然)不允许用户提前指定命令,而是只搜索历史。这可能不是期望的行为。

排除函数使用 bash 函数可以满足此功能要求,但这可能不是所需的解决方案,因为用户可能有不想创建函数的原因。

4

2 回答 2

2

在第二次(以及第三次和第四次)阅读中,我认为您正在寻找readlinefunction alias-expand-line。默认情况下它不绑定到任何键,但更通用shell-expand-line的是预绑定到Meta- Control- e。键入命令行,然后按它而不是Enter,当前命令行被 shell 扩展,但不执行。

如果您不想要完全扩展(参数、历史记录等)而只想要别名,则可以使用bind命令将Meta- Control- e(或其他组合键)绑定到alias-expand-line,这应该只扩展别名。

展开后,您可以根据需要编辑该行,甚至可以使用Control--打开当前命令行以进行更广泛的编辑。x Controle$EDITOR

于 2013-05-09T18:56:31.613 回答
0

排除反向搜索

使用这个,然后当你找到正确的匹配时,点击Esc. 这将允许您在运行之前编辑命令。

于 2013-05-09T18:26:14.920 回答