一个用于创建和更改目录的命令

时间:2013-01-03 10:05:18

标签: linux directory command mkdir cd

我正在搜索一个命令 - 没有&&| - 创建一个目录,然后立即将当前目录更改为新创建的目录。 (这是有人为他的“linux-usage”考试得到的一个问题,他做了一个新的命令就是这样做了,但这并不能给他带来积分。)如果重要的话,这是在debian服务器上。

9 个答案:

答案 0 :(得分:50)

我相信你正在寻找这个:

mkdir project1 && cd "$_"

答案 1 :(得分:28)

$HOME/.bashrc中为此目的定义bash 功能,例如

 function mkdcd () {
     mkdir "$1" && cd "$1"
 }

然后在交互式shell中输入mkdcd foodir

如此严格的意义,如果没有包含一些&&(或至少一个;)的 shell函数,您想要实现的目标是不可能的......换句话说,练习的目的是让你理解为什么函数(或别名)在shell中有用....

PS它应该是一个函数,而不是一个脚本(如果它是一个脚本,cd只会影响运行脚本的[sub-] shell,而不会影响交互式父shell);不可能创建一个单独的命令或可执行文件(不是shell函数)来更改调用交互式父shell的目录(因为每个进程都有自己的当前目录,并且只能更改自己进程的当前目录,而不是调用shell进程。)

PPS。在Posix shell中,您应该删除function关键字,并将第一行设为mkdcd() {

答案 2 :(得分:11)

oh-my-zsh 用户:take 'directory_name'
参考:Official oh-my-zsh github wiki

答案 3 :(得分:9)

将以下内容放入.bash_profile(或等效文件)中将为您提供mkcd命令,该命令可以满足您的需求:

# mkdir, cd into it
mkcd () {
    mkdir -p "$*"
    cd "$*"
}

This article更详细地解释了

答案 4 :(得分:5)

我不认为这是可能的,但是对于所有想知道最简单的方法(我知道)不需要你创建自己的脚本的人是:

mkdir /myNewDir/
cd !$

这样您就不需要两次写新目录的名称了。

!$检索最后一个命令($)的最后一个(!)参数。

(还有更多有用的快捷方式,例如!!!*!startOfACommandInHistory。在网上搜索以获取更多信息)

可悲的是mkdir /myNewDir/ && cd !$不起作用:它检索上一个命令的最后一个参数,而不是mkdir命令的最后一个参数。

答案 5 :(得分:1)

也许我没有完全理解这个问题,但

>mkdir temp ; cd temp

生成临时目录,然后更改到该目录。

答案 6 :(得分:0)

mkdir temp ; cd temp ; mv ../temp ../myname

您可以这样命名:

alias mkcd 'mkdir temp ; cd temp ; mv ../temp ../'

答案 7 :(得分:0)

您没有说是否要自己命名目录。

cd `mktemp -d`

将创建一个临时目录并更改为该目录。

答案 8 :(得分:-3)

也许你可以使用一些shell脚本。

shell脚本中的第一行将创建目录,第二行将更改为创建的目录。