Mar*_*lea 52
我相信你在寻找这个:
mkdir project1 && cd "$_"
Run Code Online (Sandbox Code Playgroud)
Bas*_*tch 28
定义一个bash 功能,在您为此$HOME/.bashrc例如
function mkdcd () {
mkdir "$1" && cd "$1"
}
Run Code Online (Sandbox Code Playgroud)
然后输入mkdcd foodir您的交互式shell
如此严格的感觉,如果没有包含一些(或至少一个)的shell函数,你想要达到的目标是不可能的......换句话说,练习的目的是让你理解为什么函数(或别名)在一个函数中是有用的.贝壳....&&;
PS它应该是一个函数,而不是一个脚本(如果它是一个脚本,它cd只会影响运行脚本的[sub-] shell ,而不会影响交互式父shell); 不可能创建一个单独的命令或可执行文件(不是shell函数)来更改调用交互式父shell的目录(因为每个进程都有自己的当前目录,并且只能更改自己进程的当前目录,不是调用shell进程).
PPS.在Posix shell中,您应该删除function关键字,并且第一行是mkdcd() {
Avi*_*pta 13
对于oh-my-zsh用户:take 'directory_name'
参考:官方哦-my-zsh github wiki
将以下内容放入.bash_profile(或等效文件)中将为您提供一个mkcd命令,它可以满足您的需求:
# mkdir, cd into it
mkcd () {
mkdir -p "$*"
cd "$*"
}
Run Code Online (Sandbox Code Playgroud)
本文将更详细地解释它
我认为这是不可能的,但是让所有人都想知道(我知道)最简单的方法是什么:不需要我创建自己的脚本,这是:
mkdir /myNewDir/
cd !$
Run Code Online (Sandbox Code Playgroud)
这样,您无需两次写入新目录的名称。
!$检索上$一个命令(!)的last()参数。
(有这样的更加有用的快捷键,比如!!,!*或者!startOfACommandInHistory。搜索在网上获取更多信息)
可悲的是,mkdir /myNewDir/ && cd !$它不起作用:它检索上一个命令的最后一个参数,而不是命令的最后一个mkdir。