Monday, 15 October 2007

Interactive shell

I work entirely in the shell. I don't really need more :) But I spend most of mine time typing ls, emacs [somefile], mv this rm that and lots of less. Further I repeat a lot of commands, especially when I am programming. Some stats out of my .bash_history. (1000 lines)
63 x make
159 x ls
22 x rm
101 x cp
42 x emacs
25 x less
$cat .bash_history | sort | uniq | wc
from 1000. So 641 commands are repeated.

You get the idea. So I am a computer programmer, I am lazy, what I can I do against this?
Create an interactive shell.
The shell sits there and waits. As soon as you hit any key (not Enter or Space) it goes into a special configured mode. And then does appropriate. So if I want to ls a dir, I just type 'l' and then this resolves to ls. If I want to edit a file I type 'e' and then the file name.
This is in somewhat different to alias. As you don't have to hit space. A little example:
I want to edit a file:
bash : em [TAB] [SPACE] file [ENTER]
alias : e [SPACE] file [ENTER] (assumeing alias e=emacs)
dash : e file [ENTER]

Further you can suggest auto completion based on what you normally type. If you have completed a command and you hit enter again it will just repeat the command. This should get rid of about 80 % percent of the stuff I type into the shell.

In 1000 shell commands I had to type a space after 756 commands. (Remember 159 are only ls)
$cat .bash_history | grep -E "[a-zA-Z] ." | wc -l

If you hit space you will drop down to normal bash. So you can start creating the wonderful piped commands.


William said...

Ok didi im confused

whats wrong with "alias"

vext01 said...

whats going on here?

vext01 said...

look at alias or tab completion?