public
Created

shell recording

  • Download Gist
.zshrc
Shell
1 2 3 4 5 6
# for spyshell
function zshexit() {
cat /Users/`whoami`/.termlogs/`date +%Y-%m-%d`.txt | perl -pe 's/\e([^\[\]]|\[.*?[a-zA-Z]|\].*?\a)//g' | col -b > temp
mv temp /Users/`whoami`/.termlogs/`date +%Y-%m-%d`.txt
exit
}
readme
1 2 3 4 5 6 7 8 9 10 11 12 13
This will help you to record everything you input and all output from your terminal to a file, while you work on your terminal normally.
 
First, put spyshell in /usr/local/bin/
Add the line /usr/local/bin/spyshell in the file /etc/shells
Do `chsh -s /usr/local/bin/spyshell`
Add the zshexit function in your .zshrc file.
 
This will create a file in ~/.termlogs/ named with the date, and will append till the day is over. The output is also stripped from any non-printable characters.
You can modify it so that it launches bash, or any other shell, change the location of the logs, as well as the names.
 
 
 
credits: a gist I cannot find, and a lot googling..
spyshell
Shell
1 2 3 4 5 6 7 8 9 10 11
#!/bin/bash
 
script="/usr/bin/script"
SHELL="/usr/local/bin/zsh"
 
if [ -z "$SPYSHELL" ]; then
export SPYSHELL=yes
$script -aq -t 0 /Users/`whoami`/.termlogs/`date +%Y-%m-%d`.txt
else
exec $SHELL
fi

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.