1、命令历史
history [n] n为数字,列出最近的n条命令
-c 将目前shell中的所有history命令消除
直接补全:用户给定的字符串只有一个对应命令,按“Tab”键将自动补全命令
用户给定的字符串不能指定唯一命令,连续按两次“Tab”键给出以指定字符串开头的命令列表
3、路径补全
直接补全:用户给定的字符串只有一个对应路径,按“Tab”键将自动补全路径
用户给定的字符串不能指定唯一路径,连续按两次“Tab”键给出以指定字符串开头的路径列表
4、命令行展开
~:展开为用户家目录
{}:可承载一个以逗号分隔的列表,并将其展开为多个路径
/tmp/{a,b}=/tmp/a , /tmp/b
/tmp/{a,b}/hi=/tmp/a/hi , /tmp/b/hi
{x,y}_{a,b}=x_a,x_b,y_a,y_b
5、命令的执行结果状态
bash试用特殊变量$?保存最近一条命令的执行转台结果
0:成功
1~255:失败
6、命令别名(alias)
alias:显示当前shell中所有的可用的命令别名
设置命令别名:
alias COMMAND='VALUE' (仅对当前shell有效)
~/bashrc:对当前用户有效
/etc/bashrc:对所有用户有效
撤销命令别名
unalias COMMAND
-a:所有
7、glob:bash中用于实现文件名“通配”
通配符:
*:任意长度任意字符
?:任意单个字符
[]:指定范围内的任意单个字符
[0-9]:0-9
[a-z]:不分大小写
[A-Z]:只有大写
[^]:匹配指定范围外的任意单个字符
专用字符合集
[:digit:]:任意数字,0-9
[:lower:]:任意小写字母
[:upper:]:任意大写字母
[:alphe:]:任意大小写字母
[:alnum:]:任意数字和字母
[:space:]:空白字符
[:punct:]:标点符号
8、bash快捷键
Ctrl+l:清屏,相当于clear命令
Ctrl+a:跳至命令开始出
Ctrl+e:跳至命令尾处
Ctrl+u:删除行首至光标
Ctrl+k:删除光标至行尾
Ctrl+c:取消命令的执行
9、bash的I/O重定向及管道
输出重定向
>:覆盖重定向
>>:追加重定向
2>:将错误输出数据流覆盖重定向
2>>:将错误输出数据流追加重定向
set -C:禁止将内容覆盖输出至已有文件
>|:强制覆盖
标准输出和错误输出各自定向至不通位置COMMAND > file 2> file2
合并标准输出和错误输出为一个数据流输出重定向
&>
重定向输入
<
管道
|:将命令的结果传递给下一个命令当参数
COMMAND|COMMAND|COMMAND......
10、提供了编程环境
11、提供了变量
变量类型:
字符型
数值型:
整型
浮点型
强类型:定义变量是必须指定类型,参与运算必须符合类型
弱类型:无需制定类型,默认均为字符型,参与运算会自动进行隐式类型转换,变量无需事先定义可直接调用。
bash中的变量种类
根据变量的生效范围等标准划分:
本地变量:生成范围为当前shell进程,对当前shell之外的其他shell进程,包括当前shell的子shell进程均无效。
变量赋值:name="value"(可以使用引用)
value:
1、可以是直接字符串:name="username"
2、变量引用:name="$username"
3、命令引用:name=`COMMAND`;name=$(COMMAND)
变量引用:${name};$name
"":弱引用,其中的变量引用会被替换为变量值
'':强引用,其中的变量引用不会被替换为变量值,而保持原字符串
显示已定义的所有变量
set
销毁变量
unset name
环境变量:生效范围为当前shell进程及其子进程
变量声明、赋值
export name=VALUE
declare -x name=VALUE
变量引用:$name;${name}
显示所有环境变量:
export
env
printenv
销毁变量:
unset name
bash中有许多内建的环境变量:PATH、SHELL、UID、HISTSIZE、HOME、PWD、OLD、HISTFILE、PSI
变量的命名法则:
1、不能使用程序中的保留字:例如if,for
2、只能使用数字、字母及下划线,且不能以数字开头
3、见名知义
局部变量:生效范围为当前shell中某代码片段(通常指函数)
位置变量:$1,$2...来表示,用于让脚本在脚本代码中调用通过命令行传递给定的参数
在脚本代码中调用通过命令行船底给脚本的参数
$1、$2...:对应调用第1、2个参数
$0:命令本身
$*:传递给脚本的所有参数,当作一个字符串
$@:传递给脚本的所有参数
$#:传递给脚本的参数的个数
特殊变量:$?,$0,$*,$@,$#
只读变量:变量中的值不能被改变
readonly name
declare -r name