& 运算符的行为是什么

& 运算符的行为是什么

我正在尝试链接 linux 中的命令,我使用的是 ubuntu 14.04 发行版。目的是创建一个目录并进入该目录。一般我们这样做

mkdir foldername
cd foldername

完美,当尝试这个时

mkdir gates
cd gates 

按预期工作。但使用时事情并没有按预期工作&

mkdir gates & cd gates,不起作用,错误是no such file or directory。当按下回车键时,它将在下一步中创建目录门。为什么会发生这种情况?但ls & mkdir gates似乎工作正常

答案1

&是个shell 的后台操作符;它将前面的命令置于后台并继续。

所以

mkdir gates &
cd gates

mkdir gates在后台启动并立即运行cd gates,它尝试在创建目录之前更改目录(并失败)。

ls & mkdir gates

有效是因为mkdir gates不依赖任何东西ls;所发生的一切都是ls在后台启动,输出目录列表,同时mkdir创建gates目录。

您可能正在寻找

mkdir gates && cd gates

mkdir仅当成功时才会更改目录;你可能更喜欢

mkdir -p gates && cd gates

如果目录已经存在,则不会失败。

相关内容