如何轻松执行 bash 中的最后一行输出?

如何轻松执行 bash 中的最后一行输出?

您可能遇到过未安装包的情况,并且系统建议您使用 进行安装apt-get install mypackage

我正在寻找一个快捷键来执行最后一行。显然向上箭头不会带来它,因为它不是你执行的命令,而只是上一个执行的程序的最后一行输出。

关于如何在 bash 中实现这种行为有什么想法吗?

答案1

你可以创建一个别名xo(随便取一个),重播最后一个命令而不打印任何输出,然后将该输出的最后一行作为命令运行。

alias xo='$($(fc -ln -1) |& tail -1)'

然后,在您尝试运行并被告知可以用来安装的myapp命令后,您只需键入并按下,安装命令就会运行。mypackagemyappxoEntermypackage

工作原理

$(fc -ln -1)行为很像历史扩展!!!!在别名或函数定义中不起作用,但fc(和用 进行命令替换$( ))可以起作用。

$(fc -ln -1) |& tail -1重新运行最后一个命令,并将其标准输出通过管道传输出去标准错误tail -1,丢弃除最后一行之外的所有内容。

将其包含在外部命令替换中会导致最后一行作为命令运行。对其执行分词(因为整个内容是不是用引号括起来"),这就是您想要的。

引用来源

答案2

相关内容