Как насчет того, чтобы просто использовать подоболочку (, как это предлагается в комментариях):
emacs -nw $(<COMMAND GOES HERE>) -f org-mode
Например
emacs -nw $(echo foo) -f org-mode
Откроется "foo" в режиме org -
Используйте read
, чтобы получить имя файла из канала, а затем передать его как переменную вашей команде.
Например, использование шелл-функции (, вероятно, не лучшее название для этого, возможно, вы можете придумать что-нибудь получше):
emacspipe () {
local filename
read filename
emacs -nw "$filename" -f org-mode
}
Затем вы можете использовать:
$ echo foo | emacspipe
Но использование подстановки команд $(...)
, как предлагает другой ответ, определенно является более подходящим способом сделать то же самое. Если у вас есть команда, которую вы можете передать чему-то, вы можете просто запустить ее в блоке $(...)
и передать полученное имя файла в качестве аргумента сценарию или функции, запускающей emacs...