gpt4 book ai didi

linux - 如何引用先前输出中的特定行?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:59:05 25 4
gpt4 key购买 nike

在 bash 上,我有以下(典型)场景:

~/some/dir$ find | grep java

例如哪些输出

./subdir1/subdir2/file1.java
./subdir1/subdir3/file2.java
./subdir1/subdir4/file3.java
./subdir1/subdir2/file4.java
./subdir1/subdir6/file5.java

现在我知道 file5.java,这是我正在寻找的文件(例如),在该子目录中,所以我执行:

vi subdir1/subdir6/file5.java

但为了做到这一点,我必须输入路径(我知道使用 TAB 键可以加快速度)或复制并粘贴文件路径

问题是:在 bash(或任何其他 shell)上是否有引用上一个命令输出的行的快捷方式/变量,以便我可以说

vi [whatever the previous command returned on the 5th line]

,这样可以节省很多时间

谢谢!

最佳答案

利用 BASH 历史,您可以接近 [第 5 行返回的任何前一个命令]

举个例子

 $ find -name "*.java"
src/file1.java
...
src/file5.java
...
$ vi $( !! | head -5 | tail -1 )

在此示例中,!! 表示 [无论先前的命令返回什么],因为该命令将再次执行。

以下命令|头-5 | tail -1 是从输入中说[take line 5]

的一种相当笨拙的方式

如果您在特定文件名之后,您也可以在搜索表达式中将其指定为

$ vi $( !find | grep file5 )

如果 find 需要很长时间才能执行,您可以将 find 的输出保存到一个文件中,然后使用该文件。

$ find -name "*.java" | tee filelist.save
src/file1.java
...
src/file5.java
...
$ vi $( grep file5 filelist.save )

关于linux - 如何引用先前输出中的特定行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10355328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com