启动nano编辑器传递管道命令

时间:2013-09-05 15:30:16

标签: linux bash shell unix nano

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

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

打印我想要的东西。 但我想在一个命令中以nano或其他编辑器查看此内容。例如:

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

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

4 个答案:

答案 0 :(得分:4)

使用流程替换:

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

此外,您不需要使用猫

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

答案 1 :(得分:4)

如果您想要nano打开stdin,请使用短划线(-):

echo "foo" | nano -

在您的情况下,这将转换为

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

答案 2 :(得分:1)

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

| vs&gt;

通过

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

你正在把猫的标准输送到tai64nlocal stdin。然后你将它的stdout重定向到一个文件流,在这种情况下是你的pwd中名为nano的文件。

根据您的需要,它部分有效,因为tai命令同时打印并回显到stdout。

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

你会做

 Command | nano -

单个破折号告诉nano打开stdin作为寻呼机,或多或少会。

答案 3 :(得分:1)

davymartu的命令“ nano <(cat / var / log / maillog | tai64nlocal)”会由于“ <”和“(”之间的空格而产生语法错误。如果删除该空间(如konsolebox的示例所示),该命令将执行。