我正在编写一个在AIX的KornShell(ksh)下运行的shell脚本。我想使用mkdir
命令来创建一个目录。但这个目录可能已经存在,在这种情况下我不想做任何事情。所以我想测试一下该目录是否存在,或者抑制mkdir
在试图创建现有目录时抛出的"文件存在"错误。
有什么好的建议吗?
mkdir foo
即使在目录存在的情况下也能工作。
要使它只在名为"foo".的目录不存在时工作,请尝试使用-p
标志。
目录不存在的情况下,尝试使用-p
标志。
例子:--{{5675218}}。
mkdir -p foo
这将创建名为"foo"的目录。 的目录,只有当它不存在时才会创建。 :)
directory_name = "foo"
if [ -d $directory_name ]
then
echo "Directory already exists"
else
mkdir $directory_name
fi
你可以使用if循环检查目录是否存在,如果不存在则退出,然后创建目录。
if [ ! -d $dir ]
then
mkdir $dir
else
echo "Directory exists"
fi
mkdir -p $dir
mkdir -p还允许创建目录的树形结构。 如果你想用同一个命令创建父目录和子目录,可以选择mkdir -p。
mkdir -p /home/parent_dir /home/parent_dir/child1 /home/parent_dir/child2
参阅man mkdir网页上的选项-p
。
-p, --parents
no error if existing, make parent directories as needed
它将创建给定路径中的所有目录,如果存在则不会产生错误,否则将创建给定路径中从左到右的所有目录。
试试下面的命令。
newdir
和anotherdir
这两个目录不存在的情况下,使用这个命令。
正确的用法
mkdir -p /tmp/newdir/anotherdir
。
执行该命令后,你可以看到在/tmp下创建了newdir
和anotherdir
。
你可以随意地发出这个命令,但这个命令总是有exit(0)
。
由于这个原因,大多数人在使用这些实际路径之前都会在shell脚本中使用这个命令。
这是一个简单的函数(bash shell),可以让你创建一个不存在的目录。
#----------------------------------
# Create a directory if it doesn't exist
#------------------------------------
createDirectory() {
if [ ! -d $1 ]
then
mkdir -p $1
fi
}
你可以将上述函数调用为.txt。
&gt.createDirectory /tmp/fooDir/BarDir 创建目录/tmp/fooDir/BarDir。
如果fooDir和BarDir不存在,上面会创建它们。 注意mkdir命令中的"-p" 选项,它以递归方式创建目录。 希望对大家有所帮助。
mkdir -p sam