Shell是一种命令行界面,也是一种编程语言,熟练掌握Shell能够大大提升Unix/Linux环境下的工作效率。
基本概念
终端:获取用户输入、展示运算结果的硬件设备
tty(teleypeWriter):和终端等价,早期指电传印记,在Linux中是输入/输出环境
终端模拟器:关联虚拟tty的输入输出软件
Shell:命令行解释器(command interpreter),处理来自终端模拟器的输入,解释执行之后输出结果
Bash:shell的一种具体实现(shell和bash类似类和实例的关系)
构成
语法和命令
-
变量
- 自定义变量:作用域为当前shell,声明方式为=,类型为为字符串(默认)、整型、浮点型、日期型
- 环境变量:作用域为当前shell 及其子shell,使用export、declare -x声明
- 系统环境变量:作用域为所有shell,在Shell启动时加载
-
自定义变量
-
变量名=变量值(等号左右不能有空格)
num=1 -
将命令复制给变量
_ls=ls -
将命令结果赋值给变量 file_ list=$(ls -a)
-
默认字符串,不会进行+运算(数值计算不能直接+)
total=page_ size*page_ num -
声明变量为整型
let total=page_ sizepage_ num
declare -i total=page_sizepage_num -
导出环境变量
export total declare -X total(-、+指的是取消或者赋予变量属性)
-
-
系统环境变量
-
运算符和引用
-
管道
- 管道与管道符|,作用是将前一个命令的结果传递给后面的命令
- 语法:cmd1| cmd2
- 要求:管道右侧的命令必须能接受标准输入才行,比如grep命令,Is、mv等不能直接使用,可以使用xargs预处理
- 注意: 6管道命令仅仅处理stdout,对于stderr会予以忽略,可以使用set -o pipefail 设置shell遇到管道错误退出
-
重定向
输出重定向符号
>:覆盖写文件
>>: 追加写入文件
2>:错误输出写入文件
&>:正确和错误输出统一写入到文件中.输入重定向符号
<
<<