dans Mathematica, il est possible de réutiliser la sortie de la commande précédente en utilisant%.
est quelque chose de similaire possible pour bash (ou une autre coquille)? p>
Par exemple, je gère un Faites qui donne des avertissements, mais je veux trouver tous les avertissements.
Donc, je tape p> mais je ne peux pas voir la sortie de la marque alors. P> Je voudrais taper quelque chose comme ça : p>
5 Réponses :
Étant donné que la quantité de sortie est indéterminée, elle n'a pas de sens pour La commande Cette solution évite d'exécuter Note: je n'ai pas essayé cela . Vous devrez peut-être vouloir jouer avec rejoindre les flux d'erreur et de sortie, ouc. p> p> bash code> pour la stocker pour vous pour réafficher. Mais il y a une solution alternative à votre problème: tee code> vous permet de dupliquer un flux de sortie à un fichier. Donc, si vous êtes prêt à utiliser un fichier de stockage temporaire, vous pouvez faire quelque chose comme ceci: p> faire code> deux fois, qui pourrait être (a) coûteux et (b) incohérent: la deuxième marque peut faire moins de travail que le premier parce que certaines cibles étaient déjà effectuées la première fois. P>
Droit. Il n'a pas de sens à stocker toute la sortie. La commande TEE semble utile cependant. Et je l'ai essayé. Fonctionne parfaitement. Merci.
Je ne sais pas si la commande il redirigera starr to stdout. p> devrait également noter que vous ne pouvez pas grep quelque chose qui ne va pas sur stdout. p> p > marque code> envoie des avertissements à stards mais je soupçonne que cela fait. Essayez ceci
Si vous utilisez TEE pour dupliquer le flux de sortie vers / dev / stadr, il n'y a pas besoin de fichier temporaire; De plus, après cela, vous pouvez filtrer le flux STDOUT avec SED pour créer un fichier make_warning.log - tout dans une ligne de tuyaux de coque UNIX.
make 2>&1 | tee /dev/stderr | \ sed -E -n 's/(.*[Ww][Aa][Rr][Nn][Ii][Nn][Gg].*)/\1/p' > make_warning.log
Swap the stdout code> et STDERR code> Pour enregistrer l'ensemble de l'ensemble starr code> flux: make 3>&2 2>&1 1>&3 3>&- | tee /dev/stderr > stderr.log
vous pouvez faire ceci: à l'aide de L'inconvénient est que si la commande que vous répétez prend beaucoup de temps à exécuter, vous aurez beaucoup plus de temps à attendre que si vous avez stocké la sortie de la commande précédente à une sortie. Fichier d'abord. P> p> !! code> Vous le direz de répéter la dernière commande à cet endroit, ainsi que de toutes les autres commandes Bash que vous souhaitez. Pour ajouter à celui-ci. P>