shell脚本基础
shell是一个命令行解释器,她为互用提供了一个想linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动。挂起。停止甚至编写一些程序。
shell还是一个功能相当强大的编程语言,易编写,易调试,灵活醒较强。shell是解释执行的脚本语言,在shell中可以直接调用linux系统命令
脚本的执行
1 echo输出命令
echo [选项][输出内容] 选项: -e : 支持反斜线控制的字符串转换
控制字符 | 作用 |
---|---|
\a | 输出警告音 |
\b | 退格键,也就是像左删除健 |
\n | 换行符 |
\r | 回车健 |
\t | 制表符,也就是tab |
\v | 垂直制表符 |
\0nnn | 按照八进制acsii表输出字符,其中0未数字零,nnn是三位八进制 |
\xhh | 安卓十六进制输出输出字符 |
在echo中输出颜色 echo -e "\e[1;31m aaaa \e[0m" 30m = 黑色, 31m = 红色, 32m = 绿色,33m = 黄色 34m = 蓝色 , 35m = 洋红, 36买= 青色, 37m = 白色
2 第一个脚本
#i/bin/bash #i/bin/bash #the first program echo -e "\e[1;34m hello \e[0m"
3 脚本执行
赋予执行权限,直接运行
- chmod 755 hello.sh
- ./hello.sh
通过bash调用执行脚本
- bash hello.sh
4 常用快捷键
- ctrl+c 强制终止当前命令
- ctrl+l 清屏
- ctrl+a 光标移动到命令行首
- ctrl+e 光标移动到命令行尾
- ctrl+u 从光标所在位置删除到行首
- ctrl+z 把命令放入后台
- ctrl+r 在历史命令中搜索
bash的基础命令
1 命令别名和快捷键
alias #查看系统中所有的命令别名 alias 别名 = ‘原命令’临时生效 vi ~/.bashrc #写入环境变量配置文件 unalias 别名 #删除别名
2 命令生效的顺序
- 第一顺位执行绝对路径或相对路径执行的命令
- 第二顺位执行别名
- 第三顺位执行bash的内部命令
- 第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令
echo $PATH /usr/local/server/node/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/chenjinxin/bin
2 历史命令
history 查看历史命令 -c 清空历史命令 -w 把缓存中的历史命令写入历史命令保存文件 ~/.bash_history
历史命令的调用
- 使用上下箭头调用以前的历史命令
- 使用'!n'重复执行第n条历史命令
- 使用'!!'重复执行上一条命令
- 使用'!字串'重复执行最后一条以该字符串开头的命令
3 输出重定向
1 标准输入输出
设备 | 设备文件名 | 文件描述符 | 类型 |
---|---|---|---|
键盘 | /dev/stdin | 0 | 标准输入 |
显示器 | /dev/sdtout | 1 | 标准输出 |
显示器 | /dev/sdterr | 2 | 标准错误输出 |
2 输出重定向
类型 | 符号 | 作用 |
---|---|---|
标准输出重定向 | 命令 > 文件 | 以覆盖的方式,把命令的正确输出输出到指定的文件或者设备当中 |
标准输出重定向 | 命令 >> 文件 | 以追加的方式,把命令的正确输出输出到指定的文件或者设备当中 |
标准错误输出重定向 | 错误命令 2> 文件 | 以覆盖的方式,把命令的错误输出输出到指定的文件或者设备当中 |
标准错误输出重定向 | 错误命令 2>> 文件 | 以追加的方式,把命令的错误输出输出到指定的文件或者设备当中 |
正确输出和错误输出同时保存 | 命令 > 文件 2&1 | 覆盖 |
正确输出和错误输出同时保存 | 命令 >> 文件 2&1 | 追加 |
正确输出和错误输出同时保存 | 命令 &> 文件 | 覆盖 |
正确输出和错误输出同时保存 | 命令 &>> 文件 2&1 | 追加 |
正确输出和错误输出同时保存 | 命令 >> 文件1 2>>文件2 | 正确追加到1,错误追加到2 |
3 输入重定向
wc [选项][文件名] 选项: -c 统计字节数 -w 统计单词数 -l统计行数 然后ctrl + d 显示统计 << access.log
4 多命令顺序执行
1 多命令顺序执行
多命令执行符 | 格式 | 作用 |
---|---|---|
; | 命令1; 命令2 | 多个命令顺序执行,命令之间没有任何逻辑联系 |
&& | 命令1 && 命令2 | 逻辑与 当前命令1正确执行,则命令2才能执行当命令1执行不正确,测命令2不会执行 |
|| | 命令1 || 命令2 | 逻辑或 当命令1执行不正确,测命令2才会执行 当命令1正确执行,测命令2不会执行 |
2 管道符
命令1 | 命名2 命令1的输出结果作为命令2的输入内容
比如 ps aux | grep node
5 shell中特殊字符
1 通配符
通配符 | 作用 |
---|---|
? | 匹配一个任意字符 |
* | 匹配0个或任意多个任意字符,也就是可以匹配任何内容 |
[] | 匹配括号中任意一个字符 |
[-] | [0-9] |
[^] | [^0-9]在括号内的字符 |
2 bash中的其他特殊符号
符号 | 作用 |
---|---|
'' | 没有特殊的意义 |
"" | 一般没什么意义 |
`` | 内容系统命令 |
$() | 和反引号一样,用来引用系统命令 |
# | 在shell脚本中,#开始的行代表注释 |
$ | 用于调用变量的值,入需要调用变量name的值是,需要用$name的值时,需要用$name的方式得到变量的值 |
\ | 转义符,回到本来的意思 |
来源:https://www.cnblogs.com/chenjinxinlove/p/7121854.html