Dear Monks,
I have a very simple idea, having a 'go' command, that cd's to the most used directories. As I want to 'go' in the shell , I need to write it as a shell function.
So, in the .bashrc file I have:
function go
{
case $1 in
(tmp) cd $HOME/tmp;;
(home) cd $HOME/home;;
esac
}
So I can 'go tmp', 'go home' in the shell and I will go.
OK. So say I want to add a new route, I have to append a new statment on the switch case, say:
function go
{
case $1 in
(tmp) cd $HOME/tmp;;
(home) cd $HOME/home;;
(fd) cd $HOME/foodir;;
esac
}
With requires editing the .bashrc file. I would love to do instead(on the shell):
go --add fd $HOME/foodir
so the .bashrc file is edited the way I would do it (shown above).
Then my approach is, of course, editing the file:
function go
{
if [ $1 = "--add" ];then
perl -pi -ne 's/UNKNOWN/($2) cd $3;;/' ~/.bashrc
fi
case $1 in
(tmp) cd $HOME/tmp;;
(home) cd $HOME/home;;
esac
}
And here comes the extreme power of perl regex. I've been trying to solve the correct regex that would append a new entry on the switch case, but had no luck. If only you monks could help me getting this job done :)