shell简介
命令解释器 shell,是用户和Linux内核的交互界面,且shell可以直接调用Linux系统命令。shell主要有Bourne shell和C shell两种语法类型,Bourne shell包括sh、ksh、bash、zsh,C shell包括csh、tcsh,两种语法不兼容。Linux的标准语法是bash。
脚本执行方式
1) 赋予文件执行权限
$ chmod 755 filename
$ ./filename
2) 通过bash调用执行脚本
$ bash filename
bash基本功能
命令别名————
1) 设定命令别名
语法:alias 别名='原命令'
2) 查看命令别名
语法:alias
3) 取消命令别名
语法:unalias 别名
历史命令————
1) 查询执行过的命令
语法:history 选项 历史命令保存文件
选项:n 显示最近n条命令
-c 清空历史命令
-w 将缓存内容写入命令保存文件
命令补全————
[Tab]键可在命令与文件输入时自动补全名称
常用快捷键————
快捷键 | 作用 |
[Ctrl] + A | 光标移至命令行开头 |
[Ctrl] + E | 光标移至命令行结尾 |
[Ctrl] + L | 清屏 |
[Ctrl] + C | 强制终止当前命令 |
[Ctrl] + D | 退出当前终端 |
[Ctrl] + U | 删除或剪切光标前面的命令 |
[Ctrl] + K | 删除或剪切光标后面的命令 |
[Ctrl] + Y | 粘贴命令 |
[Ctrl] + R | 在历史命令中搜索内容 |
[Ctrl] + Z | 暂停执行命令,并放入后台 |
[Ctrl] + S | 暂停屏幕输出 |
[Ctrl] + Q | 恢复屏幕输出 |
重定向输入输出————
1) 标准输入输出
名称 | 代码 | 符号 | 作用 |
standard input(stdin) | 0 | <或<< | 将文件内容或命令行数据作为输入内容 |
standard output(stdout) | 1 | >或>> | 以覆盖或追加的方式将正确的数据输出到指定的文件或设备 |
standard error output(stderr) | 2 | 2>或2>> | 以覆盖或追加的方式将错误的数据输出到指定的文件或设备 |
2) stdout和stderr同时保存
以覆盖的方式保存到同一文件
语法1:命令>filename 2>&1
语法2:命令 &> filename
以追加的方式保存到同一文件
语法1:命令>>filename 2>&1
语法2:命令 &>> filename
stdout保存到file1,stderr保存到file2
语法:命令>>file1 2>>file2
3) stdin实例
实例1
$ wc < filename
实例2(内联输入重定向<<)
$ wc << EOF
> string1
> string2
>EOF
详解:内联重定向将命令行数据作为输入重定向数据,指定任一自定义文本标记划分输入数据的开始和结束。
多命令顺序执行————
命令格式 | 说明 |
cmd1 ; cmd2 | 多命令顺序执行,不考虑命令相关性 |
cmd1 && cmd2 | 若cmd1执行结果正确($?=0),执行cmd2 若cmd1执行结果错误($?!=0),不执行cmd2 |
cmd1 || cmd2 | 若cmd1执行结果正确($?=0),不执行cmd2 若cmd1执行结果错误($?!=0),执行cmd2 |
实例:ls 文件 && echo "exist" || echo "not exist"
管道命令(pipe)————
作用:cmd1的正确输出作为cmd2的操作对象
语法:cmd1 | cmd2
通配符————
符号 | 意义 |
? | 代表任一字符 |
* | 代表0个或多个任意字符 |
[ ] | 匹配[ ]中任一字符 |
[ - ] | 匹配[ - ]范围中任一字符 |
[ ^ ] | 代表非[ ]中任一字符 |
Bash的变量
环境变量————
bash中的环境变量用来存储shell会话和系统操作环境的相关数据,这些数据用来识别用户账户、系统、shell特性及用户需要存储的信息。很多脚本和程序通过环境变量访问系统信息、存储临时数据和配置信息。环境变量分为两类:
1) 局部环境变量
作用范围:只在当前shell生效
查看所有环境变量语法:set
设置局部环境变量:变量名=变量值
删除环境变量:unset 变量名
查看单个环境变量:echo $变量名
2) 全局环境变量
作用范围:当前shell和此shell的所有子shell生效
查看全局变量语法:printenv
设置全局变量语法:export 变量名=变量值
备注:环境变量、等号和值之间没有空格
用户自定义变量————
shell允许用户自定义变量。变量名称可以由字母、下划线和数字组成,不能以数字开头。
变量定义语法:变量名=变量值
变量值的使用语法:$变量名
预定义变量————
预定义变量是bash中系统已定义的变量,变量名不能更改,作用固定,可修改变量值。
预定义变量 | 说明 |
$? | 返回命令执行结果,正确执行返回0,执行错误返回非0 |
$$ | 当前进程的进程号(PID) |
$! | 最后一个后台运行进程的进程号(PID) |
位置参数变量————
位置参数变量是预定义参数中的一种,主要用来向脚本文件传递参数或数据,变量名不能更改,作用固定,可修改变量值。
位置参数变量 | 说明 |
$n | $0表示命令本身,10之后的参数需用${ }表示 |
$* | 代表所有参数,且为一个整体 |
$@ | 代表所有参数,且区分每个参数 |
$# | 代表参数个数 |
Bash运算
方法1
运用declare声明变量类型
语法:declare +/- 选项 变量名
选项:- 给变量设定类型属性
+ 取消变量的类型属性
-i 将变量声明为整型
-x 将变量声明为环境变量
-p 显示指定变量的声明类型
方法2
expr数值运算工具
语法:变量=$(expr operation)
备注:运算符左右需加空格
方法3
使用方括号或双括号
$[operation]或$((operation))