Как я перенаправляю вывод команды, например. echo Hi
к выводу другой команды, которая возвращает путь, например. tty
(который возвращается, /dev/pts/1
) не имея необходимость к вставке копии вывод к команде как это:
echo Hi > /dev/pts/1 |
Ключевое слово является заменой команды. Вы по существу хотите перенаправление как
$ echo Hi > PROGRAM
Но где ПРОГРАММА заменяется (замененная) ее собственным выводом. Это что $()
синтаксис делает в Вашем случае
$ echo Hi > $(tty)
Сначала выполняется tty
, затем получает вывод (/dev/pts/1
в этом случае), и замены $(tty)
с ним перед выполняющейся остальной частью строки, т.е. перенаправления эха там.
Можно найти больше информации, включая некоторые технические детали, которые могут стать релевантными в других контекстах, здесь и в проекте документации Linux. Бывшие покрытия суть, последний более богат деталями и имеет примеры, но по моему скромному мнению немного тяжелее читать. Обратите внимание, что проект документации Linux использует старомодный синтаксис обратной галочки. Необходимо придерживаться с $(PROGRAM)
, так как это легче к вложенному множеству.