如何在不创建新文件的情况下使用文本编辑器打开终端输出?

Pau*_*yer 12 command-line text-editor

假设我想要lsnanoor中查看的输出tilde

我会做以下事情:

ls >> tmp
nano tmp
rm tmp
Run Code Online (Sandbox Code Playgroud)

我不喜欢这样,因为它会创建一个我有时会忘记删除的转储文件。有些人建议这样做:

ls | less
Run Code Online (Sandbox Code Playgroud)

或者

ls | more
Run Code Online (Sandbox Code Playgroud)

但我不能这样做:

ls | nano
Run Code Online (Sandbox Code Playgroud)

那么如何解决这个问题呢?我会需要这个,特别是当涉及到巨大的终端输出时,比如我想在之后进行搜索的当前进程。

van*_*ium 14

许多程序通常-用来表示标准输入或标准输出。因此,您可以使用 nano-作为文件名打开命令的屏幕输出,如下所示:

ls | nano -
Run Code Online (Sandbox Code Playgroud)

这仅在您的程序确实支持该约定时才有效。这包括nanovi该终端上。甚至图形文本编辑器也gedit支持它。但是,pluma或者mousepad不支持它,而是会被指示创建一个名为-. 在其他情况下,您无法先创建常规中间文件。

  • 这仅在消费命令明确支持时才有效;它很常见,但远非普遍。 (3认同)

cma*_*.fr 5

如果确实需要使用波浪号查看,您可以编写您的想法
在您的.bashrc

function tildeIt () {
  tmpfile=$(mktemp)
  "$@" > $tmpfile
  tilde $tmpfile
  rm $tmpfile
}

# $@ is all words typed after tildeIt
# mktemp creates a temp file and returns his fullname
Run Code Online (Sandbox Code Playgroud)

重新加载 .bashrc

source ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

用法

tildeIt command -option
Run Code Online (Sandbox Code Playgroud)