我正在寻找一个命令 – 没有&&
或|
– 创build一个目录,然后立即将当前目录更改为新创build的目录。 (这是一个有人为他的“linux使用”考试的问题,他做了一个新的命令,但没有给他的观点)。这是在debian服务器,如果这件事
我相信你正在寻找这个:
mkdir project1 && cd $_
在你的$HOME/.bashrc
中为此目的定义一个bash 函数
function mkdcd () { mkdir "$1" && cd "$1" }
然后在交互式shell中键入mkdcd foodir
所以,严格意义上,如果没有包含一些&&
(或至少是一个)的shell函数 ,你想实现的目标是不可能的……换句话说,这个练习的目的是让你明白为什么函数(或别名)是有用的在壳里…
PS它应该是一个函数,而不是脚本(如果它是一个脚本, cd
将只影响运行脚本的[子]壳,而不是交互式父shell); 因为每个进程都有自己的当前目录,所以不可能做出一个单一的命令或可执行文件(而不是shell函数),因为每个进程都有自己的当前目录,只能改变你自己进程的当前目录,而不是调用shell进程)。
PPS。 在Posix shell中,你应该删除function
关键字,并且第一行是mkdcd() {
把下面的代码放在你的.bash_profile(或者等价的)中会给你一个mkcd
命令来完成你所需要的:
# mkdir, cd into it mkcd () { mkdir -p "$*" cd "$*" }
这篇文章更详细地解释它
对于oh-my-zsh用户: take 'directory_name'
参考: 官方哦-my-zsh github维基
我不认为这是可能的,但所有的人都想知道什么是最简单的方法(我知道)不需要你创建自己的脚本是:
mkdir /myNewDir/ cd !$
这样你就不需要两次写新目录的名字了。
!$
获取最后一个命令( !
)的最后一个( $
)参数。
(有更多有用的快捷方式,如!!
, !*
或!startOfACommandInHistory
。在网上搜索更多信息)
可悲的是, mkdir /myNewDir/ && cd !$
不起作用:它检索前一个命令的最后一个参数,而不是最后一个mkdir
命令。
也许我不完全理解这个问题,但是
>mkdir temp ; cd temp
使临时目录,然后变成该目录。
也许你可以使用一些shell脚本。
shell脚本的第一行将创建目录,第二行将更改为创建的目录。