作者:humphrey7247 | 来源:互联网 | 2023-08-01 16:07
第一节Shell概述1.1定义1.2分类1.3Shell脚本的执行方式1.4Bash的基本功能1.4.1历史命令与命令补全1.4.2命令别名与常用快捷键1.4.3输入
第一节 Shell概述
1.1 定义
1.2 分类
1.3 Shell脚本的执行方式
1.4 Bash的基本功能
1.4.1 历史命令与命令补全
1.4.2 命令别名与常用快捷键
1.4.3 输入输出重定向
1.4.4 多命令顺序执行与管道符
第一节 Shell概述
1.1 定义
Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来 启动、挂起、停止甚至是编写一些程序。
Shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强。Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令。
1.2 分类
- Bourne Shell:从1979起Unix就开始使用Bourne Shell,Bourne Shell的主文件名为 sh。
- C Shell: C Shell主要在BSD版的Unix系统中使用,其语法和C语言相类似而得名。
- Shell的两种主要语法类型有Bourne和C,这两种语法彼此不兼容。Bourne家族主要包括sh、ksh、Bash、psh、zsh;C家族主 要包括:csh、tcsh。
- Bash: Bash与sh兼容,现在使用的Linux就是使用Bash作为用户的基本Shell。
Linux支持的Shell可通过/etc/shells查看,可以通过在命令行输入相应Shell类型切换。
1.3 Shell脚本的执行方式
#!/bin/bash
echo -e ‘Hello World!’
#!/bin/bash这一句并不是注释,是标识,说明以下语句是Shell脚本。
1) 赋予执行权限,直接运行
chmod 755 hello.sh
./hello.sh
2) 通过bash调用执行脚本
bash hello.sh
不需要执行权限就可以执行
1.4 Bash的基本功能
1.4.1 历史命令与命令补全
history [选项] [历史命令保存文件]
-c: 清空历史命令
-w: 把缓存中的历史命令写入历史命令保存文件 ~/.bash_history
历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile中进行修改
找到HISTSIZE=1000进行修改,随意修改到100000条都可以,修改之后重启使配置文件生效
1) 历史命令的调用
- 使用上、下箭头调用以前的历史命令
- 使用“!n”重复执行第n条历史命令
- 使用“!!”重复执行上一条命令
- 使用“!字串”重复执行最后一条以该字串开头的命令
2) 命令与文件补全
在Bash中,命令与文件补全是非常方便与常用的功能,我们只要在输入命令或文件时,按“Tab”键就会自动进行补全
1.4.2 命令别名与常用快捷键
命令别名
alias 别名=‘原命令’ 设定命令别名
alias 查询命令别名
让别名永久生效
vi ~/.bashrc
删除别名
unalias 别名
Bash常用快捷键
ctrl+a | 把光标移动到命令行开头。 |
ctrl+e | 把光标移动到命令行结尾。 |
ctrl+c | 强制终止当前的命令。 |
ctrl+l | 清屏,相当于clear命令。 |
ctrl+u | 删除或剪切光标之前的命令。 |
ctrl+k | 删除或剪切光标之后的内容。 |
ctrl+y | 粘贴ctrl+u或ctrl+k剪切的内容。 |
ctrl+r | 在历史命令中搜索,按下ctrl+r之后,就会出现搜索界面,只要输入搜索内容,就会从历史命令中搜索。 |
ctrl+d | 退出当前终端。 |
ctrl+z | 暂停,并放入后台。这个快捷键牵扯工作管理的内容 |
ctrl+s | 暂停屏幕输出。 |
ctrl+q | 恢复屏幕输出。 |
注意:ctrl+z 快捷键一定要谨慎使用,如果使用的多了,系统会占用大量存储空间来存放暂停的数据,用多了系统会变卡!!!
1.4.3 输入输出重定向
设备 | 设备文件名 | 文件描述符 | 类型 |
键盘 | /dev/stdin | 0 | 标准输入 |
显示器 | /dev/sdtout | 1 | 标准输出 |
显示器 | /dev/sdterr | 2 | 标准错误输出 |
输出重定向
就是改变输出方向,比如由屏幕输出到文件,非常有用
类型 | 符号 | 作用 |
标准输出重定向 | 命令>文件 | 以覆盖的方式,把命令的正确输出输出到指定的文件或设备中。 |
标准输出重定向 | 命令>>文件 | 以追加的方式,把命令的正确输出输出到指定的文件或设备中。 |
标准错误输出重定向 | 错误命令2>文件 | 以覆盖的方式,把命令的错误输出输出到指定的文件或设备中 |
标准错误输出重定向 | 错误命令2>>文件 | 以追加的方式,把命令的错误输出输出到指定的文件或设备中。 |
在输入报错文件中2和>>必选连着写,标准错误输出不常用
命令>文件 2>&1 | 以覆盖的方式,把正确输 出和错误输出都保存到同 一个文件当中。 |
命令>>文件 2>&1 | 以追加的方式,把正确输 出和错误输出都保存到同 一个文件当中。 |
命令&>文件 | 以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中。 |
命令&>>文件 | 以追加的方式,把正确输出和错误输出都保存到同一个文件当中。 |
命令>>文件1 2>>文件2 | 把正确的输出追加到文件1中,把错误的输出追加到文件2中 |
- 命令 >> 文件 2>&1 ,命令 &>>文件 两种保存都一样,只不过是格式不同
- 有一个用法:命令 &>/dev/unll 不管命令是否正确,直接丢人这个文件夹,不保存任何数据,在写shell脚本时有用
输入重定向
不通过键盘输入,通过文件输入,在实际中用的不多,用在给源码包打补丁。
wc [选项] [文件名]
-c 统计字节数
-w 统计单词数
-l 统计行数
用法:
命令 <文件 把文件作为命令的输入
1.4.4 多命令顺序执行与管道符
多命令顺序执行
符 | 格式 | 作用 |
; | 命令1 ;命令2 | 多个命令顺序执行&#xff0c;命令之间没有任何逻辑联系&#xff0c;第一条报错&#xff0c;第二条也会执行 |
&& | 命令1 && 命令2 | 逻辑与当命令1正确执行&#xff0c;则命令2才会执行 当命令1执行不正确&#xff0c;则命令2不会执行 |
|| | 命令1 || 命令2 | 逻辑或当命令1 执行不正确&#xff0c;则命令2才会执行 当命令1正确执行&#xff0c;则命令2不会执行 |
例子&#xff1a;
- date ; 命令 ; date
- 命令 && echo yes || echo no
管道符
命令1 | 命令2 &#xff1a;命令1的正确输出作为命令2的操作对象
例子&#xff1a;
- ll /etc | more
- netstat -an | grep
grep [选项] “搜索内容” 文件名
-i: 忽略大小写
-n: 输出行号
-v: 反向查找
–color&#61;auto 搜索出的关键字用颜色显示