首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >linux --创建一个目录结构,其中包含多个名称和空格。

linux --创建一个目录结构,其中包含多个名称和空格。
EN

Stack Overflow用户
提问于 2020-02-05 14:21:54
回答 2查看 407关注 0票数 1

我要做的是:在命令行中创建一个目录结构来匹配音乐家的名字和专辑:

代码语言:javascript
复制
/path/Musician name/album name

我做了一些研究,发现了两个在名字中使用空格的选项:转义--使用引号的名字\姓氏--“姓氏名”

当前显示所有者和权限的工作目录:

代码语言:javascript
复制
pete@optiplex:~/tmp$ ls -al
total 48
drwxrwxrwx  3 pete pete  4096 Feb  4 08:52 .
drwxr-xr-x 57 pete pete 36864 Feb  3 21:45 ..
drwxrwxrwx  2 pete pete  4096 Feb  4 08:39 music

试图创建一个目录结构来匹配音乐家的名字和专辑:

我试过的是:

代码语言:javascript
复制
pete@optiplex:~/tmp$ mkdir /home/pete/tmp/music/musician\ name/album\ name
mkdir: cannot create directory ‘/home/pete/tmp/music/musician name/album name’: No such file or directory

pete@optiplex:~/tmp$ mkdir "/home/pete/tmp/music/musician name/album name"
mkdir: cannot create directory ‘/home/pete/tmp/music/musician name/album name’: No such file or directory

pete@optiplex:~/tmp$ mkdir /home/pete/tmp/music/musician\ name/album
mkdir: cannot create directory ‘/home/pete/tmp/music/musician name/album’: No such file or directory

pete@optiplex:~/tmp$ mkdir /home/pete/tmp/music/musician\ name

这在不添加专辑名称的情况下确实有效。

结论:在转义后,无法创建进一步的目录。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-05 14:53:40

您所遇到的问题与目录名中的空格无关。对于文件名或目录名中的空格,双引号可能是最健壮的,因此今后可以将硬编码路径名替换为变量。如果变量路径名中有一个空格,则需要在变量周围引号,但您(实际上)不能(实际上)抛出所需的反斜杠来转义所有空格。问题是父目录不存在。如果您想创建一个目录结构foo/bar

代码语言:javascript
复制
# will fail if foo does not exist.
mkdir foo/bar

您要寻找的是mkdir-p (--parents)选项。这将创建目录和任何不存在的父目录。从mkdir --help

代码语言:javascript
复制
-p, --parents     no error if existing, make parent directories as needed

我还会添加-v (--verbose)选项,这样您就可以得到一些详细说明所做工作的输出。因此,在您的具体示例中,您可能希望这样做:

代码语言:javascript
复制
mkdir -vp "/home/pete/tmp/music/musician name/album name"

如果您想要将其添加到脚本中并在其中使用变量,则仍然可以使用双引号来完成这一任务:

代码语言:javascript
复制
musician_name="musician name"
album_name="album name"
mkdir -vp "/home/pete/tmp/music/${musician_name}/${album_name}"
票数 1
EN

Stack Overflow用户

发布于 2020-02-05 14:53:39

您能否尝试将目录名分配给一个变量,然后调用mkdir命令。

就像。

代码语言:javascript
复制
dir='/home/pete/tmp/music/musician name/album name'
mkdir -p "$dir"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60077878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档