如何用单条命令结合ls检查目录并创建目录?
解决方法
你用ls bar && mkdir bar行不通的原因是:&&仅当前面的命令执行成功(返回值为0)时,才会运行后面的命令。当目录bar不存在时,ls bar会执行失败(返回非0值),所以后续的mkdir不会被触发。
下面是几种可靠的实现方式:
1. 用mkdir的-p参数(最简便)
mkdir自带的-p参数可以直接处理“不存在则创建”的需求,而且如果目录已经存在,也不会抛出错误:
mkdir -p bar
2. 用条件判断语句(更直观)
通过if判断目录是否不存在,再执行创建命令:
if [ ! -d bar ]; then mkdir bar fi
其中:
-d用于检查目标是否是一个存在的目录!表示取反,即“如果目录不存在”
3. 用||运算符(简洁写法)
||的作用是当前面的命令执行失败时,运行后面的命令。这里用目录检查命令替代ls,避免权限等额外问题:
[ -d bar ] || mkdir bar
这个命令的逻辑是:如果bar目录不存在,[ -d bar ]执行失败,就会触发后面的mkdir bar。
内容的提问来源于stack exchange,提问作者Sveppg
相关产品推荐
相关产品推荐

