有没有办法让别名包含 $(!!) 在运行时扩展?



或函数或其他任何东西。

我的用例是,我有一个命令,该命令可以为我找到GIT存储库中的分支名称,而命令的唯一输出是该分支名称,可传递给git checkout。然后,我键入git checkout $(!!)以实际执行结帐。我想要的是一个别名(不在乎git checkout $(!!)的"真实" alias(。

我不想要一个找到分支并将其检查出来的单个命令,因为我用来找到分支输出的命令可能会多个分支名称,在这种情况下,我会以更具体的参数重新运行它。(这是git branch -r | cut -d '/' -f 2- | grep的别名。(

fc内置提取物(默认情况下,允许您编辑(从bash历史记录中的上一个命令。使用fc -nl -1 -1获取上一个命令(作为标准输出(。因此:

alias again='eval $(fc -nl -1 -1)'

使命令 again!!一样再次执行您的操作。稍作修改,我们得到(固定,从R. Woods固定(:

alias xxx='git checkout $(eval $(fc -nl -1 -1))'

应该解决这个问题(不是我已经测试过(。请注意,这是并且必须是bash的别名,而不是git的别名:git无法访问shell的历史记录(除了阅读文件,但不能保证这是最新的,或者我应该说,保证不是是最新的,至少是我刚刚检查的bash文档(。

最新更新