functionshellmkdir

How to mkdir and switch to new directory in one line


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.


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.