Using output of previous commands in bash
Since the amount of output is indeterminate, it doesn't make sense for bash
to store it for you for re-display. But there's an alternate solution to your problem:
The tee
command allows you to duplicate an output stream to a file. So if you're willing to use a file for temporary storage, you can do something like this:
make | tee output.txt
grep "warning" output.txt
This solution avoids running make
twice, which could be (a) expensive and (b) inconsistent: the second make may be doing less work than the first because some targets were already made the first time around.
Note: I haven't tried this. You may need to fiddle with joining the error and output streams, or such.
You could do this:
make
!! | grep "warning"
By using !!
you tell it to repeat the last command in that spot, along with any other bash commands you want to add to it.
The downside is that if the command you are repeating takes a long time to execute, you'll have that much longer to wait unless you stored the output of the previous command to an output file first.