1、shell
解释器,编译器,翻译官,与内核进行沟通的界面,应用程序就是把我们的代码翻译成二进制,让内核进行处理
例:打开音乐→播放音乐→shell→二进制→内核→调度cpu,内存,网卡,硬盘,调用硬件→声卡→音乐播放
shell是一个特殊的应用程序,介于操作系统和用户之间,扮演的是命令解释的角色,用户输入操作指令,shell解释,传递给内核,内核执行完从shell返回,给用户一个执行结果
2、bin/bash
bash是目前linux版本默认的shell shell shell:脚本语言,按行执行,顺序执行,动态语言。也是编程语言的一种,用来控制软件应用程序,脚本通常都是以文本的形式保存,只在被调用的时候才进行解释或者编译
3、shell脚本的应用场景
- 重复性操作
- 交互性任务
- 批量事务处理
- 服务的运行状态监控
- 定时任务执行
4、简单的shell脚本
实现效果
5、脚本运行方式
调试阶段,可以不赋权执行
sh first.sh
bash first.sh
source first.sh
一旦正式上线,必须要给执行权限运行
./first.sh
chmod 777 first.sh
6、交互式硬件设备
标准输入:从该设备接收用户输入的数据
标准输出:通过该设备向用户输出数据
标准错误:通过该设备报告执行出错信息
7、重定向操作
重定向输入:
重定向输出:
覆盖原有内容:>
将输出结果追加到指定的文件尾部:>>
8、管道符 |
将左侧的命令输出结果,作为右侧命令的处理对象
9、shell变量的作用
变量的作用:用来存放系统和用户需要使用的特定参数(值)
变量名:使用固定的名称,由系统预设或用户定义
变量值:能够根据用户设置、系统环境的变化而变化
打印变量的值,前面要加$,echo $a
1、不要使用系统的命令作为变量名
2、不要使用中文
3、不能特殊符号开头 可以用_下划线来开头
4、在指定变量名的时候有一个默认的规则:计算机:computer 学生:student a= b=
5、要有注释
变量类型:
整数:int
字符串:string
布尔:真 假 0 1
浮点:1.1 2.2
10、变量的类型
自定义变量:由用户自己定义、修改和使用
定义新的变量
格式:变量名=变量值
变量命名规则:以字母或下划线开头,区分大小写
new=theone
查看变量的值
格式:echo $变量名
echo $product $version
${}是一种特殊的语法形式,用于获取变量的值或者对变量进行操作。
${}语法可以应用于任何变量名称,其中变量名称放在花括号中,例如\${product},其中VAR是变量名。
readonly 命令设置只读变量
[root@localhost opt]# echo $w1
ww
[root@localhost opt]# readonly w1 #设置为只读变量
[root@localhost opt]# echo $w1
ww
[root@localhost opt]# w1=wq #只读变量不可以被重新赋值
-bash: w1: 只读变量
[root@localhost opt]# unset w1 #只读变量不可以被删除,unset 命令用于删除变量
-bash: unset: w1: 无法反设定: 只读 variable
11、弱引用和强引用
"$name " 弱引用,其中的变量引用会被替换为变量值
'$name ' 强引用,其中的变量引用不会被替换为变量值,而保持原字符串
12、read命令获取输入内容
13、全局变量
在程序或脚本中定义的具有全局范围的变量
这意味着全局变量在整个程序或脚本的不同部分都是可见和可访问的,而不仅限于特定的函数、方法或代码块。
全局变量的主要特点包括:
全局范围: 全局变量在整个程序或脚本的各个部分都是可见和可访问的。
持久性: 全局变量的生命周期与程序的执行时间相同。它们在程序启动时创建,在程序结束时销毁。
共享性: 全局变量可以在程序的不同函数或方法之间共享数据。这样,多个函数可以使用和修改相同的全局变量。
潜在的副作用: 全局变量的使用可能导致副作用和潜在的复杂性。
因为全局变量是可访问的,所以它们可以被任何函数修改,
这可能导致程序状态的不确定性和难以调试的问题。
14、环境变量
环境变量由系统提前创建,用来设置用户的工作环境
使用 env 命令可以查看到当前工作环境下的环境变量
变量USER表示用户名称,HOME表示用户的宿主目录,LANG表示语言和字符集,PWD表示当前所在的工作目录,
变量PATH表示可执行程序的默认搜索路径