Bash 常用快捷键
Ctrl + A    把光标移动到命令行开头
Ctrl + E    把光标移动到命令行尾 
Ctrl + D    退出当前终端 ( 正常的退出 ) 
Ctrl + C    强制终止当前命令 ( 非正常的退出 ) 
Ctrl + L     清屏 
Ctrl + U    删除或剪切光标之前的命令 
Ctrl + K    删除或剪切光标之后的命令
Ctrl + Y    粘贴 Ctrl + U  或 Ctrl + K  剪切的内容
Ctrl + R    在历史命令中搜索 
Ctrl + Z    暂停,并放入后台
Ctrl + S    暂停屏幕输出
Ctrl + Q    恢复屏幕输出


Bash 完整快捷键
从trl键组合
Ctrl+a:光标跳到行首。
Ctrl+b:光标左移一个字母
Ctrl+c:杀死当前进程。
Ctrl+d: 删除提示符后一个字符或exit或logout。
Ctrl+e:光标移到行尾。
Ctrl+f后移一个字符
Ctrl+h:删除光标前一个字符,同backspace 键相同。
Ctrl+k:清除光标后至行尾的内容。
Ctrl+l:清屏,相当于clear。
Ctrl+p重复上一次命令
Ctrl+r:搜索之前打过的命令。会有一个提示,根据你输入的关键字进行搜索bash的history
Ctrl+u: 清除光标前至行首间的所有内容。
Ctrl+w: 同上
Ctrl+t: 交换光标位置前的两个字符
Ctrl+y: 粘贴或者恢复上次的删除
Ctrl+d: 删除光标所在字母;注意和backspace以及Ctrl+h的区别,这2个是删除光标前的字符
Ctrl+f: 光标右移
Ctrl+z : 把当前进程转到后台运行,使用’ fg ‘命令恢复。比如top -d1 然后Ctrl+z ,到后台,然后fg,重新恢复
Ctrl+x同上但再按一次会从新回到原位置
Ctrl+o Ctrl+y Ctrl+i Crtl+m这4个没搞清楚怎么用
Ctrl-I 等同于按制表符<TAB>键
Ctrl-W 不是删除光标前的所有字符, 它删除光标前的一个单词
Ctrl-P 是recall出上一个命令 <===> Ctrl-N 是recall出下一个命令
Ctrl-M 等同于回车键
Ctrl-O 等同于回车键
Ctrl-V 使下一个特殊字符可以插入在当前位置, 如Ctrl-V <TAB> 可以在当前位置插入一个<TAB>字符, 其ASCII是9, 否则一般情况下按<TAB>结果是命令补齐
Ctrl-C 撤消当前命令行的编辑, 另起一行.
Ctrl-S 暂时冻结当前shell的输入
Ctrl-Q 解冻
esc组合
esc+d: 删除光标后的一个词
esc+f: 往右跳一个词
esc+b: 往左跳一个词
<TAB> 命令补齐
ESC-F 光标向前步进一个单词
ESC-B 光标向后步进一个单词
ESC-c 使下一个单词首字母大写, 同时光标前进一个单词, 如光标停留在单词的某个字母上, 如word中的o字母上, 则o字母变大写. 而不是w
ESC-u 使下一个单词所有字母变大写, 同时光标前进一个单词, 同上, 如光标在o字母上, 则ord变大写, w不变.
ESC-l 同ESC-U, 但使之全变为小写.
把bash所有的Ctrl组合键试了一遍,现总结如下(以下出现的所有键都是Ctrl组合键):
    U K Y
U将光标(不包括)以前的字符删除
K将光标(包括)以后的字符删除
Y将刚才删除的字符粘出来
    D H
D将光标处的字符删除
H将光标前的一个字符删除
    A E
A将光标移动到行首
E将光标移动到行尾
    F B
F将光标向右移动一个字符的位置
B将光标向左移动一个字符的位置
    N P
