一.bash及其特性
1.bash:
a、命令历史、命令补全
b、管道、重定向
c、命令别名
d、命令行编辑
e、命令行展开
f、文件名通配
g、变量
h、编程
2.命令行编辑
光标跳转:
Ctrl+a:跳到命令行首
Ctrl+e:跳到命令行尾
Ctrl+u: 删除光标至命令行首的内容
Ctrl+k: 删除光标至命令行尾的内容
Ctrl+l: 清屏
3.命令历史:
查看命令历史:history
-c:清空所有命令历史
-d OFFSET [n]: 删除指定位置的命令
-w:保存命令历史至历史文件中
用户正常退出命令历史会自动写入到当前用户的家目录下的.bash_history隐藏文件中
4.环境变量:
PATH: 命令搜索路径
HISTSIZE:命令历史缓冲区大小
5.命令历史的使用技巧:
!n:执行命令历史中的第n条命令;
!-n:执行命令历史中的倒数第n条命令;
!!: 执行上一条命令;
!string:执行命令历史中最近一个以指定字符串开头的命令
!$:引用前一个命令的最后一个参数;
6.命令补全:
a.按一下tab 键补全唯一的命令(在PATH环境变量路径下搜索)
c.按两下tab 键查看以相同字符开头的所有命令
7.命令别名:
a.alias命令用来自定义别名命令,别名只在当前shell的生命周期中有效
用法:alias cls=clear 如果值有空格那么最好加上单引号
问题:如何使别名在所有shell进程中有效,需要修改配置文件
b.使用alias命令直接查看所有的别名命令
c.unalias 命令撤销指定的命令别名
8.命令替换: $(pwd)
把命令中的子命令替换成子命令的执行结果
问题:创建一个文件,文件名为当前时间格式
touch $(date +%F-%H-%M-%S).txt
用反引号 touch `date +%F-%H-%M-%S`.txt 与上面的作用一样
双引号:弱引用,可以实现变量的替换
单引号:强引用,不完成变量的替换
9.文件名通配---查找指定的文件: ls 要匹配的通配
*: 任意长度的任意字符
?:任意单个字符
[]:匹配指定范围内的任意单个字符
[abc], [a-m], [a-z], [A-Z], [0-9], [a-zA-Z], [0-9a-zA-Z]
[:space:]:所有空白字符集合 [[:space:]]:所有空白字符中德任意一个
[:punct:]:标点符号
[:lower:]:小写字母
[:upper:]: 大写字母
[:alpha:]: 大小写字母
[:digit:]: 数字
[:alnum:]: 数字和大小写字母
问题:空白字符可不可以当作文件的组成
可以 touch 'a b'
用 man 7 glob 命令获取字符集说明
问题:
a.显示所有以a或m开头的文件
ls [am]*
b.显示所有文件名中包含了数字的文件
ls *[0-9]*
ls *[[:digit:]]*
c.显示文件名中包含了非字母或数字的特殊符号的文件
ls *[^[:alnum:]]*