如何在linux中检查目录是否存在。?

如何在linux中检查目录是否存在。?,linux,shell,Linux,Shell,给定一个文件路径(例如,/src/com/mot),如何检查mot是否存在,如果它不使用Linux或shell脚本,如何创建它???使用bash/sh/ksh,您可以执行以下操作: if [ ! -d /directory/to/check ]; then mkdir -p /directory/toc/check fi 对于文件,将-d替换为-f,然后您可以对不存在的文件执行所需的任何操作。创建目录,如果该目录已经存在,则不会给出错误。检查目录是否存在 test -d /src/co

给定一个文件路径(例如,
/src/com/mot
),如何检查
mot
是否存在,如果它不使用Linux或shell脚本,如何创建它???

使用bash/sh/ksh,您可以执行以下操作:

if [ ! -d /directory/to/check ]; then
    mkdir -p /directory/toc/check
fi

对于文件,将
-d
替换为
-f
,然后您可以对不存在的文件执行所需的任何操作。

创建目录,如果该目录已经存在,则不会给出错误。

检查目录是否存在

test -d /src/com/mot || mkdir /src/com/mot
if [ -d "$DIRPATH" ]; then
    # Add code logic here 
fi

检查目录不存在

if [ ! -d "$DIRPATH" ]; then
    # Add code logic here
fi

如果您只在目录不存在的情况下检查目录以创建它,那么您最好使用:

mkdir -p /src/com/mot

如果不存在,将创建目录,否则将不执行任何操作。

这是BAIC,但我认为它可以工作。如果您希望有一个动态列表来循环和检查,那么必须设置一些变量

if [ -d /src/com/mot ];
then
    echo Directory found
else
    mkdir /src/com/mot
fi

希望这就是你想要的…

你实际上不需要支票
mkdir-p
不作用于现有目录。这是一个公平的观点。我将把它留在这里,好像给了OP一个框架,以防他们想在
mkdir
之前做其他事情。注意,如果目录是在第一行和第二行之间创建的,这会给出一个竞争条件。@Sjoerd确实如此,但这种竞争条件(尽管概率窗口小得多)如果只使用
mkdir-p
(除非某些文件系统实现并公开原子检查或创建函数调用),也会发生这种情况。至少在上面的代码中,如果对现有目录进行错误调用,mkdir调用不会失败(因为仍然提供了
-p
选项)。@Christian如果您想要原子检查或创建函数,请查看mkdir(2)您缺少“;”在if子句的结尾']'之后。@Chirstian the';'在“]”之后不需要,并且“]”不是右括号。对于命令“[”,后面的“]”只是该命令的一个参数。换行符的作用与分号相同。@williampersell我的评论是关于问题的第一次修订,在“test”命令(或“括号”,很抱歉命名错误)后的“]”后面没有换行符,在这种情况下,“;”在<代码>之前是必需的,不是吗?@christian,是的,要么换行,要么换行;是必需的。当我看到这个问题时,新线已经就位。这是否回答了你的问题?