N下一个命令
P上一个命令
    L
L清屏
    R
R搜索以前输入过的命令
    T
T将光标处的字符和光标前一个字符替换位置
基本功:
用上下键看命令的历史
左右键区修改内容
tab补齐命令名字或者目录,文件名字,不是唯一的多按2次,会出来列表
!ls 重复运行最后一条以’ls’开头的命令,如果先ls -l 然后ls -lcrt,那么!ls,相当于ls -lcrt
ls abc.txt
vi !$

第二行的vi !$相当于vi abc.txt,!$等于上一个命令的参数, ‘$’ 是根据上下文来说的最后一行,列等。

Bash 的标准输入输出
设备		设备文件名		文件描述符		类型
键盘		/dev/stdin		0		标准输入
显示器		/dev/stdout		1		标准输出
显示器		/dev/stderr		2		标准错误输出

输出重定向 
类型				符号				作用
标准输出重定向
			命令 > 文件			以覆盖的方式,把命令的正确输出,输出到指定的文件或设备当中
			命令 >> 文件			以追加的方式,把命令的正确输出,输出到指定的文件或设备当中
标准错误输出重定向
			错误命令 2> 文件		以覆盖的方式,把命令的错误输出,输出到指定的文件或设备当中
			错误命令 2>> 文件  		以追加的方式,把命令的错误输出,输出到指定的文件或设备当中
正确输出和错误输出同时保存
			命令 > 文件 2>&1 		以覆盖的方式,把正确输出和错误输出,都保存到同一个文件当中
			命令 >> 文件 2>&1 		以追加的方式,把正确输出和错误输出,都保存到同一个文件当中
			命令 &> 文件			以覆盖的方式,把正确输出和错误输出,都保存到同一个文件当中
			命令 &>> 文件			以追加的方式,把正确输出和错误输出,都保存到同一个文件当中
			命令 >> 文件1  2>>文件 2	把正确的输出追加到文件1中,把错误的输出追加到文件2中

命令执行顺序
;	-- 命令的顺序执行 ===>>>不管前面的命令是否执行成功,都会挨个执行一遍,即使中间有的命令没能执行成功,也会接着执行后面的命令。 
&&	-- 前面命令执行不成功,后面的命令不执行
|| 	-- 前面的命令执行成功,后面的命令就不执行;前面的命令执行不成功,后面的命令才执行===>>>前面命令执行不成功,则执行后面命令,前面命令执行成功了,后面命令就不执行了

通配符 
    ?               匹配一个任意字符
    ' * '            匹配0个或任意多个任意字符,也就是可以匹配任意内容
    [ ]              匹配 [ ] 中任意一个字符
    [ - ]            匹配 [ ]  中任意一个字符, - 代表一个范围,从哪儿到哪儿 
    [ ^ ]            逻辑非,表示匹配不是中括号内的一个字符 

常用字符类 : 
    [:alnum:]  :   匹配任意一个字母或数字,	 传统写法 : a-zA-Z0-9
    [:alpha:]  :   匹配任意一个字母,           传统写法 : a-zA-Z
    [:digit:]  :   匹配任意一个数字,           传统写法 : 0-9
    [:lower:]  :   匹配任意一个小写字母         传统写法  : a-z
    [:upper:]  :   匹配任意一个大写字母         传统写法  : A-Z 
注:在使用专属字符集的时候,字符集之外还需要  [   ]  来包含,否则不能生效 ~!!如果使用上述格式的话,那对它的取反就是 在两个括号的中间进行取反如 :[^[ : alnum:]] 	[^[:digit:]]	[^[:lower:]] 等等

{ }  生成序列 
	touch  file{1..9}.txt   #  当前路径生成 file1.txt-file9.txt 。   { a..f } 代表 a-f  
	不连续的使用 , 分隔,比如 file{1,3,5}.txt  那就是 file1.txt   file3.txt  file5.txt