这有点像不切实际的想法,但我已经学会不要对任何事物的功能做出假设,因为我经常对 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
。