目录
一、什么是shell
1.什么是shell
2.shell的功能
3.语言分类
二、创建shell脚本
1.shell脚本:使用文件***.sh
2.补全脚本文件
3.使用shell
三、认识解析器
1.查看解析器
2.认识相关解析器
3.运行一个脚本文件
四、环境变量
4.1 查看环境变量
4.2 如何修改PATH路径
4.2.1 只对当前终端有效
4.2.2 对当前用户有效~/.bashrc
4.2.3 对所有用户有效
4.2.4 对所有用户有效
五、shell的变量
5.1 shell变量的格式
5.2 shell变量的初始化
5.3 引用shell的变量的值
5.4 位置变量
六、输出
6.1 echo
一、什么是shell
1.什么是shell
shell: 贝壳,本质是指针的集合,但是在使用时需要满足一定的逻辑
2.shell的功能
shell是用于用户和操作系统的交互核心接口
3.语言分类
c:属于编译型语言,需要使用gcc进行编译,当文件不改变时,不需要重新编译,直接连接即可,执行速度快
shell:属于解释性语言,使用解析器bash,无论文件是否改变,每次都需要重新解析,相对来说效率低
二、创建shell脚本
1.shell脚本:使用文件***.sh
vim ***.sh
2.补全脚本文件
#! 后面敲一个tab键
#!/bin/bash ---->表示使用的时bash解析器
#! ---->表示这是一个脚本文件
/bin/bash --->表示使用的解析器的路径
3.使用shell
bash">1.单行注释# ---》单行注释
2.shell不存在多行注释,但是可以使用指令模拟多行注释,注意在使用过程中有可能出现报错<<CONMENDCOMMENDCOMMEND:类似标识符
三、认识解析器
1.查看解析器
1.echo $SHELL -->打印SHELL变量的值
2.cat /etc/shells
2.认识相关解析器
bash: 在Linux\debian默认使用的就是 bash
sh :最早期的解析器,交互性差
dash:是轻量级的sh,类似sh
csh:类似C语言
ksh:兼容sh csh
3.运行一个脚本文件
bash">1.执行脚本文件bash ****.sh 默认在当前终端下的子终端运行,把运行结果返回到当前终端
2.执行脚本文件,具备可执行权限chmod 777 ***.sh 默认在当前终端下的子终端运行,把运行结果返回到当前终端./***.sh
3.执行脚本文件source ***.sh 直接在当前终端运行
四、环境变量
4.1 查看环境变量
env
环境变量:系统已经定义的变量,并表示一定的含义
bash">SHELL=/bin/bash
LOGNAME=ubuntu
HOME=/home/ubuntu
USERNAME=ubuntu
USER=ubuntu
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/
如果文件类似指令执行,那么就需要把文件的路径添加到PATH环境变量里面
4.2 如何修改PATH路径
4.2.1 只对当前终端有效
bash">1.修改PATH里面的值,export PATH=$PATH:/home/ubuntu/24121C高级/day2/| | | || | | 需要添加的文件路径| | 展开PATH的值| 环境变量的路径类似extern,导出环境变量注意可以使用echo $PATH查看PATH里面的内容
2.给文件添加可执行权限chmod 777 ***.sh
3.执行使用文件名执行脚本即可****.sh
4.2.2 对当前用户有效~/.bashrc
bash">1.打开vim ~/.bashrc文件,在最后添加以下语句export PATH=$PATH:/home/ubuntu/24121C高级/day2/| | | || | | 需要添加的文件路径| | 展开PATH的值| 环境变量的路径类似extern,导出环境变量
2.使文件生效source ~/.bashrc 或者 重启
3.给文件添加可执行权限chmod 777 ***.sh
4.执行使用文件名执行脚本即可****.sh
4.2.3 对所有用户有效
bash">1.打开sudo vim /etc/bash.bashrc文件,在最后添加以下语句export PATH=$PATH:/home/ubuntu/24121C高级/day2/| | | || | | 需要添加的文件路径| | 展开PATH的值| 环境变量的路径类似extern,导出环境变量
2.使文件生效source /etc/bash.bashrc 或者 重启
3.给文件添加可执行权限chmod 777 ***.sh
4.执行使用文件名执行脚本即可****.sh
4.2.4 对所有用户有效
bash">1.打开sudo vim /etc/environment文件,在最后添加路径
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/ubuntu/24121C高级/day2/"2.使文件生效source /etc/environment 或者 重启
3.给文件添加可执行权限chmod 777 ***.sh
4.执行使用文件名执行脚本即可****.sh
五、shell的变量
5.1 shell变量的格式
1,shell的不变量不存在类型,默认都是字符串
2.shell的变量默认都是全局变量
bash">1.shell变量的格式变量 error,因为shell认为是指令类似ls变量= 定义了变量值为空变量=初始化的值
2.例如a errora= √a=hello √
5.2 shell变量的初始化
1.shell初始化时等号的左右两端不允许存在空格
2.shell中不需要加分号
a = hello ---> ls -l -h 1.sh
bash">1.格式变量=初始化的值变量='初始化的值'变量="初始化的值"
2.当初始化的值不存在空格时var=hellovar='hello'var="hello"
3.当初始化的值存在空格var=hello world errorvar='hello world' √var="hello world"
4.当一个变量给另一个变量赋值的时候a=hellob=$a --->b=hellob='$a' --->b=$ab="$a" ---b=helloc=$aworld -->认为aworld是一个变量,得不到helloworldc=${a}world -->c=helloworld
5.变量的连接a=hellob=worldc=$a$b -->c=helloworldc='$a$b' --->c=$a$bc="$a$b" --->c=helloworld练习:定义a赋值 b赋值,实现ab的交换
5.3 引用shell的变量的值
bash">方式1:$变量名 ---》echo $SHELL
方式2:${变量}
5.4 位置变量
1.位置变量类似C语言的argc argv
2.位置变量多用于shell中的函数传参
bash">$0 终端输入的文件名
$1 终端输入的第一个字符串
$2 终端输入的第二个字符串
$3 终端输入的第三个字符串
...
$10 终端输入的第一个字符串后面加0
${10} 终端输入的第10个字符串
$n 终端输入的第n个字符串
六、输出
6.1 echo
注意:在shell中使用变量时不建议使用'',原因时因为单引号引起来以后不会展开结果
bash">echo 字符串 ---》echo hello
echo '字符串' ---->echo 'hello'
echo "字符串" ---->echo "hello"输出变量:a=1b=2c=3echo a=$a --->a=1echo a=$a b=$b c=$c -->a=1 b=2 c=3echo 'a=$a b=$b c=$c' -->a=$a b=$b c=$cecho "a=$a b=$b c=$c" -->a=1 b=2 c=$3