Piping multiple commands I would like to run the following command and pipe stout of both to TextEdit:

pmset -g; echo; pmset -g assertions | open -f -a TextEdit 


This doesn't work, it only executes the latter:

How?
Aahhh, bash redirection :- 

( pmset -g &amp;&amp; echo &amp;&amp; pmset -g assertions ) | open -f -a TextEdit


That runs your commands as a single bash command (that's the effect of &amp;&amp;) in a sub-shell (which is what wrapping it in the () does) and redirects the output of the sub-shell into TextEdit for you. You technically don't have to use &amp;&amp; instead of ; but the effect of changing it is that if any of the commands fail it will stop the entire chain at that point.

Note: In your example all the commands are being run (as you can prove by just running pmset -g; echo; pmset -g assertions at the command line), it's just that you are applying the pipe to only the last one. That's why it needs to be run in a subshell.

Note: that you could replace the | character with &gt; and send the output to a file if you wish.