如何使用bash运行`mkdir -m -p`?

时间:2018-11-06 08:51:58

标签: bash

我想mkdir为:

site1/www,site1/log
site2/www,site2/log
site3/www,site3/log

这些文件夹的权限为700

然后我在Bash shell中尝试了如下脚本:

sites_arr=(site1 site2 site3)
        for sitename in ${sites_arr[@]}
        do
                mkdir $sitename
                mkdir –m 700 –p /var/${sitename}/{www/,log/}

        done

但是mkdir –m 700 –p ${sitename}/{www/,log/}总是给我错误:

mkdir: cannot create directory ‘–m’: File exists
mkdir: cannot create directory ‘700’: File exists
mkdir: cannot create directory ‘–p’: File exists

问题出在哪里?

1 个答案:

答案 0 :(得分:10)

您使用了错误的 dash 字符类型。您输入了en dash

mkdir –m 700 –p /var/${sitename}/{www/,log/}

但是用hyphen -指定选项。

mkdir -m 700 -p /var/${sitename}/{www/,log/}

这可能是某些文字处理器复制/粘贴魔术的结果。

使用错误的破折号类型,您键入的选项将被解释为mkdir的多个参数,然后尝试创建一个名为–m的目录,一个名为700的目录和一个名为–p。当然,由于已经创建了这些目录,因此第二次执行命令失败。