1.什么是shell?
Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的。
Shell既是一种命令语言,又是一种程序设计语言。
作为命令语言,它交互式地解释和执行用户输入的命令;
作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。
2.shell的作用是什么?
shell是一个特殊的应用程序,它介于操作系统内核和用户之间,充当了一个“命令解释器”的角色,负责接收用户输入的操作指令并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。
3.linux中包含哪些shell?如何查看?
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
可以通过cat /etc/shells查看
4.shell编程规范
- 解释器:在写body之前要对shell脚本进行声明,告诉操作系统,这是一个shell文件,不声明的话系统默认为用bash来执行脚本。
格式如下
#!/bin/bash
- 脚本注释:注释格式和一般的编程语言类似,为:#+内容
- 脚本执行:source [文件名]
. [文件名]
./ [文件名] (注意这种方式文件需要有执行权限)
bash/dash/sh [文件名]
例子:
5.重定向
交互式硬件设备
类型 设备文件 文件描述编号 默认设备
标准输入 /dev/stdin 0 键盘
标准输出 /dev/stdout 1 显示器
标准错误输出 /dev/stderr 2 显示器
重定向操作
类型 操作符 用途
重定向输入 < 从指定文件读取数据
重定向输出 > 将标准输出结果保存到指定的文件,并且覆盖原有文件
>> 将标准输出追加到指定的文件的尾部,不覆盖原有内容
标准错误输出 2> 将错误信息保存到指定文件,并且覆盖原有文件
2>> 将错误信息追加到指定文件的尾部,不覆盖原有内容
混合输出 &>和2>&1 将标准输出,标准错误保存到同—文件中
6.变量类型
- 自定义变量:由用户自己定义、修改和使用,变量名以字母或下划线开头、区分大小写
符号作用:
"":可以识别引用变量
'':无法引用变量
``:引用命令执行完的结果
- 位置变量:当执行命令行操作时,第一个字段表示命令名或脚本程序名,其余的字符串参数按照从左到右的顺序依次赋值给位置变量
- 环境变量:
环境变量由系统提前创建,用来设置用户的工作环境
使用env命令可以查看到当前工作环境下的环境变量
变量USER表示用户名称,HOME表示用户的宿主目录,LANG表示语言和字符集,PWD表示当前所在的工作目录
变量PATH表示可执行程序的默认搜索路径
- 预定义变量: Bash中内置的一类变量,不能直接修改
预定义变量 表示的意思
$* 把所有参数看成以空格分隔的一个字符串整体(单字符串)返回
$@ 把各个参数加上双引号分隔成n份的参数列表,每个参数作为一个字符串返回
$0 表示当前执行的脚本或命令的名称
$# 表示命令或者脚本要处理的参数的个数
$? 表示前一条命令或脚本执行后的返回状态码,返回值为0表示执行正确,返回任何非0值均表示执行出现异常
7.变量作用范围
默认情况下,新定义的变量只在当前的Shell环境中有效,因此称为局部变量。当进入子程序或新的子Shell环境时局部变量将无法再使用。
可以通过内部命令export将指定的变量导出为全局变量,使用户定义的变量在所有的子Shell环境中能够继续使用。
临时设置变量:局部变量在改变环境后变量会失效。
如果使用export将变量导出为全局变量,那么在环境改变后,变量依然生效。
永久设置变量:vim /etc/profile
export PATH+=:/mnt