8-16随堂笔记
8-16内容
特殊符号扩展
常用的
? [A-z0-9] 第一个字符从字母数字开始
或者[^A-z0-9] 查看字母或者数字开始
过滤空行^$ 过滤注释^#
cat a.txt |egrep "^#" ,效果如下
过滤空行 ,加上-v
egrep -v "^$
^#"
工作中遇到比较多的 过滤空行,空注释、例如创建一个2.txt的文件
加上-v参数,可以过滤对应的
egrep -v "^$|#" /etc/nova/nova.conf
注意如果是一个字母只能[a-zA-Z]
变量:
注意点为
两个变量相连不解析
变量的叠加
只有双引号才有转义变量的作用
例如定义name-zhangsan book-lisi
再做一个例子,变量和变量之间用- 不能用_
例如添加快照Lv1-100
set 可以查看系统下所有已经生效的变量,包括系统的环境变量和用户自定义变量。
-u 选项 执行 set -u 命令以后,如果调用没有声明的变量时会报错。
去掉变量用unset
Source目的: 让一个变量立即生效
source 命令
source 环境变量配置文件名 或者 . 环境变量配置文件名
# 修改配置文件后,必须注销重新登录才能生效,使用source 命令可以不用重新登录
PATH、HISTSIZE、PS1、HOSTNAME等环境变量写入对应的环境变量配置文件
环境变量配置文件中主要是定义对系统操作环境生效的系统默认的环境变量,如PATH等。
- /etc/profile 用户环境变量,交互登录才执行
- /etc/bashrc 用户不用登录,执行shell就生效
- /etc/profile.d/*.sh
- ~/.bash_profile
- ~/.bashrc
- ~/.bash_history
- ~/.bash_logout 用户退出后需要做的一些操作
Source 之前与source之后,source之后变量生效
PS1=[\[email protected]\h \W]$
一般很少用到
PS1的常用参数以及含义(了解就行):
\d :代表日期,格式为weekday month date,例如:"Mon Aug 1"
\H :完整的主机名称
\h :仅取主机名中的第一个名字
\t :显示时间为24小时格式,如:HH:MM:SS
\T :显示时间为12小时格式
\A :显示时间为24小时格式:HH:MM
\u :当前用户的账号名称
\v :BASH的版本信息
\w :完整的工作目录名称
\W :利用basename取得工作目录名称,只显示最后一个目录名
\# :下达的第几个命令
\$ :提示字符,如果是root用户,提示符为 # ,普通用户则为 $
shell 特殊符号
#注释字符
用find /etc/ -name "*.conf" -type f可以查看当前所有的conf的文件
cut命令
截取显示某一段的数据
例如把etc/passwd 放到1.txt的文件中
然后截取一下前面三段
cut 1.txt -d ":" -f 1,3
cut 分割,-d分隔符 -f 指定段号 -c 指定第几个字符
sort排序
sort 排序,-n 以数字排序 -r 反序 -t 分隔符 -kn1/-kn1,n2
Sort
-n 以数字排序
wc -l 统计行数 -m 统计字符数 -w 统计词,我们把3.txt编辑成如下
uniq 去重 -c 统计行数
tr 替换字符,tr 'zhao',大小写替换tr '[ZHAO]'
split命令用于切割文档,把一个很大的文件分成指定的大小等
-b 100M 例如切割成100M的一个文档,例如常用以下
find /etc/ -type f -name "*conf" -exec cat {} >> a.txt \; //将所有找到*conf文件全部写入a.txt中
split -b 1000 a.txt zcx. //表示分割后的小分件的文件名前缀为zx.xx,这里做个测试
split -b 1000 a.txt
指定每个100k,可以看到就三个文件
如果指定则直接加后缀
特殊符号
- $ 变量前缀,!$组合,正则里面表示行尾
- ;多条命令写到一行,用分号分割
- ~用户家目录,后面正则表达式表示匹配符
- &放到命令后面 会把命令丢到后台
- #> >> 2> 2>> &>
- []指定字符中的一个,[0-9],[a-zA-Z],[abc]
- || 和 &&,用于命令之间
|| 表示或,如果第一条命令执行正确,第二条命令则不执行。如果第一条命令执行错误,则执行第二条命令。
&& 如果第一条命令执行成功了才执行第二条命令,如果第一条命令错误,第二条命令则不执行。
如果用ll ,第一条虽然错误,但是第二条依然执行