如何将命令的输出(例如“echo Hi”)重定向到另一个返回路径的命令的输出,例如“tty”(返回 /dev/pts/1)?

0 command-line bash

如何将命令的输出重定向echo Hi到另一个命令的输出,该命令返回一个路径,例如tty(返回,/dev/pts/1),而不必将输出复制粘贴到这样的命令:

echo Hi > /dev/pts/1 | 
Run Code Online (Sandbox Code Playgroud)

ble*_*ft2 6

关键字是命令替换。你基本上想要一个重定向

$ echo Hi > PROGRAM
Run Code Online (Sandbox Code Playgroud)

但是 PROGRAM 被它自己的输出替换(替代)。$()在您的情况下,这就是语法的作用

$ echo Hi > $(tty)
Run Code Online (Sandbox Code Playgroud)

首先执行tty,然后捕获输出(/dev/pts/1在这种情况下),并$(tty)在执行该行的其余部分之前用它替换,即在那里重定向回声。

您可以在此处Linux 文档项目 中找到更多信息,包括一些可能在其他上下文中变得相关的技术细节。前者涵盖了要点,后者细节更丰富并有示例,但恕我直言有点难以阅读。请注意,Linux 文档项目使用老式的反引号语法。你应该坚持使用$(PROGRAM),因为它更容易嵌套。