8

我已经使用 linux 控制台有一段时间了。让我恼火的一件事是,每次我使用创建一个新目录时,mkdir我都必须cd更改它。是否有一个命令解决方案可以创建并切换到刚刚创建的目录?

现在我做:

mkdir php5
cd php5

我可不可以做:

mkdir -someswitch php5

我想要一些简单而干净的东西。一个很好的例子是git branch somebranch创建新分支以及git checkout -b somebranch创建并切换到新分支。

4

7 回答 7

8

执行此操作的可移植方法是使用 shell 函数,而不是 bash 函数(使用 bashim 之类的function)。把它放在相关.profile的交互式使用中:

 mkdir () {
    case $1 in
       (-c) command mkdir -p "$2" && cd "$2";;
       (*)  command mkdir "$@";;
    esac
 }

这增加了交互使用的-c选项mkdir。如果没有-c该实用程序,它会像往常一样运行。 - 请注意引用,"$2"因此这适用于名称中带有空格的目录。

于 2013-04-28T10:15:35.073 回答
3

没有什么能阻止您创建自己的别名或小脚本

mkdir $1 && cd $1
于 2013-04-28T09:56:31.327 回答
2

或者你可以使用';' 分隔命令,例如:

mkdir php5.3 ; 光盘 php5.3

于 2013-04-28T10:01:09.017 回答
2

发现了一些魔法:

mkdir foo && cd $_
于 2020-11-23T15:25:10.827 回答
0

一个可以提供帮助的接近答案。它很容易打字。

mkdir php7 && cd !$
于 2017-03-14T19:37:35.083 回答
0

这是我一直在使用的,不确定它是否是最佳实践,但它有效。

function mk() {
    $file = $args[0]
    mkdir $file | cd
}

于 2021-05-06T15:15:28.097 回答
-1

您可以在 bash 中定义一个函数来执行此操作:

function mkcd() {
    mkdir $1 && eval cd $1
}
于 2013-04-28T09:56:49.547 回答