“cd &”是什么意思?

GLe*_*enn 8 shell cd-command

我知道如何通过键入从终端更改目录

cd <directory>
Run Code Online (Sandbox Code Playgroud)

但这是场景。我正在使用终端来访问我的 git 存储库的文件夹。

  • 格伦存储库
    • glenn-remdroid-repository

鉴于上面的文件夹结构,我想切换,glenn-remdroid-repository因为它是我的存储库。

cd glennRepositories
Run Code Online (Sandbox Code Playgroud)

在切换 glenn-remdroid-repository 之前,我错误地输入了命令

cd & 
Run Code Online (Sandbox Code Playgroud)

而不是cd *. 我用的cd *是因为文件夹名对我来说很长,抱歉懒惰。

当我执行时cd &,终端回复

[1] 7519
Run Code Online (Sandbox Code Playgroud)

当我执行时cd *,现在发生了

[1]+  Done                    cd  (wd: ~/glennRepositories)
(wd now: ~/glennRepositories/glenn-remdroid-repository)
Run Code Online (Sandbox Code Playgroud)

有没有人是什么cd &意思及其输出?谷歌不知道我的问题:)

Mir*_*kár 21

通过&在命令行的末尾写入,您正在指示您的 shell 获取命令管道(在本例中为单个命令)并在后台的子 shell 中运行它(而不是等待结果)。cd是一个内置的 bash,但这在这里并不重要。它不会以任何方式影响您的“父”shell,因此您的工作目录不会改变。

[1] 7519
Run Code Online (Sandbox Code Playgroud)

这一行报告说有一个作业在后台运行,由数字 1 标识,进程 ID 是 7519。如果你运行例如vim然后按Ctrl+Z暂停它,则会打印类似的东西。当进程完成时,shell 将不会报告,直到下一个处理周期(例如Return再次点击),然后它将打印更新列表作业完成。

有关更多详细信息,请阅读man bash和 部分JOB CONTROL

供参考,这个问题为什么不起作用exit &有一些相似之处。