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