本节学习的命令:history,alias,ualias,CMD
本节学习的技能:
bash的特性
光标跳转
查看命令历史
命令历史的使用技巧
给命令起别名
命令替换
文件名通配符
shell: 外壳
GUI:Gnome, KDE, Xfce
CLI: sh, csh, ksh, bash, tcsh, zsh
进程:在每个进程看来,当前主机上只存在内核和当前进程
进程是程序的副本,进程是程序执行实例
用户工作环境:
bash:
#:管理员命令提示符
$:普通用户命令提示符
bash的特性:
1、命令历史、命令补全
2、管道、重定向
3、命令别名
4、命令行编辑
5、命令行展开
6、文件名通配
7、变量
8、编程
命令行编辑:
光标跳转:
Ctrl+a:跳到命令行首
Ctrl+e:跳到命令行尾
Ctrl+u: 删除光标至命令行首的内容
Ctrl+k: 删除光标至命令行尾的内容
Ctrl+l: 清屏
命令历史:
history:查看命令历史
-c:清空命令历史
-d OFFSET [n]: 删除指定位置的命令
-w:保存命令历史至历史文件中
环境变量
PATH:命令搜索路径
HISTSIZE: 命令历史缓冲区大小(可以用‘echo $HISTSIZE’查看)
命令历史的使用技巧:
!n:执行命令历史中的第n条命令;
!-n:执行命令历史中的倒数第n条命令;
!!: 执行上一条命令;
!string:执行命令历史中最近一个以指定字符串开头的命令
!$:引用前一个命令的最后一个参数,或使用“Esc + .” ;
文本相关的命令
查看:cat, tac, more, less, head, tail
统计:wc
处理:tr, cut, join
排序:sort
Uniq
命令补全,路径补全
命令补全:搜索PATH环境变量所指定的每个路径下以我们给出的字符串开头的可执行文件,如果多于一个,两次tab,可以给出列表;否则将直接补全;
路径补全:搜索我们给出的起始路径下的每个文件名,并试图补全;
命令起别名
alias CMDALIAS='COMMAND [options] [arguments]'
在shell中定义的别名仅在当前shell生命周期中有效;别名的有效范围仅为当前shell进程;
alias :显示当前所有起别名的命令
ualias CMDALIAS :撤销命令别名
type COMMAND:查看命令是不是绑定附加参数
CMD:使用有参数命令的原有属性
命令替换: $(COMMAND), 反引号:`COMMAND`
把命令中某个子命令替换为其执行结果的过程
bash支持的引号:
``: 命令替换
"": 弱引用,可以实现变量替换
'': 强引用,不完成变量替换
文件名通配, globbing
*: 任意长度的任意字符
?:任意单个字符
[]:匹配指定范围内的任意单个字符
[abc], [a-m], [a-z], [A-Z], [0-9], [a-zA-Z], [0-9a-zA-Z]
[:space:]:空白字符
[:punct:]:标点符号
[:lower:]:小写字母
[:upper:]: 大写字母
[:alpha:]: 大小写字母
[:digit:]: 数字
[:alnum:]: 数字和大小写字母
获取这些列表的方法: man 7 glob(我没成功)
[^]: 匹配指定范围之外的任意单个字符
[[:alpha:]]*[[:space:]]*[[:alpha:]]:获取以字母开头,字母结尾,中间有空格的文件
[[:alpha:]]*[[:space:]]*[^[:alpha:]]:获取以字母开头,非字母结尾,中间有空格的文件
练习:
1、创建a123, cd6, c78m, c1 my, m.z, k 67, 8yu, 789等文件;注意,以上文件是以逗号隔开的,其它符号都是文件名的组成部分;
2、显示所有以a或m开头的文件;
ls [am]*
3、显示所有文件名中包含了数字的文件;
ls *[0-9]*
ls *[[:digit:]]*
4、显示所有以数字结尾且文件名中不包含空白的文件;
ls *[^[:space:]]*[0-9] ?????????
5、显示文件名中包含了非字母或数字的特殊符号的文件;
ls *[^[:alnum:]]*