Create and change to a new directory in a single shell command

by Vivek Gite on March 16, 2007 · 4 comments

Q. How do I create a new directory and change to same in a single command? For example I need to create a directory called foo and change to same
mkdir foo
cd foo

How do I run both command at a time?

There is no such command exists that can create and change directory in a one pass. However you can create a shell function or alias to automate this task.

Howto creating and changing into a new Directory same time

Add following function to your bash startup file ~/.bash_profile or ~/.bashrc
$ vi ~/.bashrc
Append mcd() code:

mcd ()
{
    if [ "$1" == "" ]; then
        echo "mcd directory-name";
    else
        if [ ! -d $1 ]; then
            mkdir $1;
            cd $1;
        else
            echo "$1 directory exists";
        fi;
    fi
}

Save and close the file. Logout and login again or type the following command:
$ . ~/.bashrc

Now use mcd command:
$ mcd foo
$ pwd

Featured Articles:

Share this with other sys admins!
Facebook it - Tweet it - Print it -

{ 4 comments… read them below or add one }

1 Hanifa April 24, 2007

HI,
I have found your tutorial useful but I’d like a clarify something. Is it required to place the semi-colon like as in C/C++ or not .
Cos I have seen u put ; for one fi and not for the other one.
I have tried without putting ; for any of the statement and it also works.
So is the semicolon neccesary.
thanks

Reply

2 Duane July 10, 2007

Hi,

If you use “mkdir -p $1;” then you can make nested directories.

For example, mcd new_project/images

Cheers.

Reply

3 Sy Ali July 22, 2007

Just a quick thanks. I’ve been using a simplified version of this, but I like your version a lot. =)

Reply

4 slink February 21, 2008

Instead of using “==” you may choose “=” for testing equality, hence the method mentioned above would run on other shells, too.

Reply

Leave a Comment

You can use these HTML tags and attributes for your code and commands: <strong> <em> <ol> <li> <u> <ul> <blockquote> <pre> <a href="" title="">
What is 10 + 4 ?
Please leave these two fields as-is:
Solve the simple math so we know that you are a human and not a bot.



Previous post:

Next post: