34 votes

Sortie de la dernière commande shell

Dans un shell linux, est-il possible de retourner la sortie de la dernière commande. Je me rends compte que je pouvais avoir les canalisations ou envoyé à la sortie vers un fichier, mais mon exigence est de récupérer la sortie après la commande a été exécutée.

À l'aide de csh, mais aimerions entendre au sujet de n'importe quel environnement.

Edit Pour le contexte: Pas jusqu'à mi-chemin par le biais de 3 heures de script de build, je vais me souvenir que je veux voir quelque chose au début de la sortie une fois que c'est fait. À ce stade, j'ai dépassé le nombre de lignes dans mon terminal, de sorte que je ne peux pas faire défiler jusqu'à le voir (ou le début est dur à trouver). Bien sûr, je peux être mieux à propos de l'enregistrement de mon résultat, mais j'ai toujours été curieux de savoir si c'était possible.

33voto

Nicholas Knight Points 9293

Pas de. La sortie d'un programme ne se passe jamais au travers de l'enveloppe entre ses mains. Sans redirection, il va directement à l'ATS. Avec la redirection, il va droit à tout fichier ou d'un tuyau, il a été dirigé. La coque n'a aucune idée de ce que le processus envoyé sur la sortie standard stdout/stderr.

19voto

sarnold Points 62720

script(1) est exactement ce dont vous avez besoin:

script
make
exit
vim typescript

L' script programme va commencer une nouvelle coque et enregistrer l'entrée et la sortie de l' typescript le fichier. Lorsque vous avez terminé, il suffit de fermer la coque exit ou ^D. Si vous préférez ne pas commencer un nouveau shell, mais il suffit d'exécuter votre build, vous pouvez utiliser: script -c <command>.

8voto

David Woods Points 386

Si vous exécutez à nouveau la commande ne va pas changer quoi que ce soit, vous pouvez l'utiliser !! pour accéder à la partie supérieure de l'histoire de la pile à nouveau exécuter la dernière commande. Le faire dans les backticks vous permettra d'utiliser le résultat.

$> find . -iname fileInUnknownLocationInHierarchy.txt
./something/buried/deep/where/you/dont/want/to/retype/fileInUnknownLocationInHierarchy.txt
$> vim `!!`

3voto

mhd Points 732

Cela pourrait devenir très salissant avec certaines commandes qui utilisent l'adressage du curseur. Quel est le résultat de votre vim session? Ou un peu plus sain exemple: Vous êtes le téléchargement d'un fichier avec wget, et il montre une barre de pourcentage allant de 0% à 100%. Quel est le résultat de tout cela?

Je pense que fondamentalement, vous voulez une copie de quoi que ce soit entre votre ligne actuelle et la précédente invite. Ce n'est pas quelque chose de shell redirection serait un bon exemple, c'est fondamentalement quelque chose d'un terminal ferait. Vous pourriez le faire manuellement en copiant et en collant à l'écran, et vous pourriez peut-être l'automatiser avec ses exec commande. tmux pourrait avoir quelque chose de similaire, et vous pouvez faire des choses bizarres avec la coquille mode(s) d'Emacs, mais c'est plutôt un poids lourd de la solution. rxvt-unicode a une extension perl...

2voto

NawaMan Points 10266

Comment sur l'utilisation de la substitution. Comme ceci:

command1
command2
RESULT=`LASTCOMMAND`
echo $RESULT

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X