“cd $_”是什么意思?

54

我在教程中看到了这个命令,用于创建一个新目录:

mkdir my-new-project && cd $_
我知道mkdir my-new-project命令用于创建一个新目录,但是cd $_是做什么的?
2个回答

84
$_会扩展为上一个简单命令*的最后一个参数,或者如果上一个命令没有参数,则扩展为前一个命令的参数。

mkdir my-new-project && cd $_

^ 在这里,您有一个由两个简单命令组成的命令。第一个命令的最后一个参数是my-new-project,因此第二个简单命令中的$_将扩展为my-new-project
给出另一个例子:
echo a b; echo $_
#Will output:
#a b
#b

无论如何,mkdir some_dir && cd $_这个组合非常常见。如果你厌倦了输入它,我认为把它变成一个函数是一个好主意:

mkdircd() {
  #Make path for each argument and cd into the last path 
  mkdir -p "$@" && cd "$_" 
}

*

Bash手册中,simple command被定义为"可选变量赋值序列,后跟空格分隔的单词和重定向,并以控制运算符终止。"其中控制运算符指的是 || & && ; ;; ( ) | |& <newline> 中的一个。

实际上,$_ 的作用与我所描述的类似,但只能使用 ||&&;换行符作为控制运算符。


9

7. 如何使用单个命令创建目录并切换到该目录。您可能已经知道,&& 运算符用于执行多个命令, $_ 展开为前一个命令的最后一个参数。

如果您想要快速创建一个目录并进入该目录,可以使用单个命令完成。运行以下命令:

$ mkdir [dir-name] && cd $_

对于那些从Udacity的Git版本控制课程过来的人,HowToForge提供了一个很好的解释,这里


2
一个使用示例是 git clone https://github.com/udacity/course-git-blog-project blog-project && cd $_。这将克隆一个存储库并在新创建的目录中打开。 - low_vision

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接