linux基础预先指令
联系方式:2278135632
1- 花括号 { }
花括号{ } 中以 , 号分割的字符 会与花括号前面的字符相连接,组成新的字符串
如
mkdir -pv nu/{bj,sh}等同于:
mkdir -pv nu/bj mkdir -pv nu/dh说明 :-p 是创建多级目录, -v 是提示创建完成
创建完成后可以使用 tree nu 查看nu的文件结构
nu ├── bj └── sh花括号可以嵌套
mkdir -pv file/{file1/{file11,file12},file2}file ├── file1 │ ├── file11 │ └── file12 └── file2不同层级间用 / 分隔
用法二:
用于输出花括号的内容,用 … 连接字母 或数字
echo {A..Z}输出顺序是按asall 码表输出的, 如下面会输出特殊字符
echo {A..z}result : A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z所以输出字符时,将大小写分开
echo {a..z} {A..Z}也能写成
echo {{a..z},{A..Z}}result: a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z我们也能定义递增数
echo {1..10..2}result: 1 3 5 7 9我们也可以控制输出长度一致
echo {001..20..2}result : 001 003 005 007 009 011 013 015 017 019组合序列的用法
echo {a..c}{0,3}a0 a1 a2 a3 b0 b1 b2 b3 c0 c1 c2 c3花括号之间不能有空格
ls 搭配花括号
ls {a..c}.jpg查看a.jpg b.jpg c.jpg
2-文件通配符
显示当前目录下的所有以a开头的文件
file01 ├── a │ ├── ab │ ├── ba │ └── cd ├── a.jpg ├── b.jpg └── c.jpg当我们进入该文件夹,使用ls *a 也会吧a的二级子目录也打开(同时出现了不是以a开头的所有文件)
a: ab ba cd a.jpg:所以严谨的写法是 加上限定 -d
ls -d a*a a.jpg与 * 不同, ? 代表单个占位符号,而不是所有占位符
中括号 [ ]
?代表单个字符,[ ] 类似,也代表单个字符,区别不是任意单个字符而是指定范围内的单个字符,只要出现了 [ ] ,就必须要有一个字符, [ ] 中的字符有两种解释,当[ ] 中有多个字符 如:
ls [ab].jpg首先, .jpg 前出现了 [ ],意味着 .jpg 前有一个字符,当指令执行时,bash 会搜索当前目录下是否有 a.jpg 和b.jpg 如果有 ,交给 ls 打印他们,如果其中一个没有,则不会打印没有的那个;如果都不匹配,就会报错。 而对花括号而言 { } ,只要其中一个不匹配 就会报错。
[ ] 是模糊匹配 中括号中是或的关系 ,个别文件没有不会报错,全不匹配才会报错,但此时的错误会将整个字符串当成一个文件的前缀来处理。
ls {a,b,c,d}.jpg 相当于ls a.jpg b.jpg c.jpg d.jpg 这是一种精确匹配;一旦有一个找不到就会报错 ls[abc].jpg 相当于找 a.jpg 或 b.jpg 或c.jpg 或abc.jpg和花括号{} 相似 ,但是代表的是指定范围内的单个字符
ls [23].jpg查看 2.jpg 3.jpg (如果存在的话)而不是23.jpg
ls [2-9].jpg查看 2.jpg 3.jpg 。。。。。9.jpg (如果存在的话)
ls [1-25].jpg说明: 查询的是 1 到2.jpg 和5.jpg .而不是 1到25.jpg
中括号代表的是单个字符
查找所有小写字母
ls [ [:lower: ]].jpg查找所有大写字母
ls [ [: upper]:].jpg 外部的括号表示范围, 内部的括号是特殊通配符查询所有大小写
ls [a-zA-Z].jpg //不需要空格,查询所有大小写 相当于 ls [ [:alpha:] ].jpg注意 中括号中的单个字符不能是倒序 如:
ls [7-1].jpg //报错中括号的其他用法
查询任意数字前缀的图片
ls [ [:digit:] ].jpg查询任意大小写字母数字开头的图片
ls [a-zA-Z0-9] 或者 ls[ [:alnum:]].jpg查询含有至少一个空格的前缀
ls *[ [:space:] ]*.jpg查询至少含有一个标点符号的前缀
ls *[ [:punct:] ]*.jpg可以使用 ^ 或者 ! 表示非的关系
ls [ ^[:alpha:] ].jpg 非大小写字母的前缀 图片 ls[ !0-9 ].jpg 非 0到9前缀 的图片 ls[ ![:digit:] ].jpg 非数字前缀的图片码字 好累!!!!!!!!!!!!!!!!!!!!!!!
路径的表示
ls -d */当前目录下的所有非隐藏目录
ls -d .*/当前目录下的所有隐藏目录
ls -d .*去掉文件分隔符 表示当前目录下的所有隐藏文件和目录
./ 或 .表示当前目录
