7

这是一个好奇心。我可以从 bash 启动 nano 编辑器,通过管道命令吗?这是我的情况:我有一个日期格式为 tai64 的日志文件。为了打印我的文件,我启动:

$> cat /var/log/qmail/current | tai64nlocal

打印我想要的。但我想在一个命令中在 nano 或其他编辑器中查看它。例如:

$> cat /var/log/qmail/current | tai64nlocal > nano

但这不起作用。有什么建议吗?提前致谢

4

4 回答 4

5

如果你想nano打开stdin使用破折号(-):

echo "foo" | nano -

在你的情况下,这将转化为

cat /var/log/qmail/current | tai64nlocal | nano -
于 2013-09-05T15:31:41.257 回答
4

使用进程替换:

nano <(cat /var/log/qmail/current | tai64nlocal)

此外,您不需要使用 cat

nano <(tai64nlocal < /var/log/qmail/current)
于 2013-09-05T15:31:33.383 回答
1

它不起作用,因为您没有使用管道。您使用的重定向略有不同。

| 对比 >

通过做

 cat /var/log/qmail/current | tai64nlocal > nano

您正在将 cat 的标准输出传送到 tai64nlocal 标准输入。然后你将它的标准输出重定向到一个文件流,在这种情况下,你的密码中名为 nano 的文件。

根据您的需要,它部分有效,因为 tai 命令同时打印和回显到标准输出。

旧版本的 nano 不支持通过管道传输。这是在 nano 2.2 中引入的。

你会做

 Command | nano -

单个破折号告诉 nano 将标准输入作为寻呼机打开,就像或多或少一样。

于 2018-04-05T06:28:52.893 回答
1

davymartu 的命令 "nano < ( cat /var/log/maillog | tai64nlocal )" 由于 "<" 和 "(" 之间的空格而产生语法错误。如果空格被删除,就像在 konsolebox 的示例中一样,该命令将执行。

于 2018-11-13T18:19:06.447 回答