Canalizando múltiples comandos

8

Me gustaría ejecutar el siguiente comando y canalización de ambos en TextEdit:

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

Esto no funciona, solo ejecuta este último:

¿Cómo?

    
pregunta njboot 18.01.2014 - 00:46

2 respuestas

11

Aahhh, redirección de bash : -

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

Esto ejecuta sus comandos como un solo comando bash (que es el efecto de && ) en un sub-shell (que es lo que lo envuelve en el () ) y redirige la salida del sub-shell a TextEdit para ti. Técnicamente, no tiene que usar && en lugar de ; , pero el efecto de cambiarlo es que si alguno de los comandos falla, detendrá toda la cadena en ese punto.

Nota: en su ejemplo, todos los comandos se están ejecutando (como puede probar simplemente ejecutando pmset -g; echo; pmset -g assertions en la línea de comandos), es solo que está aplicando la canalización solo al último. Es por eso que debe ejecutarse en una subshell.

Nota: podría reemplazar el carácter | con > y enviar la salida a un archivo si lo desea.

    
respondido por el Tony Williams 18.01.2014 - 01:20
4
Los

() combinan los comandos en un solo proceso, concatenándolos a la salida estándar:

(pmset -g; echo; pmset -g assertions) | open -f -a TextEdit
    
respondido por el l'L'l 18.01.2014 - 01:18

Lea otras preguntas en las etiquetas