Originally published at hoelz.ro
A common pattern in my shell usage is something like this:
  $ mkdir a-directory-name
  $ cd !$
For those of you who aren't familiar with it, !$ is a Bash history expansion for the last argument of the previous command - so my example above creates a directory and then cd's into it.  However, this trick doesn't apply when using the single argument form of git clone:
  $ git clone hoelzro:linotify
  $ cd !$
  bash: cd: hoelzro:linotify: No such file or directory
So I augmented Bash's cd function to work in this context:
cd() {
    if [[ $1 =~ ^hoelzro: && ! -d $1 ]]; then
        cd ${1/hoelzro:/}
    elif [[ $1 =~ github:.*/ && ! -d $1 ]]; then
        cd ${1/github:*\//}
    else
        builtin cd "$@"
    fi
}
I've since converted to Zsh, so I also created a Zsh version as well:
function cd {
    local previous_command
    previous_command=$(fc -nl -1 -1)
    if [[ $previous_command =~ ^git && $previous_command =~ clone ]]; then
        if [[ ! -d $1 && $1 =~ (hoelzro|github): ]]; then
            local destination
            destination=$1
            destination=${destination#(github:*/|hoelzro:)}
            destination=${destination%[.git]}
            builtin cd "$destination"
            return
        fi
    fi
    builtin cd "$@"
}
So now when I cd !$ after a git clone, my shell enters the copy of the repository I just cloned!  Both of these rely on using remote shortcuts, but since I use those almost exclusively, this works for me!
 

 
    
Top comments (2)
I know it's not addressing the crux of your post, but
Alt-.does the last word on the previous command.So I do:
and I am happy :)
Yeah,
Alt-.is a great alternative to!$!