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

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

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

即不要这样做

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

我想要做

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

什么可以命令是?

答案1

如果你真的希望它只是一个命令,我建议在你的命令中添加如下内容.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寻找可能的替代方案。

答案2

mkdir "NewDirectory" && cd "NewDirectory"

  • 仅当第一个命令成功时,后面的部分&&才会执行。
  • 它被称为命令列表在 Bash 手册中。
  • 还有一个简写版本:

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

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

答案3

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

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

~/.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
}

答案4

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

相关内容