shell基础

2026-3-31 6 3/31

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 变量命名

变量命名的要求:

  1.  不能以数字开头
  2. 不能以特殊符号开头,可以用"_"开头
  3. 推荐字母开头

变量命名的方式:

  1. 驼峰方式:personOfName   personOfAge
  2. 现代式:单词(小写)+"_下划线"person_of_name
  3. 不要写,不能写直接表示含义的变量 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 -

delu

4月21日00:22

最后修改:2026年4月21日
0

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论