Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这两个shell命令之间有什么区别?_Shell_Unix_Scripting - Fatal编程技术网

这两个shell命令之间有什么区别?

这两个shell命令之间有什么区别?,shell,unix,scripting,Shell,Unix,Scripting,有两个shell命令: [[ ! -d $TRACEDIR/pattrace/rpt/.tracking ]] && mkdir $TRACEDIR/pattrace/rpt/.tracking [[ ! -d $TRACEDIR/pattrace/rpt/.tracking ]] && mkdir -p $TRACEDIR/pattrace/rpt/.tracking 显然,这些命令之间的唯一区别是-p标志。但在这种情况下,这个标志做了什么 谢谢 mkdi

有两个shell命令:

[[ ! -d $TRACEDIR/pattrace/rpt/.tracking ]] && mkdir $TRACEDIR/pattrace/rpt/.tracking  
[[ ! -d $TRACEDIR/pattrace/rpt/.tracking ]] && mkdir -p $TRACEDIR/pattrace/rpt/.tracking
显然,这些命令之间的唯一区别是
-p
标志。但在这种情况下,这个标志做了什么


谢谢

mkdir
使用
-p
选项将创建指定路径的所有必要父目录(如果不存在)(请参阅)。此外,如果目录本身已经存在,则使用
-p
不会出现错误

在您的特定情况下,第一个命令可能会失败,因为对完整路径的测试是不够的。如果只有
$TRACEDIR/
存在,测试也将失败,但是后续的
mkdir
将失败,因为它需要
$TRACEDIR/pattrace/rpt/
存在


第二个命令将起作用,因为
mkdir-p
也会创建“中间”所有缺少的目录。

mkdir
使用
-p
选项将创建指定路径的所有必要父目录,如果它们不存在(请参阅)。此外,如果目录本身已经存在,则使用
-p
不会出现错误

在您的特定情况下,第一个命令可能会失败,因为对完整路径的测试是不够的。如果只有
$TRACEDIR/
存在,测试也将失败,但是后续的
mkdir
将失败,因为它需要
$TRACEDIR/pattrace/rpt/
存在

第二个命令将起作用,因为
mkdir-p
也会在“中间”创建所有缺少的目录。

来自:

换句话说,如果所需的目录不存在,它们将根据需要创建。如果目录已经存在,则不会导致错误

这是一个寻找的好地方(当然除了使用谷歌之外)

来自:

换句话说,如果所需的目录不存在,它们将根据需要创建。如果目录已经存在,则不会导致错误

这是一个寻找的好地方(当然除了使用谷歌)

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