关于shell:只有在目录不存在的情况下,才能使用mkdir?

How to mkdir only if a dir does not already exist?

我正在编写一个shell脚本,在AIX上的kornshell(ksh)下运行。我想使用mkdir命令创建一个目录。但是目录可能已经存在,在这种情况下,我不想做任何事情。因此,我想测试一下目录是否不存在,或者取消mkdir在创建现有目录时抛出的"文件存在"错误。

有没有想过如何最好地做到这一点?


mkdir -p试试:

1
mkdir -p foo

请注意,这也将是任何中间创建目录不存在,例如,

1
mkdir -p foo/bar/baz

将创建一个目录foofoo/barfoo/bar/baz,如果他们不存在。

在一些实施的GNU mkdirmkdir --parents别名更可读,但是这是没有指定在POSIX /单一UNIX规范和不可用的许多共样的MacOS平台上,不同的BSD操作系统,以及各种商业UNIX衍生品,它应该可以避免的。

如果你想当一个错误的父目录不存在,如果它要创建的目录不存在testT,然后你可以在目录:生存的第一

1
[ -d foo ] || mkdir foo


这应该工作。

1
$ mkdir -p dir

或:

1
2
3
4
5
if [[ ! -e $dir ]]; then
    mkdir $dir
elif [[ ! -d $dir ]]; then
    echo"$dir already exists but is not a directory" 1>&2
fi

这将创建一个目录,如果它不是你的存在,但警告称,如果名称的目录你想利用的东西已经创建的是一个比其他目录。


使用的P -标志。

1
2
man mkdir
mkdir -p foo

一个复杂的目录树和相关的命令

1
mkdir -p project/{lib/ext,bin,src,doc/{html,info,pdf},demo/stat/a}


如果你不想显示的任何错误信息:

1
[ -d newdir ] || mkdir newdir

如果你想给自己的错误消息:

1
[ -d newdir ] && echo"Directory Exists" || mkdir newdir

真想和老

1
mkdir /tmp/qq >/dev/null 2>&1

将你想要的没一个有带有竞有其他的解决方案。

有时,简》(与ugliest)解决方案是最佳的。


即使mkdir foo作品目录存在。使它工作,如果目录不存在的——"foo",尝试采用-p旗。

例子:

1
mkdir -p foo

这将创建一个目录——"foo"如果它不存在。的:)


1
2
3
4
5
6
7
8
directory_name ="foo"

if [ -d $directory_name ]
then
    echo"Directory already exists"
else
    mkdir $directory_name
fi

系统不支持P +交换了在线的Windows 8系统。

你可以使用这个。

1
IF NOT EXIST dir_name MKDIR dir_name


或如果你想检查它的存在:第一

1
2
3
if [[ ! -e /path/to/newdir ]]; then
            mkdir /path/to/newdir
fi

这是测试的存在和Korn外壳。

你也可以尝试在Korn shell googling手册。


所以,如果你可以使用循环或不存在,如果CT检查目录,如果它不存在时创建目录。

1)DIR dir name = /家庭/ _

1
2
3
4
5
6
if [ ! -d $dir ]
then
     mkdir $dir
else
     echo"Directory exists"  
fi

你可以使用2)与P -目录mkdir创建目录的选项。它会检查,如果是一个目录,它将不可用。

1
mkdir -p $dir

也能够到P - mkdir创建目录树的结构。如果你想创建目录的父和儿童使用相同的命令,可以选择:P

1
mkdir -p /home/parent_dir /home/parent_dir/child1 /home/parent_dir/child2


对人referring - pman mkdir选项页

1
2
   -p, --parents
          no error if existing, make parent directories as needed

这将创建一个目录中的所有给定的路径,如果存在,否则它抛出的错误,从左到右的所有目录扩展在给定的路径。试试下面的命令。该目录是不是存在newdiranotherdir发行前的命令

正确的用法

mkdir -p /tmp/newdir/anotherdir

你可以自动执行命令后的国有企业和anotherdirnewdir创建/tmp。你可以命令你的许多问题需要时间,总是有exit(0)命令。由于这个原因,大多数人使用的shell脚本命令中使用的那些在当前路径。


1
mkdir -p sam
  • 为使目录mkdir
  • P=————父母
  • (如果存在误差,使所需的父目录)

这是一个简单的函数(Bash)让你创建一个目录,如果它是不是存在。

1
2
3
4
5
6
7
8
9
#----------------------------------
# Create a directory if it doesn't exist
#------------------------------------
createDirectory() {
    if [ ! -d $1 ]
        then
        mkdir -p $1
    fi
}

你可以调用上述函数:

createDirectory /tmp/fooDir/BarDir

上述bardir foodir和扩展,如果他们不存在。注意选项中的"P"命令mkdir创建目录recursively它。希望这帮助。