如何创建目录并将工作目录更改为新目录?

我正在寻找一种方法来创建目录,并使用单个命令将我当前的工作目录更改为新创建的目录。 我怎样才能做到这一点?

即而不是做

user@Computer:~$ mkdir NewDirectory user@Computer:~$ cd NewDirectory user@Computer:~/NewDirectory$ 

我想要做

 user@computer:~$ **command** NewDirectory user@Computer:~/NewDirectory$ 

命令可以是什么?

如果你真的希望它只是一个命令,我建议你的.bashrc添加这样的东西:

 md () { mkdir -p "$@" && cd "$1"; } 

然后在命令行上输入md foo将创建一个名为foo的目录,然后立即将cd插入其中。 请记住,您必须重新加载.bashrc才能使更改生效(即打开新控制台或运行source ~/.bashrc )。

参看 http://www.commandlinefu.com/commands/view/3613/create-a-directory-and-change-into-it-at-the-same-time也可以提供替代方案。

mkdir "NewDirectory" && cd "NewDirectory"

  • &&后面的部分只有在第一个命令成功时才会执行。
  • 它在Bash手册中称为命令列表 。
  • 还有一个速记版本:

     mkdir "NewDirectory" && cd "$_" 
  • 命令行示例:

     $ false && echo "yes" $ true && echo "yes" yes 
  • (编辑)添加“到命令,因为目录可能包含空格。

没有内置函数,但您可以使用shellfunction来帮助您在运行mkdir后不必再次键入cd命令的参数:

  • 键入cd ,然后键入Esc (或Alt + )插入上一个命令的最后一个参数。
  • cd !$在上一个命令的最后一个参数上执行cd
  • Up调出上一个命令行,然后编辑它以将mkdir更改为cd

您可以在~/.bashrc定义一个简单的make-and-change-directory函数:

 mkcd () { mkdir "$1" && cd "$1"; } 

重新加载.bashrc. ~/.bashrc )或重新启动bash,现在可以输入mkcd new-directory

这个简单版本在一些不寻常的情况下失败,涉及奇怪的目录名称或..和符号链接。 这是一个。 有关说明,请参阅此问题的Unix和Linux版本 。

 mkcd () { case "$1" in /*) mkdir -p "$1" && cd "$1";; */../*) (cd "./${1%/../*}/.." && mkdir -p "./${1##*/../}") && cd "$1";; ../*) (cd .. && mkdir -p "${1#.}") && cd "$1";; *) mkdir -p "./$1" && cd "./$1";; esac } 
 mkdir -p "as/many dirs/as you/want" && cd "$_" 

有一个上面列出的解决方案(与我的解决方案相同,但没有-p选项),但我认为它有一些陷阱。

 man mkdir ... -p, --parents no error if existing, make parent directories as needed ... 

这给我们带来了两个好处:

  1. 我们可以一次创建尽可能多的子目录
  2. 如果该目录存在,它将不会抛出错误,我们仍然可以切换到现有目录。

&& cd "$_"将更改为新创建的目录,因为$_保存返回我的mkdir的值