大数据学习笔记(04)
bash
-
是什么:解释器,解释执行标准输入或文件输入
-
source file(. file):在当前shell执行file文件
-
bash file:开启一个子bash执行file文件
-
嵌套:通过bash命令可以嵌套bash
-
可执行文件:当给文件第一行加上#! /bin/bash并将文件改为可执行文件,直接执行,会读取第一行的/bin/bash,开启一个子bash来执行文件(也可以注释其它东西);不加注释,默认开启子bash执行文件
-
每一个bash会在/dev/pts/目录下生成一个虚拟终端文件
文本流及重定向
文本流 -
系统运行时,数据会在各个文件、设备之间流动,然而不同的文件和设备之间连接的方式可能各不相同,所以Unix系统定义了流,作为统一的标准
-
当系统执行一个命令时,会打开三个流:
标准输入:0
标注输出:1
错误输出:2
管道 -
作用:将不同的命令组合使用,实现复杂操作
-
用法:管道左边的结果会作为右边的参数
-
特点:
A. 管道两边分别会打开一个子bash
B. 父bash的变量会拷贝一份给子bash
export
- 作用:根据实验情况,暂且视为,将当前bash中的变量导出供父bash和子bash使用
- 注意:在文件中执行的命令,也会打开一个子bash执行,但是这个子bash不会像管道的子bash一样有父bash变量的拷贝
重定向 - 输出重定向
A. 不是命令
B. 控制程序的 I/O位置
C. ls 1> aaa(覆盖重定向):将结果输出到aaa文件中,会覆盖原内容
D. ls 1>> aaa(追加重定向):将结果追加在原内容后面
E. ls / /aabb 1> a 2>b:将标准输出重定向到a文件,错误输出重定向到b文件;注意,重定向的顺序由ls命令的结果决定,即ls命令先输出错误信息,那么就会先将错误输出重定向到b文件中,然后再是标准输出
F. 将标准输出和错误输出重定向到同一个文件
ls / /aabb 1>a 2>a
ls / /aabb 1>a 2>&1:绑定顺序从左到右,所以需要先将1重定向到a,否则会将2输出到控制台,然后将1输出到a文件
ls / /aabb &> a和ls / /aabb >& a:两种特殊写法 - 输入重定向:
A.
B. 输入AB结束输入;只读取第一行的输入
变量
- 类型:
A. 本地:当前shell所有;生命周期随当前shell;name=god;
B. 局部:只能用于定义它的函数;local name=god;
C. 位置:$1取第一个参数;脚本和函数可以使用
D. 数组:
E. 特殊:
$#:位置参数个数
$*:参数列表,双引号引用为一个字符串
$@:参数列表,双引号引用为单独的字符串
$?:上一个命令执行结果(0代表成功或true,非0代表报错或false)
$$:当前bash的进程ID
$BASHPID:当前bash的真实进程ID
- 注意:
A. 变量和字符串同时使用时,将变量用{}括起来
B. 位置变量
12
正
确
使
用
方
式
:
12正确使用方式:
12正确使用方式:{12}
引用和命令替换
引用
- 双引号:弱引用
- 单引号:强引用,不可嵌套
- 花括号不能被引用
- 命令执行前会删除引用
命令替换
- 作用:命令的嵌套
- 方式:
A. 反引号
B. $()
表达式
算数表达式
几种写法:
- let c= a + a+ a+b
- c= [ [ [a+ b ] c = b] c= b]c=[a+b]
- c=
(
(
((
((a+
b
)
)
c
=
b)) c=
b))c=((a+b))
当不需要赋值时,可以省略$符号:((a++))
条件表达式
两种写法: - test:test 3 -gt 4
- [ ]:[ test 3 -gt 4 ]
流程控制
if、while、for:查看帮助文档