Я хотел бы запустить следующую команду и передать ее в TextEdit:
pmset -g; echo; pmset -g assertions | open -f -a TextEdit
Это не работает, выполняется только последнее:
Как?
Аааа, bash
перенаправление :-
( pmset -g && echo && pmset -g assertions ) | open -f -a TextEdit
Это запускает ваши команды как единую команду bash (это эффект &&
) во вспомогательной оболочке (что делает ее обертка ()
) и перенаправляет вывод вспомогательной оболочки в TextEdit для вас. Технически вам не нужно использовать &&
вместо, ;
но эффект от его изменения заключается в том, что если какая-либо из команд завершится ошибкой, в этой точке будет остановлена вся цепочка.
Примечание. В вашем примере выполняются все команды (что вы можете доказать, просто запустив pmset -g; echo; pmset -g assertions
их в командной строке), просто вы применяете канал только к последнему. Вот почему его нужно запускать в подоболочке.
Примечание: вы можете заменить |
символ >
и отправить вывод в файл, если хотите.
() объединяют команды в один процесс, объединяя их в стандартный вывод:
(pmset -g; echo; pmset -g assertions) | open -f -a TextEdit
нджбут