龙空技术网

shell编程:你真的会创建目录和文件吗?

往事如风孔雀君 74

前言:

现时你们对“linux中新建文件夹”大概比较注意,朋友们都需要剖析一些“linux中新建文件夹”的相关文章。那么小编也在网上搜集了一些关于“linux中新建文件夹””的相关知识,希望我们能喜欢,大家快快来了解一下吧!

一名比较懒的网友发来试题,如下图所示,出5块钱让我替他做了,我看了看然后接下这活了。

这6个问题都比较简单,其中第二道题更是初级得不行。但,越是简单的题目,越是藏着复杂的理论。下面,我看们看看在Linux下如何创建目录或文件。

解题

代码如下:

[root@localhost test1]# mkdir -p kbs/{bgs/{manager,officer},yyb/worker,xsb/clerk{01..02}}[root@localhost test1]# lltotal 0drwxr-xr-x 5 root root 39 Jun 12 00:22 kbs[root@localhost test1]# tree.└── kbs    ├── bgs    │   ├── manager    │   └── officer    ├── xsb    │   ├── clerk01    │   └── clerk02    └── yyb        └── worker9 directories, 0 files[root@localhost test1]# 

分析

这道题有两个考点:

mkdir -p大括号扩展(或者花括号扩展 ,“{}”)

mkdir 是Linux入门级的命令,查看帮助文件 man mkdir

-p 参数解释得很清楚,在需要的情况下创建父目录,如果已存在也不会报错

实验如下图:

不加-p 时报错,加-p后,虽然存在kbs/bgs/manager目录,但是不报错,而且创建了 a/b两层目录。

大括号扩展

什么是大括号扩展?这里有详细的定义

实验1:

echo prfix_{0,1,2}suffix

prfix_{0,1,2}suffix 被扩展成prefix_0suffix prefix_1suffix prefix_2suffix 三个字符串。

实验2:

创建3个文件,file1.txt file2.txt file3.txt

touch file{1,2,3}.txt

三个文件创建成功。

大括号扩展的定义中,还提到了序列形式

实验3:

创建 1到9命名的目录

mkdir {1..9}

目录创建成功

实验4:

创建1到10之间奇数的目录

mkdir {1..10..2} #  1..10是序列的范围,10后面..2是步进,就是每次前进几位

成功创建

实验5:

创建a -h 命名的文件(或目录)

touch {a..h}.txt

成功创建

实验6:

大括号扩展也是可以嵌套的

touch {1{a.b},2,3}.txt

标签: #linux中新建文件夹