什么'cd $ _'是什么意思?

Muk*_*mar 36 bash

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

mkdir my-new-project && cd $_
Run Code Online (Sandbox Code Playgroud)

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

PSk*_*cik 52

$_扩展到上一个简单命令*的最后一个参数,如果它没有参数,则扩展到上一个命令.

mkdir my-new-project && cd $_
Run Code Online (Sandbox Code Playgroud)

^这里有一个由两个简单命令组成的命令.的最后一个参数,第一个是my-new-project因此$_在第二简单的命令将扩大到my-new-project.

举另一个例子:

echo a b; echo $_
#Will output:
#a b
#b
Run Code Online (Sandbox Code Playgroud)

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

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

*bash手册将一个简单的命令定义为"一系列可选的变量赋值,后跟空格分隔的单词和重定向,并由控制操作符终止. "其中控制操作符指的是其中之一|| & && ; ;; ( ) | |& <newline>.

实际上$_就像我所描述而只用||,&&,;换行的控制操作.


low*_*ion 5

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

很快,如果需要,您可以创建一个目录并使用单个命令移动到该目录。为此,请运行以下命令:

$ mkdir [dir-name] && cd $_
Run Code Online (Sandbox Code Playgroud)

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

  • 一个用法示例是“git clone https://github.com/udacity/course-git-blog-project blog-project &amp;&amp; cd $_”。这将克隆一个存储库并在新创建的目录中打开。 (2认同)