我正在编写一个shell脚本,在AIX上的KornShell(ksh)下运行 . 我想使用 mkdir 命令来创建目录 . 但目录可能已经存在,在这种情况下我不想做任何事情 . 所以我想测试以查看该目录不存在,或者在尝试创建现有目录时抑制 mkdir 抛出的"File exists"错误 .
mkdir
有关如何最好地做到这一点的任何想法?
或者如果你想先检查存在:
if [[ ! -e /path/to/newdir ]]; then mkdir /path/to/newdir fi
-e 是korn shell的存在测试 .
你也可以尝试谷歌搜索korn shell手册 .
directory_name = "foo" if [ -d $directory_name ] then echo "Directory already exists" else mkdir $directory_name fi
在Windows 8系统上,mkdir不再支持-p开关 .
你可以用这个:
IF NOT EXIST dir_name MKDIR dir_name
旧的尝试和真实
mkdir /tmp/qq >/dev/null 2>&1
在没有许多其他解决方案所具有的竞争条件的情况下,你会做你想做的事 .
有时最简单(也是最丑陋)的解决方案是最好的 .
您可以使用if循环来检查目录是否存在,如果它不退出则创建目录 .
1)dir = / home / dir_name
if [ ! -d $dir ] then mkdir $dir else echo "Directory exists" fi
2)您可以使用mkdir和-p选项创建目录 . 它将检查目录是否不可用 .
mkdir -p $dir
mkdir -p还允许创建目录的树结构 . 如果要使用相同的命令创建父目录和子目录,可以选择mkdir -p
mkdir -p /home/parent_dir /home/parent_dir/child1 /home/parent_dir/child2
mkdir foo 即使目录存在也能正常工作 . 要使其仅在名为"foo"的目录不存在时起作用,请尝试使用 -p 标志 .
mkdir foo
-p
示例: -
mkdir -p foo
仅当它不存在时,才会创建名为“foo”的目录 . :)
使用-p标志 .
man mkdir mkdir -p foo
试试mkdir -p:
请注意,这也将创建不存在的任何中间目录;例如,
mkdir -p foo/bar/baz
将创建目录 foo , foo/bar 和 foo/bar/baz (如果它们不存在) .
foo
foo/bar
foo/bar/baz
如果您想在父目录存在时出现错误,那么您可以先test表示该目录是否存在:
[ -d foo ] || mkdir foo
如果您不想显示任何错误消息:
[ -d newdir ] || mkdir newdir
如果要显示自己的错误消息:
[ -d newdir ] && echo "Directory Exists" || mkdir newdir
使用一个命令定义复杂的目录树
mkdir -p project/{lib/ext,bin,src,doc/{html,info,pdf},demo/stat/a}
这是一个简单的函数(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 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 sam
mkdir =制作目录
-p = - 父母
(如果存在则没有错误,根据需要创建父目录)
13 回答
或者如果你想先检查存在:
-e 是korn shell的存在测试 .
你也可以尝试谷歌搜索korn shell手册 .
在Windows 8系统上,mkdir不再支持-p开关 .
你可以用这个:
旧的尝试和真实
在没有许多其他解决方案所具有的竞争条件的情况下,你会做你想做的事 .
有时最简单(也是最丑陋)的解决方案是最好的 .
您可以使用if循环来检查目录是否存在,如果它不退出则创建目录 .
1)dir = / home / dir_name
2)您可以使用mkdir和-p选项创建目录 . 它将检查目录是否不可用 .
mkdir -p还允许创建目录的树结构 . 如果要使用相同的命令创建父目录和子目录,可以选择mkdir -p
mkdir foo
即使目录存在也能正常工作 . 要使其仅在名为"foo"的目录不存在时起作用,请尝试使用-p
标志 .示例: -
仅当它不存在时,才会创建名为“foo”的目录 . :)
使用-p标志 .
试试mkdir -p:
请注意,这也将创建不存在的任何中间目录;例如,
将创建目录
foo
,foo/bar
和foo/bar/baz
(如果它们不存在) .如果您想在父目录存在时出现错误,那么您可以先test表示该目录是否存在:
如果您不想显示任何错误消息:
如果要显示自己的错误消息:
使用一个命令定义复杂的目录树
这是一个简单的函数(bash shell),它允许您创建一个目录(如果它不存在) .
您可以将上述功能称为:
如果它们不存在,上面创建fooDir和BarDir . 请注意mkdir命令中的“-p”选项,该选项以递归方式创建目录 . 希望这可以帮助 .
这应该工作:
要么:
如果目录不存在,它将创建目录,但警告您,您尝试创建的目录的名称是否已被目录以外的其他目录使用 .
mkdir =制作目录
-p = - 父母
(如果存在则没有错误,根据需要创建父目录)