我只搜索一个命令——没有&&
或没有|
——它创建一个目录,然后立即将您的当前目录更改为新创建的目录。(这是某人为他的“linux-usage”考试而得到的一个问题,他做了一个新命令来做到这一点,但这并没有给他分数。)如果重要的话,这是在 debian 服务器上。
9 回答
我相信你正在寻找这个:
mkdir project1 && cd "$_"
为此目的在您的例如定义一个bash函数$HOME/.bashrc
function mkdcd () {
mkdir "$1" && cd "$1"
}
然后输入mkdcd foodir
您的交互式外壳
所以严格意义上来说,如果没有包含一些(或至少一个)的shell 函数,你想要实现的目标是不可能的......换句话说,练习的目的是让你理解为什么函数(或别名)在一个壳....&&
;
PS它应该是一个函数,而不是一个脚本(如果它是一个脚本,cd
只会影响运行脚本的[sub-] shell,而不是交互式父shell);不可能创建单个命令或可执行文件(不是 shell 函数)来更改调用交互式父 shell 的目录(因为每个进程都有自己的当前目录,您只能更改自己进程的当前目录,不属于调用 shell 进程)。
聚苯乙烯。在 Posix shell 中,您应该删除function
关键字,并将第一行设为mkdcd() {
对于oh-my-zsh用户:take 'directory_name'
参考:官方 oh-my-zsh github wiki
将以下内容放入您的 .bash_profile (或等效项)中将为您提供一个可以满足mkcd
您需要的命令:
# mkdir, cd into it
mkcd () {
mkdir -p "$*"
cd "$*"
}
这篇文章更详细地解释了它
我认为这是不可能的,但对于所有想知道不需要您创建自己的脚本的最简单方法(据我所知)的人来说:
mkdir /myNewDir/
cd !$
这样你就不需要写两次新目录的名字了。
!$
检索最后$
一个命令 ( !
) 的最后一个 ( ) 参数。
(还有更多有用的快捷方式,如!!
、!*
或!startOfACommandInHistory
。在网上搜索以获取更多信息)
遗憾的是mkdir /myNewDir/ && cd !$
不起作用:它检索上一个命令的最后一个参数,而不是命令的最后一个mkdir
。
也许我没有完全理解这个问题,但是
>mkdir temp ; cd temp
创建临时目录,然后更改为该目录。
mkdir temp ; cd temp ; mv ../temp ../myname
你可以这样别名:
alias mkcd 'mkdir temp ; cd temp ; mv ../temp ../'
您没有说是否要自己命名目录。
cd `mktemp -d`
将创建一个临时目录并更改为它。
也许你可以使用一些 shell 脚本。
shell 脚本中的第一行将创建目录,第二行将更改为创建的目录。