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?
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?
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.
() combinan los comandos en un solo proceso, concatenándolos a la salida estándar:
(pmset -g; echo; pmset -g assertions) | open -f -a TextEdit
Lea otras preguntas en las etiquetas bash macos command-line unix