一.alias 设置别名
1.目标
- 理解内置命令的含义
- 能够使用alias内置命令给命令定义别名
2.内置命令介绍
shell内置命令,是bash shell自身提供的命令,而不是文件系统的可执行文件。
使用type
来确定一个命令是否是内置命令:
type 命令
通常来说,内置命令比外部命令执行的更快,执行外部命令时不但会触发磁盘I/O,还需要fork出一个单独进程来执行,执行完后再退出。而执行内置命令相当于调用当前shell进程的一个函数,还是在当前shell环境进程内,减少了上下文切换。
3.内置命令列表
4.alias介绍
alias用于给命令创建别名
好处:可以将经常操作比较复杂的命令进行设置别名,通过别名的操作提高工作效率。
若该命令不带任何参数,则显示当前shell进程中的所有别名列表。
5.alias使用
- alias定义别名
alias 别名="命令"
这里使用单引号或双引号都可以
- unalias别名删除语法
删除指定的别名
unalias 别名
删除当前shell环境中所有的别名
unalias -a
注意:以上2种方式删除都是临时删除当前shell环境的别名,如果想永久删除必须去配置文件中手动删除。
6.演示
alias pslist="ps -aux"
# 查看是否生效
alias
# 使用pslist代替原始命令
pslist
# 删除别名
unalias pslist
二.echo 输出字符串
1.目标
能够echo输出不换行的字符串
能够使用echo输出转义字符
2.命令介绍
echo是shelL内置命令,用于在终端输出字符串,并在最后默认加上换行符
3.换行/不换行语法
- 默认输出换行语法
echo 字符串
- 输出不换行语法
echo -n 字符串
4.输出转义字符
\n
转义字符
-e
参数用于解析转义字符
echo "hello \nworld"
# hello \n world
# 使换行生效需要与 -e 搭配使用
echo -e "hello \nworld"
# hello
# world
# 清除结尾的换行
echo -e "hello world\c"
三.read 读取控制台输入
1.目标
- 理解read命令的作用
- 使用read给多个变量赋值
- 使用read读取一个字符
- 使用read限制时间输入
2.介绍
read是shell内置命令,用于从标准输入中读取数据并赋值给变量。如果没有进行重定向,默认就是从终端控制台读取用户输入的数据;如果进行了重定向,那么可以从文件中读取数据。
3.语法
read [-options] [var1 var2 ...]
options 表示选项,var表示用来存储数据的变量,可以有一个,也可以有多个
options 和var都是可选的,如果没有提供变量名,那么读取的数据将存放到环境变量
REPLY
变量中。
REPLY
保存read最后一个读入命令的数据
e.g.:
read name
lucy
echo $name
# lucy
4.options支持的参数
4.1 实例1:多个变量赋值
编辑read1.sh脚本文件。使用read命令读取数据,要有提示信息,将数据赋值给多个变量
#!/bin/bash
read -p "please input name,age,hobby:" name age hobby
echo "name:${name}"
echo "age:${age}"
echo "hobby:${hobby}"
4.2 读取一个字符
编辑read2.sh脚本文件。要有提示信息,并且设置读取一个字符
read -p "确定要删除数据吗?(请输入y/n):" -n 1 char
printf "\n" # 添加换行,也可以使用一个echo代替
echo "输入的字符:${char}"
4.3 限制时间输入
编辑read3.sh,使用read命令读取数据,要有提示信息“请输入密码(20s内)”并设置限定时间为20s
# 输入密码,静默模式
read -t 20 -sp "请输入密码(20s内):" pwd1
# 换行
echo
# 再次输入密码
read -t 20 -sp "请再次输入密码(20s内):" pwd2
# 换行
printf "\n"
# 校验两次密码是否一致
if [$pwd1 == $pwd2]
then
echo "两次输入一致,验证通过"
else
echo "两次输入不一致,验证失败"
fi
四.shell内置命令:exit退出
1.介绍
exit
用于退出当前shell环境进程结束运行,并且可以返回一个状态码,一般使用$?
可以获取退出状态码
2.语法
正确退出语法
exit # 默认返回状态码0,0代表命令执行成功
错误退出语法
exit # 非0数字,数字建议的范围0-255,一般代表命令执行失败
3.exit应用场景
1.结束当前shell进程
2.当shell进程执行出错退出时,可以返回不同的状态值代表不同的错误
脚本文件exit.sh
#!/bin/bash
echo "hello"
exit 2
echo "world"
终端输入:
sh exit.sh
# hello
echo $?
# 2
五.declare设置变量
1.目标
- 能够使用declare设置变量的属性
- 能够使用declare查看全部shell变量与函数
- 能够使用declare实现索引数组与关联数组变量
2.介绍
declare命令用于声明shell变量,可用来声明变量并设置变量的属性,也可用来显示shell函数。若不加上任何参数,则会显示全部的shell变量与函数(与执行set指令的效果相同)。
3.declare命令作用
- declare设置变量的属性
- 查看全部shell变量与函数
- 实现关联数组变量
4.declare设置变量的属性语法
declare [+/-][aArxif][变量名称=设置值]
5.示例1:设置变量属性
需求:操作一个变量属性,设置为整型、取消整型、设置为只读等操作
# -i设置为整型后,age之后只能接收整型数据
declare -i age=20
age=abc
echo $age
# 设置为整型后,再次赋值字符串不生效,这时置为0
# 0
# 再次赋值为20,发现是可以打印出正确结果的
age=20
echo $age
# 20
# 取消age的整型限制
declare +i age
age="abc"
echo $age
# abc
# 增加只读的限制
declare -r age
age=123
# age:只读变量
6.实现key-value关联数组变量语法
关联数组也称为“键值对(key-value)”数组,键(key) 也即字符串形式的数组下标,值(value)也即元素值。
declare -A 关联数组变量名=([字符串key1]=值1 [字符串key2]=值2 ...)
declare 也可以用于定义普通索引数组,-a 参数创建普通或索引数组,-A 创建关联数组
获取指定key的值
${关联数组变量名[key]}
获取所有值
${关联数组变量名[*]} #方式1
${关联数组变量名[@]} #方式2