繁体   English   中英

linux中感叹号是什么意思?

[英]what does exclamation mark mean in linux?

我一直在学习一些在线课程,他们要求我从 GitHub 克隆一个存储库,如下所示......

克隆包含此实验室所需工件的 git 存储库(如果尚不存在)。

[ ! -d 'cc201' ] && git clone https://gitlab.com/ibm/skills-network/courses/cc201.git

但是,我不明白下面的命令

[ ! -d 'cc201' ]

这有什么用?? 谁能知道它到底是干什么用的!?

感叹号表示“Not”(如布尔值),- -d标志表示 bash 中存在的文件夹。

所以它本质上是一个条件,它说:“如果名为'cc201'的文件夹不存在,那么做一些事情

请注意! Linux (操作系统)中没有特殊含义,而是在 Linux 中的几个标准程序中。 在您的情况下,它不是 bash 的一个功能(正如 Mark Bramnik 在他的其他正确答案中声称的那样),而是称为test[的标准程序的功能。 由于 bash 在内部模拟此命令,因此它当然必须解释! 同样,但可以通过执行man test找到定义,它被描述为:

 ! EXPRESSION EXPRESSION is false

实际上,bash确实有一个! 也具有相关但不相同的含义。 如果您通过前缀来调用程序! , IE

! prog

bash中设置的退出代码为0;如果PROG与非零退出代码终止,并且将其设置为1,如果PROG,退出代码零终止。 因此,你可以写

[ ! -d cc201 ]

同样好

! [ -d cc201 ]

整体效果是一样的,但前者是! 来自test ,它反过来被 bash 模拟,而后者是 bash 的内置 ststus-code 否定器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM