如何使用bash运行`mkdir -m -p`? [英] How to use bash to run `mkdir -m -p`?

查看:51
本文介绍了如何使用bash运行`mkdir -m -p`?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想将 mkdir 设置为:

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

这些文件夹的权限为 700 .

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

Then I tried script in Bash shell as below:

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

问题出在哪里?

推荐答案

您使用了错误的 dash 字符类型.您键入了破折号

You are using the wrong type of dash character. You typed an en dash

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

,但选项用连字符 -指定.

but options are specified with a hyphen -.

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

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

This is probably the result of copy/paste magic with some word processors.

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

With the wrong type of dash, what you typed as options are interpreted as multiple arguments for mkdir, which then tries to create a directory named –m, one named 700 and one named –p. This of course fails the second time the command is executed since those directories were already created.

这篇关于如何使用bash运行`mkdir -m -p`?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