Wrapper to log stdout and stderr of command run for quick reuse. Useful while developing shell pipelines with long-running commands and for rich command history.

Pi 6de9975c2f make install location configurable 4 months ago
helpers 2abfd5a2d4 make stty a dependency with socat 4 months ago
rc 6de9975c2f make install location configurable 4 months ago
README.md 95a984a5b0 update readme and examples 5 months ago
capture.sh ef80a67a82 set number of rows/cols to match real tty 4 months ago
recall.sh b8b0a1a3d7 fix recall -l when prog starts with ./ 4 months ago

README.md

Recall

  • capture - Save stdout and stderr for every command
  • recall - Reuse stdout for pipeline or otherwise

Examples

I do a find with copious output...

capture find . # stderr and stdout are saved to file and printed to console as usual

Forgot to pipe to less...

recall find | less # pipe last captured output from `find` command to `less`

Now I want to test my grep...

recall find | grep 'pattern' # no-need to run find again, only need the output

Original find command had non-zero exit status due to partial failures...

recall -z find | if [ "$?" == "0" ]; then grep 'pattern'; fi  # suppress error

With aliases in .zshrc and .shrc...

+ find .
@ find | less
@ find | grep 'pattern'

I want to build a complex pipeline with many long running commands...

+ find | + grep 'pattern' | + cut -d '/' -f2  # initial attempt
@ find | + grep 'pattern2' | + cut -d '/' -f2 # ok, grep pattern is right
@ find | @ grep | + cut -d'/' -f2             # good to go

# run full pipeline
find . | grep 'pattern2' | cut -d '/' -f2

I want to see all the captured commands...

@ -l

I want to see only the last 30 captured find commands...

@ -l -n 30 find