bash:“填空”允许进一步输入的别名

时间:2013-05-09 18:14:09

标签: bash alias

背景

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

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

问题:

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

问题:

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

要避免的陷阱:

排除了反向搜索: bash的“反向搜索”功能支持这种“填空”功能请求,但它(显然)不支持允许用户提前指定命令,而只是搜索历史记录。这可能不是理想的行为。

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

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

  

排除了反向搜索

使用此选项,然后当找到正确匹配时,按 Esc 。这将允许您在运行之前编辑命令。