一、历史命令与命令补全
1.历史命令--history
语法:history [选项] [历史命令保存文件]
选项:-c 清空历史命令
-w 把缓存中的历史命令写入历史命令保存文件(默认保存文件为各用户家目录下的.bash_history文件)
历史命令默认保存1000条,看可以在环境变量配置文件/etc/profile中进行修改。
2.历史命令的调用
- 使用上下箭头调用以前的命令
- 使用“!n”重复执行第n条命令,n可以用history命令查看
- 使用“!!”重复执行上一条命令
- 使用“!字串”重复执行最后一条以该字串开头的命令
3.命令与文件补全
在Bash中,命令与文件补全是非常方便与常用的功能,只要在输入命令或文件时,按“Tab”键即可自动补全命令或文件名。
二、别名与快捷键
1.命令别名
在管理和维护Linux系统的过程中,管理员会使用大量的命令,对于一些常用的复杂的命令,管理员可以用命令别名的功能根据自己的使用习惯来简化这些命令,以提高效率。
1.1 设定命令别名
alias 别名='原命令'
如: alias vi='vim'
1.2 查询命令别名
alias
1.3 让别名永久生效
要是别名永久生效,可以修改各用户下的.bashrc文件,如是root下的别名生效,修改/root/.bashrc。
1.4 删除别名
unalias 别名
三、输入输出重定向
1.标准输入输出
设备 |
设备文件名 |
文件描述符 |
类型 |
键盘 |
/dev/stdin |
0 |
标准输入 |
显示器 |
/dev/stdout |
1 |
标准输出 |
显示器 |
/dev/stderr |
2 |
标准错误输出 |
在Linux中,输入输出设备有多个,其中以键盘为标准输入设备,以显示器为标准输出设备。Linux中输出设备有两个,一个用来显示正确输出,一个用来显示错误输出。由于设备文件名不好记忆,所以在Shell中用0来代表标准输入,用1来代表标准输出,用2来代表错误输出。
2.输出重定向
输出重定向是指改变了命令结果的输出方向,可以保存在文件中以便查看。对于命令来说,必须是要有输出结果的命令才能使用命令重定向。
类型 |
符号 |
作用 |
标准输出重定向 |
命令 > 文件 |
以覆盖的方式,把命令的正确输出输出到指定的文件或设备中 |
命令 >> 文件 |
以追加的方式,把命令的正确输出输出到指定的文件或设备中 |
|
标准错误输出重定向 |
命令 2> 文件 |
以覆盖的方式,把命令的错误输出输出到指定的文件或设备中 |
命令 2>> 文件 |
以追加的方式,把命令的错误输出输出到指定的文件或设备中 |
以上四条命令可以看到,正确命令和错误命令的输出重定向格式是不同的,即在使用这四条命令时首先需要人为的判断命令的正确与否,来选择输出重定向格式。在实际应用中用处不大。下面介绍几条正确输出和错误输出同时保存的命令格式。
类型 |
符号 |
作用 |
正确输出和错误输出同时保存
|
命令 > 文件 2>&1
|
以覆盖的方式,把正确输出和错误输出都保存到同一个文件中 |
命令 >> 文件 2>&1 |
以追加的方式,把正确输出和错误输出都保存到同一个文件中 |
|
命令 &> 文件 |
以覆盖的方式,把正确输出和错误输出都保存到同一个文件中 |
|
命令 &>> 文件 |
以追加的方式,把正确输出和错误输出都保存到同一个文件中 |
|
命令 >> 文件1 2>>文件2 |
把正确的输出追加到文件1中,把错误的输出追加到文件2中 |
最后一个命令是把正确输出和错误输出分别保存
四、多命令顺序执行与管道符
1. 多命令顺序执行
多命令执行符 |
命令格式 |
作用 |
; |
命令1;命令2 |
多命令顺序执行,命令之间没有逻辑关系 |
&& |
命令1&&命令2 |
逻辑与 当命令1正确执行时,命令2才会执行 当命令1执行不正确时,则命令2不会执行 |
|| |
命令1||命令2 |
逻辑或 当命令1执行不正确时,命令2才会执行 当命令1正确执行时,命令2不会执行 |
例如:当使用分号符时,符号两边的命令按照顺序执行,互不影响。
当使用逻辑与命令时,需要第一个命令正确执行,才会执行第二个命令。
当使用逻辑或命令时,只有当第一个命令不正确执行,第二个命令才会执行。
2.管道符
命令格式:命令1 | 命令2
作用:把命令1的正确输出作为命令2的操作对象
如:我们可以分页显示/etc 目录下的文件,以便查看
也可以使用grep 命令来对命令1的输出结果进行进一步搜索,得到我们想要的内容
grep [选项] "搜索内容" 文件名
选项:
-i 忽略大小写
-n 输出行号
-v 反向查找
--color=auto 搜索出的关键字用颜色显示
如:
当结合管道符使用时
五、通配符与其他特殊符号
1. 通配符
通配符 |
作用 |
? |
匹配任意一个字符 |
* |
匹配0或任意多个字符,也就是可以匹配任何内容 |
[] |
匹配中括号中的任意一个字符。例如:[abc]代表一定匹配abc三个字符中的一个 |
[-] |
匹配中括号中任意一个字符,-代表一个范围。例如:[a-z]代表匹配a-z中的任意一个小写字母 |
[^] |
逻辑非,表示匹配不是中括号中的一个字符。例如:[^0-9]代表匹配一个不是数字的字符 |
2.Bash中的其他特殊符号
符号 |
作用 |
‘’ |
单引号。在单引号中所有的特殊符号,如:$和`(反引号)都没有特殊含义 |
“” |
双引号。在双引号中除 “$”、“`”、“\”外都没有特殊含义 |
`` |
反引号。反引号括起来的内容是系统命令,在Bash中会先执行它。和$()作用一样 |
$() |
和反引号作用一样,用来引用系统命令 |
# |
在Shell脚本中,#开头的行代表注释行,不起作用 |
$ |
用于调用变量的值。如:$name 代表调用变量name的值 |
\ |
转义符。跟在\后的特殊符号将失去特殊含义,变为普通字符 |