Shell-常用内置命令
二月 21, 2021
内置命令相比于可执行脚本文件的优势:
内置命令碧可执行文件执行得更快
因为执行外部命令不但会触发磁盘I/O,还需要fork一个独立进程来执行,执行完毕再退出
而执行内置命令相当于调用当前Shell进程的一个函数,仍然再当前Shell环境进程内执行,减少了上下文切换的开销
查询是否为内置命令
1 | type commmand |
alias设置别名
1 | alias #查询显示当前Shell进程的所有别名列表 |
P.S 删除别名只能临时删除当前Shell别名,若想永久删除需要去配置文件中手动删除
echo输出字符串
1 | echo 字符串 #默认换行输出 |
read读取控制台输入
默认从终端控制台读取用户输入数据
若进行重定向,则可以从文件中读取数据
1 | read #若没有提供变量,默认会把读取的数据存放到REPLY环境变量中,$REPLY会保存read最后一个读入的数据 |
exit退出
用于退出当前Shell进程,并且会返回状态码
可使用
$?
查看退出状态码
1 | exit #正确退出,默认换回状态码0,一般代表命令执行成功 |
declare设置变量
- 声明Shell变量
- 声明变量并设置变量的属性
- 显示Shell函数
- 显示所有Shell变量和函数(set指令相似)
1 | declare #显示所有Shell变量和函数 |
关联数组变量
关联数组最好用declare方法创建,直接用变量创建关联数组会有大坑(╯▔皿▔)╯
1 | declare -A 关联数组变量名=([字符串key1]=值1 [字符串key2]=值2 [字符串key2]=值2 ...) |
索引数组变量
1 | declare -a 索引数组变量名=(值1 值2 值3 ...) |
test测试
整数比较测试
1 | test 1 -eq 2 |
test命令和
[]
用法相似
options | 说明 |
---|---|
-eq |
等于则为真 |
-ne |
不等于则为真 |
-gt |
大于则为真 |
-ge |
大于等于则为真 |
-lt |
小于则为真 |
-le |
小于等于则为真 |
字符串比较测试
1 | test "a" == "b" |
options | 说明 |
---|---|
= 或== |
等于,等于返回0代表成功,否则返回1代表失败 |
!= |
不等于 |
\< |
小于 |
\> |
大于 |
-z |
字符串长度为零则为真 |
-n |
字符串长度不为零则为真 |
文件测试
options | 说明 |
---|---|
-e |
exists,如果文件存在则为真 |
-r |
read,如果文件存在且可读则为真 |
-w |
write,如果文件存在且可写则为真 |
-x |
execute,如果文件存在且可执行则为真 |
-s |
string,如果文件存在且至少有一个字符则为真 |
-d |
directory,如果文件存在且为目录则为真 |
-f |
file,如果文件存在且为普通文件则为真 |
-c |
character,如果文件存在且为字符型特殊文件则为真 |
-b |
如果文件存在且为块特殊文件则为真 |
查看评论