Bri*_*ell 3006
试试mkdir -p:
mkdir -p foo
Run Code Online (Sandbox Code Playgroud)
请注意,这也将创建不存在的任何中间目录; 例如,
mkdir -p foo/bar/baz
Run Code Online (Sandbox Code Playgroud)
将创建目录foo,foo/bar以及foo/bar/baz如果它们不存在.
像GNU这样的一些实现mkdir包含mkdir --parents一个更易读的别名,但这在POSIX/Single Unix Specification中没有规定,并且在许多常见平台上都没有,比如macOS,各种BSD和各种商业Unix,所以应该避免使用它.
如果您希望在父目录不存在时出错,并且想要创建目录(如果该目录不存在),那么您可以test首先存在该目录:
[ -d foo ] || mkdir foo
Run Code Online (Sandbox Code Playgroud)
Aln*_*tak 159
这应该工作:
$ mkdir -p dir
Run Code Online (Sandbox Code Playgroud)
要么:
if [[ ! -e $dir ]]; then
mkdir $dir
elif [[ ! -d $dir ]]; then
echo "$dir already exists but is not a directory" 1>&2
fi
Run Code Online (Sandbox Code Playgroud)
如果目录不存在,它将创建目录,但警告您,您尝试创建的目录的名称是否已被目录以外的其他目录使用.
jim*_*orr 82
使用-p标志.
man mkdir
mkdir -p foo
Run Code Online (Sandbox Code Playgroud)
小智 71
使用一个命令定义复杂的目录树
mkdir -p project/{lib/ext,bin,src,doc/{html,info,pdf},demo/stat/a}
Run Code Online (Sandbox Code Playgroud)
Jah*_*hid 35
如果您不想显示任何错误消息:
[ -d newdir ] || mkdir newdir
Run Code Online (Sandbox Code Playgroud)
如果要显示自己的错误消息:
[ -d newdir ] && echo "Directory Exists" || mkdir newdir
Run Code Online (Sandbox Code Playgroud)
moo*_*oom 29
简单、沉默、致命:
mkdir -p /my/new/dir >/dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)
pax*_*blo 19
旧的尝试和真实
mkdir /tmp/qq >/dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)
在没有许多其他解决方案的竞争条件下,你会做你想做的事.
有时最简单(也是最丑陋)的解决方案是最好的.
小智 13
mkdir foo即使目录存在也能正常工作.要使其仅在名为"foo"的目录不存在时起作用,请尝试使用该-p标志.
示例: -
mkdir -p foo
Run Code Online (Sandbox Code Playgroud)
仅当它不存在时,才会创建名为"foo"的目录.:)
小智 10
directory_name = "foo"
if [ -d $directory_name ]
then
echo "Directory already exists"
else
mkdir $directory_name
fi
Run Code Online (Sandbox Code Playgroud)
vkr*_*ams 10
参考手册页man mkdir的选项 -p
-p, --parents
no error if existing, make parent directories as needed
Run Code Online (Sandbox Code Playgroud)
这将在给定路径中创建所有目录,如果存在则不会引发错误,否则它将在给定路径中从左到右创建所有目录。试试下面的命令。目录newdir并anotherdir发出此命令之前不存在
正确使用
mkdir -p /tmp/newdir/anotherdir
执行命令后可以在/tmp下看到newdir并anotherdir创建。您可以根据需要多次发出此命令,该命令始终具有exit(0). 由于这个原因,大多数人在使用这些实际路径之前在 shell 脚本中使用这个命令。
或者如果你想先检查存在:
if [[ ! -e /path/to/newdir ]]; then
mkdir /path/to/newdir
fi
Run Code Online (Sandbox Code Playgroud)
-e是korn shell的存在测试.
你也可以尝试谷歌搜索korn shell手册.
对“经典”解决方案(由 Brian Campbell 提出)的改进 - 处理目录符号链接的情况。
[ -d foo/. ] || mkdir foo
Run Code Online (Sandbox Code Playgroud)
在Windows 8+系统上,mkdir不再支持-p开关.
你可以用这个:
IF NOT EXIST dir_name MKDIR dir_name
Run Code Online (Sandbox Code Playgroud)
这是一个简单的函数(Bash shell),如果目录不存在,它可以让您创建一个目录。
#------------------------------------------#
# Create a directory if it does not exist. #
#------------------------------------------#
# Note the "-p" option in the mkdir #
# command which creates directories #
# recursively. #
#------------------------------------------#
createDirectory() {
mkdir -p -- "$1"
}
Run Code Online (Sandbox Code Playgroud)
您可以将上述函数调用为:
createDirectory "$(mktemp -d dir-example.XXXXX)/fooDir/BarDir"
如果 fooDir 和 BarDir 不存在,上面会创建它们。请注意 mkdir 命令中的“-p”选项,它以递归方式创建目录。
小智 5
mkdir -p sam
Run Code Online (Sandbox Code Playgroud)
您可以使用if循环来检查目录是否存在,如果没有退出,则可以创建目录。
1)dir = / home / dir_name
if [ ! -d $dir ]
then
mkdir $dir
else
echo "Directory exists"
fi
Run Code Online (Sandbox Code Playgroud)
2)您可以使用带有-p选项的mkdir来创建目录。它将检查目录是否不可用。
mkdir -p $dir
Run Code Online (Sandbox Code Playgroud)
mkdir -p还允许创建目录的树结构。如果要使用相同的命令创建父目录和子目录,可以选择mkdir -p
mkdir -p /home/parent_dir /home/parent_dir/child1 /home/parent_dir/child2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1041785 次 |
| 最近记录: |