命令行编辑
Ctrl+a: 将光标调至命令行首
Ctrl+e: 将光标调至命令行尾
Ctrl+u: 删除光标前的所有内容
Ctrl+k: 删除光标后的搜有内容
命令别名
在shell中定义的别名仅在当前shell生命周期中有效,别名的有效范围仅为当前shell进程。如果shell中的某个命令本身具有别名,利用COMMAND来执行命令本身的功能。
# alias COMMANDALias='COMMAND [option] [argument]' (最好使用单引号)
# alias 显示系统中所有的命令别名)
# unalias COMALIAS 取消命令别名
命令替换
把命令中的某个子命令替换为其执行结果的过程
$(COMMAND),反引号:`COMMAND`
# echo "The current directory is $(pwd)"
创建一个以当前时间命名的文件如:file-2018-01-30-20-39.txt
# touch ./file-$(date +%F-%H-%M-%S).txt
命令历史
- 命令history可以查看命令执行的历史
-c: 清空命令历史
-d OFFSET [n]: 删除指定位置的命令
-d 510 3: 从第510个记录向后删除共计三个
-w: 保存缓冲区命令历史至历史文件中(历史文件在用户家目录下的.bash_history)
- 命令历史使用的技巧
!n: 执行命令历史中第n条命令;
!-n: 执行命令历史中倒数第n条命令;
!!: 执行上一条命令;
!string: 执行命令历史中最近一个以指定字符串开头的命令;
!$: 引用前一个命令的最后一个参数;(或者按Esc松开按.或者按Alt+.)
命令&&路径补全
- 命令补全
搜索PATH环境变量所指的每个路径下以我们给出的字符串开头的可执行文件,在命令搜索路径下查找
- 路径补全
搜索我们给出的起始路径下的每个文件名,并试图补全,在给定打头路径下查找
bash支持的引号
- “: 命令替换
- “”: 弱引用,可以实现变量和命令替换
- ”: 强引用,不能实现变量替换
文件名通配 globbing
- ” * “: 匹配任意个任意字符
- ” ? “: 匹配任意单个字符
- ” [] “: 匹配指定范围内的单个字符
[:space:]: 空白字符
[:punct:]: 标点符号
[:lower:]: 小写字母
[:upper:]: 大写字母
[:alpha:]: 大小写字母
[:digit:]: 数字
[:alnum:]: 数字和大小写字母
- ” [^] “: 匹配指定范围外的单个字符
[[:alpha:]]*[[:space:]]*[[:alpha:]]
练习:
1、创建a123, cd6, c78m, c1, my, m.z, k 67, 8yu, 789等文件;注意,以上文件是以逗号隔开的,其它符号都是文件名的组成部分
2、显示所有以a或m开头的文件;
3、显示所有文件名中包含了数字的文件;
4、显示所有以数字结尾且文件名中不包含空白的文件;?????? ls *[^[:space:]]*[0-9]
5、显示文件名中包含了非字母或数字的特殊符号的文件。