如何将一个命令的输出(例如)重定向echo Hi
到另一个返回路径的命令的输出(例如tty
(返回,/dev/pts/1
),而不必将输出复制粘贴到这样的命令:
echo Hi > /dev/pts/1 |
答案1
关键词是命令替换. 你本质上想要一个重定向,就像
$ echo Hi > PROGRAM
但是 PROGRAM 被其自己的输出替换。这就是$()
语法的作用,在你的例子中
$ echo Hi > $(tty)
首先执行tty
,然后捕获输出(/dev/pts/1
在本例中),并$(tty)
在执行该行的其余部分之前用它替换,即将回声重定向到那里。
你可以找到更多信息,包括一些可能在其他情况下相关的技术细节,这里并在Linux 文档项目。前者涵盖了要点,后者细节更丰富,并有示例,但恕我直言,阅读起来有点困难。请注意,Linux 文档项目使用老式的反引号语法。您应该坚持使用$(PROGRAM)
,因为它更容易嵌套。