如何使用文本编辑器打开终端输出而不创建新文件?

如何使用文本编辑器打开终端输出而不创建新文件?

假设我想要在或ls中查看的输出。nanotilde

我会做以下事情:

ls >> tmp
nano tmp
rm tmp

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

ls | less

或者

ls | more

但我不能这样做:

ls | nano

那么如何解决这个问题呢?当涉及到巨大的终端输出(例如当前进程)时,我需要这个功能,之后我想进行搜索。

答案1

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

ls | nano -

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

答案2

如果使用波浪号确实需要,你可以编写你的想法,
在你的.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

重新加载.bashrc

source ~/.bashrc

用法

tildeIt command -option

答案3

如果有的话vipe,你可以这样做

ls | vipe >/dev/null

该程序vipe(我认为代表 vi 管道或视图管道)读取标准输入,$EDITOR在其上打开,然后将保存并退出时剩下的内容写入标准输出。

答案4

如果您正在使用bash,您可以尝试一下tilde <( ls )

流程替代bash(1)

相关内容