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 svc
Alternately, 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
pythoninstead 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
svcissvn commit - The
doanddoneentries are higher thanwhilebecause I sometimes usefor. Thedoentry is higher than thedoneone because I leave off finaldonemore than I'd like. I extended the second one to 12, in case you don't want to look atdoanddone. - While I realize there are performance reasons not to, I use
cat $fname | cmdsall 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, substack