这是一个好奇心。我可以从 bash 启动 nano 编辑器,通过管道命令吗?这是我的情况:我有一个日期格式为 tai64 的日志文件。为了打印我的文件,我启动:
$> cat /var/log/qmail/current | tai64nlocal
打印我想要的。但我想在一个命令中在 nano 或其他编辑器中查看它。例如:
$> cat /var/log/qmail/current | tai64nlocal > nano
但这不起作用。有什么建议吗?提前致谢
如果你想nano
打开stdin
使用破折号(-
):
echo "foo" | nano -
在你的情况下,这将转化为
cat /var/log/qmail/current | tai64nlocal | nano -
使用进程替换:
nano <(cat /var/log/qmail/current | tai64nlocal)
此外,您不需要使用 cat
nano <(tai64nlocal < /var/log/qmail/current)
它不起作用,因为您没有使用管道。您使用的重定向略有不同。
| 对比 >
通过做
cat /var/log/qmail/current | tai64nlocal > nano
您正在将 cat 的标准输出传送到 tai64nlocal 标准输入。然后你将它的标准输出重定向到一个文件流,在这种情况下,你的密码中名为 nano 的文件。
根据您的需要,它部分有效,因为 tai 命令同时打印和回显到标准输出。
旧版本的 nano 不支持通过管道传输。这是在 nano 2.2 中引入的。
你会做
Command | nano -
单个破折号告诉 nano 将标准输入作为寻呼机打开,就像或多或少一样。
davymartu 的命令 "nano < ( cat /var/log/maillog | tai64nlocal )" 由于 "<" 和 "(" 之间的空格而产生语法错误。如果空格被删除,就像在 konsolebox 的示例中一样,该命令将执行。