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

The*_*ect 22 command-line

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

即而不是做

user@Computer:~$ mkdir NewDirectory
user@Computer:~$ cd NewDirectory
user@Computer:~/NewDirectory$ 
Run Code Online (Sandbox Code Playgroud)

我想要做

user@computer:~$ **command** NewDirectory
user@Computer:~/NewDirectory$
Run Code Online (Sandbox Code Playgroud)

有什么可以在命令呢?

Mic*_*ael 28

如果您真的希望它只是一个命令,我建议在您的.bashrc:

md () { mkdir -p "$@" && cd "$1"; }
Run Code Online (Sandbox Code Playgroud)

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

参见 http://www.commandlinefu.com/commands/view/3613/create-a-directory-and-change-into-it-at-the-same-time也是可能的替代方案。


Rin*_*ind 22

mkdir "NewDirectory" && cd "NewDirectory"


Gil*_*il' 8

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

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

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

mkcd () { mkdir "$1" && cd "$1"; }
Run Code Online (Sandbox Code Playgroud)

重新加载.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
}
Run Code Online (Sandbox Code Playgroud)