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.

Daniel Sheffield 1b637b27b9 support other pager/selector and none at all 6 dagar sedan
helpers 1b637b27b9 support other pager/selector and none at all 6 dagar sedan
rc 3b153b8d5f previous approach actually wasn't working 1 vecka sedan
README.md 95a984a5b0 update readme and examples 1 vecka sedan
capture.sh b3462bbe21 move helpers to separate files 6 dagar sedan
recall.sh 1b637b27b9 support other pager/selector and none at all 6 dagar sedan

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