这是一种好奇心。 我可以从bash启动nano编辑器,传递一个管道命令吗? 这是我的情况: 我有一个日期文件,日期格式为tai64。为了打印我的文件,我启动:
$> cat /var/log/qmail/current | tai64nlocal
打印我想要的东西。 但我想在一个命令中以nano或其他编辑器查看此内容。例如:
$> cat /var/log/qmail/current | tai64nlocal > nano
但这不起作用。 有什么建议吗? 提前致谢
答案 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的示例所示),该命令将执行。