合成一个 bash 函数应用运算符

合成一个 bash 函数应用运算符

这有点像不切实际的想法,但我已经学会不要对任何事物的功能做出假设,因为我经常对 UNIX/Linux 工具中隐藏的功能感到惊讶,所以就这样吧。

我经常发现自己在运行命令,需要在系统上定位文件,然后一旦我确定了位置,就需要对路径做一些事情。

以这个工作流程为例:

$ which foo.sh
/path/to/something/foo.sh
$ vim `which foo.sh`

我花了整整 1-2 秒才输入完第二个命令。这太疯狂了。我经常这样做,以至于我开始觉得这就像样板文件,我应该能够将其分解出来。

我想要的是幻想贝壳魔法,它可以让我做到以下几点:

$ which foo.sh
/path/to/something/foo.sh
$ which foo.sh |! vim

在我看来,第二种情况要好得多。我发现在向上箭头后输入“|!vim”比寻找行首、输入 vim 反引号、然后寻找行尾并输入最后一个反引号要容易得多。

想象一下,管道运算符执行的操作类似于“| xargs,vim”,但保留了 vim 的终端,并且输入起来更方便。管道运算符在 bash 中当然是语法错误,并且无法使用别名,因此我想做的事情似乎是不可能的。

真的是这样吗?我怀疑这是 TMTOWTDI 的一个案例,但我有点困惑。

它也不一定非要像字面意义上的管道爆炸,但目标是接近管道爆炸的东西。

答案1

这也应该有效:

哪个 foo.sh | xargs vim

答案2

我经常做同样的事情(通常用 which 来查找二进制文件,然后使用 rpm -qf 查看哪个包提供了它)!我的路线比你做的要好,但比你想要的要慢;我把它作为一个折衷方案提供。

$ which foo.sh
/path/to/something/foo.sh
$ vim `!!`

在大多数键盘上,反引号和 1 键也非常接近,因此打字速度相当快。

答案3

给这个(我是尝试一下:

$ alias vp='vim $(fc -s)'
$ which foo.sh
$ vp

fc -s使用替换(在本例中为空)重新执行前一个命令。

您可以将别名放在~/.bashrc文件中。我将其aliases放在由我的 提供的文件中~/.bashrc

相关内容