Shell usage |
July 2nd, 2009 |
programming, shell, tech |
I also started thinking about what Sameer does with history: all commands typed go both into a full history file somewhere and a .local_history file in the current directory. The local_history idea I don't like, as it clutters things up a lot, but a full history that's more robust than the shell history would be nice. So I added the lines below to my prompt function in bash:
echo "$(date +%Y-%m-%d--%H-%M-%S) $(hostname) $PWD
$(history | tail -n 1)" >> ~/.full_history
I think this should work, but it's possible that with appending
from multiple places at once it will get clobbered at some point.
I also thought about what commands do I run:
$ cat combined-history | awk '{print $2}' | susrn | head 619 ls 516 find 413 cat 304 python 275 cd 216 svn 215 rm 199 more 130 for 122 svcAlternately, taking into account all the compound commands I run by looking at the commands following pipe and semicolon in addition to line starters:
$ cat combined-history | sed s/'[;|]'/'\nNNN '/g | awk '{print $2}'| susrn | head -n 12 881 grep 620 ls 544 do 536 done 535 sed 524 find 501 python 465 cat 412 while 315 head 283 cd 291 more(combined-history is the result of running
history
in each
shell)
Notes:
- I invoke most python scripts with
python
instead of a shebang. I use a lot of python. - I leave emacs running most of the time in its own windows. So it doesn't show up.
- The command
svc
issvn commit
- The
do
anddone
entries are higher thanwhile
because I sometimes usefor
. Thedo
entry is higher than thedone
one because I leave off finaldone
more than I'd like. I extended the second one to 12, in case you don't want to look atdo
anddone
. - While I realize there are performance reasons not to, I use
cat $fname | cmds
all the time. It's much more consistent because then everything follows the same pattern. Bash could consider optimizing "cat single-arg | cmds
" to "< single-arg cmds
".
Comment via: facebook