1.shell命令解释器
1.1常用命令解释器
|
命令解释器
|
|
|
bash
|
目前应用最广泛一款命令解释器,红帽系列(默认),Debian,Ubuntu,
BASH全称: Bourne-Again SHell
|
|
dash
|
一般debian/ubuntu系统默认的, 运行脚本推荐使用
|
|
csh,tcsh
|
一些unix系统使用
|
|
zsh
|
功能更多,支持更多的插件,可以更好看
|
2.编程语言分类
|
编程语言分类
|
说明
|
|
解析型:直接解析类
|
shell,python,php, 书写成文件后,可以通过对应的解释器直接运行
|
|
编译型:需要编译后运行
|
C,C++,Java(maven),Golang. 下载好源代码,必须要进行编译生成可以运行的命令
|
3.编程环境准备
-
修改vimrc文件,达到控制vim创建,编辑文件的动作当前用户家目录下 ~/.vimrc(当前用户生效)放在/etc/vimrc (红帽系列) /etc/vim/vimrc(ubuntu debian)追加以下内容
set ignorecase
autocmd BufNewFile *.py,*.cc,*.sh,*.java,*.bash exec ":call SetTitle()"
func SetTitle()
if expand("%:e") =~ 'sh\|bash'
call setline(1, "#!/bin/bash")
call setline(2,"##############################################################")
call setline(3, "# File Name:".expand("%"))
call setline(4, "# Version:V1.0")
call setline(5, "# Author:delu")
call setline(6, "# Organization:www.delu7.cn")
call setline(7, "# Desc:脚本内容")
call setline(8,"##############################################################")
endif
endfunc
4.Shell脚本执行方式
4.1 #! 符号含义
sha-bang
并非注释的意思,写在脚本开头.
用于指定脚本默认的命令解释器.
|
命令解释器
|
写法
|
|
bash
|
#!/bin/bash
|
|
python
|
#!/usr/bin/python2 或 ##!/usr/bin/python3
|
4.2概述
|
执行方法
|
应用场景与说明
|
|
通过sh或bash🌟🌟🌟🌟🌟
|
书写脚本后,最常用的方式, 🌟
⚠ 在其他非红帽系统中,建议使用bash 运行脚本 .
|
|
通过.(点)或source 🌟
|
🅰 加载/生效配置文件(环境变量,别名) /etc/profile
🅱 常用:可以用来实现include功能,把其他脚本引入到当天
脚本中
|
|
通过相对或绝对路径
|
我们一般不推荐使用这种,一般都是==系统脚本/服调用的脚本,脚本需要加上执行权限才能用
|
5.从变量开始
关于变量的本质:
变量内存中的一块空间,变量名字==>内存空间地址.
5.1 变量命名
变量命名的要求:
- 不能以数字开头
- 不能以特殊符号开头,可以用"_"开头
- 推荐字母开头
变量命名的方式:
- 驼峰方式:personOfName personOfAge
- 现代式:单词(小写)+"_下划线"person_of_name
- 不要写,不能写直接表示含义的变量 a1=gao a2=gwh a3=123
5.2变量分类
|
分类
|
说明
|
要求
|
|
普通变量 (局部变量)
|
我们在脚本中通过 gwh=形式创建就是普通变量.
|
常用,必会
|
|
环境变量(全局变量)
|
一般都是系统创建,PATH,PS1,LANG...
|
掌握几个常用的环境变量及含义
|
|
特殊变量⭐ ⭐ ⭐
|
$+特殊符号, shell脚本,命令,各种方面.
|
shell编程核心
|
1) 普通变量
$符号变量命令,取出变量内容(取值)
[root@gao-kylin ~]# love=520
[root@gao-kylin ~]# echo $love
520
####因为shell认为lovegwh是一个变量,当前环境没有这个变量,所以取值为空
[root@gao-kylin ~]# echo $lovegwh
[root@gao-kylin ~]# echo ${love}gwh
520gwh
温馨提示:
$与${}一致,可以用于取值
$变量
${变量}指定变量名字
2) 环境变量
- 全局变量:1处定义,处处使用
- 大部分都是系统定义的,我们一般就是修改
|
环境变量名字
|
含义
|
应用场景
|
|
PATH ❤❤❤❤❤
|
记录命令位置的环境变量,运行命令的时候bash会在
PATH的路径中查找
|
通过二进制包或编译安装软件,增加新的命令路径
|
|
LANG ❤❤❤❤❤
|
系统语言与字符集
Language 中文 LANG=zh_CN.UTF8
系统语言 英语 LANG=en_US.UTF8
|
修改语言字符集
|
|
PS1 ❤❤
|
命令行格式
|
修改命令行格式,生产环境不推荐修改.
|
|
UID或EUID❤
|
用户的uid,用于判断当前用户是否为root
|
用于脚本判断用户是否root
|
|
HOSTNAME❤
|
主机名
|
|
|
历史四人组
|
history命令 历史命令相关
|
|
|
HISTSIZE❤❤
|
※ history 命令记录最多多条指令, 生产环境尽量少
|
未来安全优化配置
|
|
HISTFILESIZE❤❤
|
※ history 历史记录文件的大小 ~/.bash_history 生产环境尽量少
|
未来安全优化配置
|
|
HISTCONTROL❤❤
|
※ 控制历史命令记录或不记录哪些内容 生产环境
ignorespace 以空格开头的命令 不记录
|
未来安全优化配置
|
|
HISTFILE❤❤
|
※ 指定历史命令的记录文件的名字和位置.默认当前用户家目录 .bash_history
|
未来安全优化配置 或 手写跳板机/行为审
计
|
|
其他
|
||
|
PROMPT_COMMAND❤❤
|
存放命令,命令行执行命令后会运行这个变量的内容,用于实现行为审计(记录用户操作)
|
手写跳板机/行为审计
|
|
IFS
|
类似于awk -F 指定分隔符(指定每一列的分隔符)
|
一般与循环配合读取文件内容
|
|
TMOUT❤❤
|
超时自动退出时间
|
未来安全优化配置
|
5.3特殊变量 ⭐ ⭐ ⭐ ⭐ ⭐
1.特殊变量-位置变量⭐ ⭐ ⭐ ⭐ ⭐
|
位置的特殊变量
|
含义
|
应用场景
|
|
$n(数字)
|
脚本的第n个参数
|
命令行与脚本内部桥梁
|
|
$0
|
脚本的名字
|
用于输出脚本的格式或帮助的时候。用于错误提示输出帮助
|
|
$#
|
脚本参数的个数
|
一般与判断结合,检查脚本参数个数
|
|
$@
|
取出脚本所有参数(2,3,,4....$n)。
|
数组中或循环中
|
|
$*
|
取出脚本所有参数(2,3,4....$n)。
|
数组中或循环中。
|
- THE END -
最后修改:2026年4月21日
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://7d.delu7.cn/75/.html
共有 0 条评论