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