bash基础特性

1,alias/unalias

2,glob(globbing)
bash中用于实现文件名通配
常用通配符: * , ?, []
* : 表示任意长度的任意字符
? : 表示任意单个字符
[]: 匹配指定范围内的任意单个字符 [0-9], [a-z]:不区分大小写; 只过滤大写[A-Z], 只过滤小写
[^]: 匹配自定范围之外的任意单个字符

专用字符集合:
[:digit:] : 任意数字, 相当于0-9
[:lower:] : 任意小写字母,相当于a-z (ls a[[:lower:]]b)
[:upper:] : 任意大写字母
[:alpha:] : 任意大小写字母
[:alnum:] :任意数字和字母
[:space:] : 任意的空格字符
[:punct:] : 任意标点符号


练习:
1,显示/var目录下所有以l开头,以小写字母结尾,且中间出现至少一位数字的文件或目录
find /var -name "l*[[:digit:]]*[[:lower:]]"
2,显示/etc目录下,以任意一位数字开头,且以非数字结尾的文件或目录。
find /etc/ -name "[[:digit:]]*[^[:digit:]]"
3,显示/etc目录下,以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录。
find /etc/ -name "[^[:alpha:]][[:alpha:]]*"
4,复制/etc目录下,所有以m开头,以非数字结尾的文件或目录至/tmp/1/目录下
cp -rf /etc/m*[^[:digit:]] /tmp/1
5,复制/etc目录下,所有以.d结尾的文件或目录至/tmp/1目录中。
cp -rf /etc/*.d /tmp/1
6,复制/etc目录下,所有以.conf结尾,且以m,n,r,p开头的文件或目录至/tmp/1目录中。
cp /etc/[m,n,r,p]*.conf /tmp/1

3,bash的快捷键
Ctrl + l : 清屏 clear命令
Ctrl + a : 跳转至命令最左侧
Ctrl + e : 跳转至命令结尾
Ctrl + c : 终止命令执行
Ctrl + u :删除光标位置至命令行首的所有内容
Ctrl + k : 删除光标位置至命令行尾的所有内容

4,bash的I/O重定向及管道
标准输入: 0
标准输出: 1
标准错误: 2
输出重定向 :
> : 覆盖重定向
>>: 追加重定向

# set -C : 禁止对已有文件进行覆盖输出重定向。
强制覆盖: >| :cat /a >| /tmp/b
# set +C : 开启对已有文件的覆盖重定向

错误输出重定向: 2>

合并标准输出和错误输出为同一个数据流进行重定向:
&> :覆盖重定向
&>> : 追加重定向

输入重定向: <
tr : 替换命令, tr abc ABC, tr 'a-z' 'A-Z'
tr abc ABC < /etc/fstab
tr -d abc : 删除出现的abc字符
Here Document: << 两个小于号,在此处生成文档

cat > /tmp/target file << EOF
context
EOF
管道: 把前一个命令的输出作为后一个命令的输入
最后一个命令会在当前shell进程的子shell中执行
tee命令: 一路输入,两路输出
cat /tmp/1 |tee /tmp/1.1 屏幕和文件输出

5,文件处理工具:wc ,cut, sort,uniq
wc命令: word count 统计文件的行数,字节数,字数。
wc /etc/passwd
cut: 切片命令
-d’ ‘ : 分隔符
-f 1 : 显示第几个字段
sort: 排序, 默认比较每一行第一个字符,按升序排列
-r :降序排列
-f : 忽略大小写
-t : 字段分隔符
-k :以指定字段排序
-n : 以数值大小排序
-u :去重

uniq: 去重命令。 连续且完全相同方为重复。
-d: 仅显示重复过的行
-u: 显示没有重复的行
-c: 显示每行重复次数
练习:以冒号分隔,取出/etc/passwd文件中的第6行至第10行,并将这些信息按第三个字段的数值大小排序,最后仅显示各自的第一个字段。
tail -n +6 /etc/passwd|head -n 5|sort -t: -k3 -n|cut -d: -f1





猜你喜欢

转载自www.cnblogs.com/heyong45/p/11762351.html