Shell(一)
Shell 通常指的是命令行界面的解析器,一般来说,这个词是指操作系统中提供访问内核所提供之服务的程序。
与之相对的是内核(Kernel),内核不提供和用户的交互功能。
CLI Shell
常见的 Unix Shell 有:
- sh: Bourne shell
- dash: Debian Almquist shell
- bash: Bourne Agine shell
- ksh: Korn shell
- zsh: Z shell
- csh: C shell
- fish: Friendly interactive shell
Shell 语法
首行语法
shell 文件一般以 sh 作为文件后缀,在文件首行,以 #! 开头,后跟所使用的 shell:
|
注释
shell 文件的注释以 # 开始:
|
变量
shell 变量分为两类:
- 局部变量
- 环境变量
局部变量
shell 给变量赋值,实际就是定义了变量。局部变量只在创建他们的 shell 脚本中使用,例如 A=13,就是定义了一个变量 A,如果我们想引用该变量,可以在字符串中使用 $A,如果不希望转义,则可以使用 \,如果想取消变量,我们可以使用 unset 操作:
|
系统变量
系统变量可以再创建他们的 shell 以及派生的任意子进程中使用。
系统变量又分为:
- 本地变量: 只有本用户可以使用,保存在当前用户 home 目录下的 .bash_profile 或 .bashrc 文件中
- 全局变量: 所有用户都可以使用,保存在 /etc/profile 或 /etc/bashrc 文件中
常见的系统变量:
- $UID: 当前用户的 uid
- $USER: 当前用户
- $PWD: 当前路径
- $SHELL: 当前使用的 shell
- $PATH: 环境变量
- $0: 脚本名称
- ${N}: 第 N 个参数
- $$: 脚本本身进程 PID
- $?: 上一个命令执行结果,0 为成功
注意: 如果想修改 PATH 环境变量,使用 PATH=$PATH:新路径。
如果修改了系统变量,我们可以使用 source 操作使得修改生效:
|
算数运算
算数运算包括:
- +
- -
- *
- /
- %
- **
整数运算
expr
我们可以使用 expr 进行算数运算:
|
需要注意,expr 乘法符号需要转义:
|
let
我们还可以使用 let 进行算数运算:
|
let 语法的乘法运算符号不需要转义:
|
(())
shell 中两个小括号也可以做运算:
|
浮点数运算
浮点数运算需要使用管道操作:
|
shell 格式化输出
echo 可以将内容输出到标准输出。语法为:
|
命令选项:
- n: 末尾不换行
- e: 解释转义字符
如果希望 echo 现实的内容带颜色显示,格式如下:
|
文字颜色范围 30 - 37,背景颜色范围 40 - 47。属性为:
- 0m: 关闭所有属性
- 1m: 设置高亮度
- 4m: 下划线
- 5m: 闪烁
- 7m: 反显
- 8m: 消隐
shell 基本输入
read 命令等待用户的输入,默认接受键盘输入,回车代表输入结束。
命令选项有:
- p: 打印信息
- t: 限定时间
- s: 不回显
- n: 限制输入最大字符个数
|