8.1 shell介绍
8.2 命令历史
8.3 命令补全和别名
8.4 通配符
8.5 输入输出重定向
8.6 管道符和作业控制
8.7/8.8 shell变量
8.9 环境变量配置文件
8.10 shell特殊符号cut命令
8.11 sort_wc_uniq命令
8.12 tee_tr_split命令
8.13 shell特殊符号下
8.14扩展:bashrc和bash_profile的区别
8.1 shell介绍
8.2 命令历史
命令存放路径:/用户家目录下/.bash_hsitory
#只有用户退出总终端的时候才会将命令缓存保存到文件里
#默认最大存储1000条命令
系统内置环境变量HISTSIZE
echo $HISTSIZE #查看HISTSIZE大小
[root@localhost ~]# echo $HISTSIZE
1000
修改HISTSIZE的配置文件:/etc/profile
#修改过后不会立刻生效,要重登终端或者source /etc/profile
history #查看使用过的命令
histtory -c #清空使用过命令的缓存(删除不了.bash_hsitory内的命令)
将查看命令历史设置使用时间
HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S"
#Y/m/d 年/月/日; H:M:S 时:分:秒 (仅在当前终端生效)
#要想永久在所以终端都生效,将该命令写进/etc/profile文件里面
#将命令历史永久保存,/用户家目录下/.bash_history添加a权限
chattr +a /用户家目录下/.bash_history
注意:如果终端没有正常退出,重登的时候会发现历史命令保存的不全
!! #执行上一条命令
[root@localhost ~]# ls
2.txt 3.txt anaconda-ks.cfg asda.txt
[root@localhost ~]# !!
ls
2.txt 3.txt anaconda-ks.cfg asda.txt
!n #n是命令历史的排序号
1026 2018/08/12 19:37:25vim /etc/profile
1027 2018/08/12 19:38:43ls
1028 2018/08/12 19:39:26history
[root@localhost ~]# !1027
ls
2.txt 3.txt anaconda-ks.cfg asda.txt
!word #或者最近使用一次命令的开头
8.3 命令补全和别名
#参数补全,需要安装bash-completion包
Tab键按一次,补全命令和参数
Tab键按两次,显示支持补全的参数
配置别名的文件路径存放:/用户家目录下/.bashrc
其它自定义别名存放:/etc/profile.d
8.4 通配符
"^" # 以什么开头 例: ^[a-z] ,表示以小写字母a-z开头的
"#" # 注释
"\" #转义字符,将特殊字符或通配符还原成一般字符
";" #命令衔接符,连续执行两条命令
"$" # 取用变量符号
"&" #工作控制,将指令变成后台运行工作
" '' " #单引号,无法引用变量
" "" " #双引号,可以引用变量
" `` " #反引号,表示指令引用,功能同 $(command)
" * " #表示通配所有字符
" ? " #表示通配一个字符
" [ ] " #可写数字,字母,范围;括号内字符都是或者的关系
" + " #前面字符至少出现一次才会过滤出来,+是特殊字符
" { } " #可写数字,字母;括号内字符都是或者的关系,但是中间需要用逗号“,”隔开
例 : echo=`pwd`
[root@xinlinux-02 ~]# echo `pwd`
/root
"2>&1" #表示正确和错误的都输出
例:ls 1.txt 2.txt 2>&1 >>3.txt #ls 1.txt 和2.txt,将正确和错误的信息都追加到3.txt
* #表示通配所有字符
? #表示通配一个字符
[root@localhost ~]# ls *.txt
1.txt 2.txt 3.txt aa.txt asda.txt a.txt bbb.txt b.txt c.txt
[root@localhost ~]# ls ?.txt
1.txt 2.txt 3.txt a.txt b.txt c.txt
#"+"号表示前面字符至少出现一次才会过滤出来,这里+是特殊字符,所以用到egrep
[root@localhost ~]# egrep "\[+" 1.txt
[1234]
[124
[ ] #可写数字,字母,范围;括号内字符都是或者的关系
[root@localhost ~]# ls [123].txt
1.txt 2.txt 3.txt
[root@localhost ~]# ls [0-2].txt
1.txt 2.txt
[root@localhost ~]# ls [a-z].txt
a.txt b.txt c.txt
[root@localhost ~]# ls [1-3a-c].txt
1.txt 2.txt 3.txt a.txt b.txt c.txt
[root@localhost ~]# ls [1-3a-cA-Z].txt
1.txt 2.txt 3.txt a.txt b.txt c.txt
{ } #可写数字,字母;括号内字符都是或者的关系,但是中间需要用逗号“,”隔开
[root@localhost ~]# ls {1,2}.txt
1.txt 2.txt
[root@localhost ~]# ls {1-2}.txt
ls: 无法访问{1-2}.txt: 没有那个文件或目录
[root@localhost ~]# ls {1,2,3,a,}.txt
1.txt 2.txt 3.txt a.txt
"\" 表示脱义字符,将特殊字符的语意去掉
[root@localhost ~]# grep "[" 1.txt #"["中括号为特殊字符,双引号识别不了,所以报错
grep: 无效的常规表达式
[root@localhost ~]# grep "\[" 1.txt #用\号脱义,就可以成功
[1234]
[1