record-commands 955 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #!/bin/bash
  2. # Set up command recording wrapper
  3. [ -z "$WRAPDIR" ] && WRAPDIR="$PWD"/record-commands && RM=$(which rm)
  4. [ -z "$LOGPATH" ] && export LOGPATH="$PWD"/log.txt
  5. if [ ${#BASH_SOURCE[@]} -lt 2 ] && [ $# -eq 0 ]
  6. then
  7. echo "usage: WRAPDIR=dir LOGPATH=log.txt record-commands COMMAND..."
  8. echo 'Then examine log.txt. "record-commands echo" to just setup $WRAPDIR'
  9. exit 1
  10. fi
  11. if [ ! -x "$WRAPDIR/logpath" ]
  12. then
  13. mkdir -p "$WRAPDIR" && PREFIX="$WRAPDIR/" scripts/single.sh logpath || exit 1
  14. echo "$PATH" | tr : '\n' | while read DIR
  15. do
  16. find "$DIR/" -type f,l -maxdepth 1 -executable -exec basename {} \; | \
  17. while read FILE
  18. do
  19. ln -s logpath "$WRAPDIR/$FILE" 2>/dev/null
  20. done
  21. done
  22. fi
  23. # Delete old log (if any)
  24. rm -f "$LOGPATH"
  25. # When sourced, set up wrapper for current context.
  26. export PATH="$WRAPDIR:$PATH"
  27. if [ ${#BASH_SOURCE[@]} -lt 2 ]
  28. then
  29. "$@"
  30. X=$?
  31. [ ! -z "$RM" ] && "$RM" -rf "$WRAPDIR"
  32. exit $X
  33. fi