J'aimerais exécuter la commande suivante et envoyer le résultat des deux vers TextEdit :
pmset -g; echo; pmset -g assertions | open -f -a TextEdit
Cela ne fonctionne pas, il n'exécute que le dernier :
Comment ?
J'aimerais exécuter la commande suivante et envoyer le résultat des deux vers TextEdit :
pmset -g; echo; pmset -g assertions | open -f -a TextEdit
Cela ne fonctionne pas, il n'exécute que le dernier :
Comment ?
Aahhh, bash
redirection :-
( pmset -g && echo && pmset -g assertions ) | open -f -a TextEdit
Cela exécute vos commandes comme une seule commande bash (c'est l'effet de l'option &&
) dans une sous-coquille (c'est ce qui l'entoure dans la fonction ()
) et redirige la sortie du sous-shell dans TextEdit pour vous. Techniquement, vous n'avez pas besoin d'utiliser &&
au lieu de ;
mais le changement a pour effet que si l'une des commandes échoue, la chaîne entière s'arrêtera à ce point.
Remarque : dans votre exemple, toutes les commandes sont exécutées (comme vous pouvez le prouver en exécutant simplement la commande pmset -g; echo; pmset -g assertions
à la ligne de commande), c'est juste que vous n'appliquez le tuyau qu'au dernier. C'est pourquoi il doit être exécuté dans un sous-shell.
Remarque : vous pouvez remplacer le |
caractère avec >
et d'envoyer le résultat dans un fichier si vous le souhaitez.
LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.