How to mkdir and switch to new directory in one line

function, mkdir, shell

Solution

The portable way to do this is with a shell function--not a bash function (using bashims like `function`). Put this in the relevant `.profile` for interactive use:

 mkdir () {
    case $1 in
       (-c) command mkdir -p "$2" && cd "$2";;
       (*)  command mkdir "$@";;
    esac
 }

This adds the `-c` option to `mkdir` for interactive use. Without `-c` the utility acts as it always does.- And note the quoting of `"$2"` so this works with directories with white space in their name.

Problem

I have been using the linux console for some time now. One thing that irritates me is that every time I create a new directory using `mkdir` I have to `cd` to change to it. Is there a single command solution to create and switch to the directory just created? Right now I do: ``` mkdir php5 cd php5 ``` can I do: ``` mkdir -someswitch php5 ``` I want something simple and clean. A good example is `git branch somebranch` which makes new branch and `git checkout -b somebranch` which makes and switches to new branch.

Original source