Gostaria de executar o seguinte comando e pipe stout de ambos no TextEdit:
pmset -g; echo; pmset -g assertions | open -f -a TextEdit
Isso não funciona, apenas executa o último:
Quão?
fonte
Gostaria de executar o seguinte comando e pipe stout de ambos no TextEdit:
pmset -g; echo; pmset -g assertions | open -f -a TextEdit
Isso não funciona, apenas executa o último:
Quão?
Aahhh, bash
redirecionamento: -
( pmset -g && echo && pmset -g assertions ) | open -f -a TextEdit
Isso executa seus comandos como um único comando bash (esse é o efeito de &&
) em um sub-shell (que é o que o envolve ()
) e redireciona a saída do sub-shell para o TextEdit para você. Você tecnicamente não tem que usar &&
em vez de ;
, mas o efeito da mudança é que, se qualquer um dos comandos falhar ele irá parar toda a cadeia nesse ponto.
Nota: No seu exemplo, todos os comandos estão sendo executados (como você pode comprovar executando apenas pmset -g; echo; pmset -g assertions
na linha de comando), apenas aplicando o canal apenas ao último. É por isso que ele precisa ser executado em um subshell.
Nota: você pode substituir o |
caractere >
e enviar a saída para um arquivo, se desejar.
() combinam os comandos em um único processo, concatenando-os para stdout:
fonte