Answers:
尝试mkdir -p
:
mkdir -p foo
请注意,这还将创建任何不存在的中间目录。例如,
mkdir -p foo/bar/baz
将创建目录foo
,foo/bar
以及foo/bar/baz
如果它们不存在。
诸如GNU之类的某些实现作为更易读的别名mkdir
包括在内mkdir --parents
,但是POSIX / Single Unix Specification中未指定此别名,并且在macOS,各种BSD和各种商业Unix等许多常见平台上也不可用,因此应避免使用它。
如果在父目录不存在时想要一个错误,并且在目录不存在时想要创建该目录,则可以test
首先确定目录的存在:
[ -d foo ] || mkdir foo
mkdir
类Unix系统的,而不是关于Windows的。-p
符合POSIX / Single Unix规范是必需的,因此符合这些规范的任何意图都将支持-p
。Windows完全不同,除非您使用Cygwin或MSYS之类的POSIX仿真层。
||
代替,&&
因为这样整行都具有正确的退出状态。重要的是,如果您的Shell与之一起运行,errexit
或者该行是函数的最后一行,请切换大小写(无论如何)。
mkdir
; shell将这样的表达式扩展为传递给的离散参数列表mkdir
。
这应该工作:
$ mkdir -p dir
要么:
if [[ ! -e $dir ]]; then
mkdir $dir
elif [[ ! -d $dir ]]; then
echo "$dir already exists but is not a directory" 1>&2
fi
如果目录不存在,它将创建一个目录,但是如果您要创建的目录的名称已经被目录以外的其他名称使用,则会发出警告。
用一个命令定义复杂的目录树
mkdir -p project/{lib/ext,bin,src,doc/{html,info,pdf},demo/stat/a}
mkdir
本身的功能,而是执行命令的外壳。这被称为大括号扩展-AFAIK,只有Bash,ksh,zsh和C Shell支持它。
folder name
您需要使用folder\ name
)
mkdir foo
即使目录存在也可以工作。要使其仅在名为“ foo”的目录不存在时起作用,请尝试使用该-p
标志。
例子:-
mkdir -p foo
仅当目录不存在时,才会创建名为“ foo”的目录。:)
directory_name = "foo"
if [ -d $directory_name ]
then
echo "Directory already exists"
else
mkdir $directory_name
fi
请参考手册页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)
。由于这个原因,大多数人在使用这些实际路径之前在外壳程序脚本中使用此命令。
您可以使用if循环来检查目录是否存在,如果没有退出,则可以创建目录。
1)dir = / home / dir_name
if [ ! -d $dir ]
then
mkdir $dir
else
echo "Directory exists"
fi
2)您可以使用带有-p选项的mkdir来创建目录。它将检查目录是否不可用。
mkdir -p $dir
mkdir -p还允许创建目录的树结构。如果要使用相同的命令创建父目录和子目录,可以选择mkdir -p
mkdir -p /home/parent_dir /home/parent_dir/child1 /home/parent_dir/child2
这是一个简单的函数(bash shell),可让您创建一个不存在的目录。
#----------------------------------
# Create a directory if it doesn't exist
#------------------------------------
createDirectory() {
if [ ! -d $1 ]
then
mkdir -p $1
fi
}
您可以将上述函数调用为:
createDirectory / tmp / fooDir / BarDir
如果它们不存在,上面的代码将创建fooDir和BarDir。请注意mkdir命令中的“ -p”选项,该选项以递归方式创建目录。希望这可以帮助。
mkdir -p sam
if [ !-d $dirName ];then
if ! mkdir $dirName; then # Shorter version. Shell will complain if you put braces here though
echo "Can't make dir: $dirName"
fi
fi