Kri*_*hna 17 linux bash vim locate pipe
我locate非常频繁地使用该命令。
因此,如果我运行以下命令。
locate updatedb | head -1
Run Code Online (Sandbox Code Playgroud)
然后它给了我 O/p
/usr/updatedb.conf
Run Code Online (Sandbox Code Playgroud)
我想知道有没有这样的命令可以让我直接打开那个文件?
我希望有这样的事情。
locate updatedb | head -1 | vim
Run Code Online (Sandbox Code Playgroud)
小智 24
你快完成了:
$ locate updatedb | head -1 | xargs vim
Run Code Online (Sandbox Code Playgroud)
有时(在某些终端下)您需要在编辑后重置终端。
$ reset
Run Code Online (Sandbox Code Playgroud)
Ing*_*kat 20
作为一个交互式编辑器,Vim 需要 stdin 和 stdout,所以在管道中使用它是有问题的,并让 Vim 对此发出警告。对于单个文件,进程替换很容易解决这个问题:
vim "$(locate updatedb | head -1)"
Run Code Online (Sandbox Code Playgroud)
你也可以使用反引号,它甚至可以在 Vim 内部使用:
:edit `locate updatedb | head -1`
Run Code Online (Sandbox Code Playgroud)
除了上面的答案之外,为了避免 Jacobo de Vera 在评论中所说的“终端损坏”,请使用 xargs 选项-o或--open-tty让 vim 假设输入来自终端,而不是标准输入。
$ locate updatedb | head -1 | xargs -o vim
Run Code Online (Sandbox Code Playgroud)
请参阅:https ://unix.stackexchange.com/a/44428/307359