)
CentOS7 课堂实操Shell变量与用户组完整教程前言本篇完全根据7.17课堂笔记整理全部命令采用liuyifeicentos7终端格式分为两大核心板块Shell变量全套实操、Linux用户与组管理覆盖定义变量、环境变量、持久化配置、引号转义、用户/组增删改、密码时效、常见故障修复命令可直接复制到CentOS7运行配套课后练习巩固知识点。一、Shell 基础变量实操1. 变量定义、取值、基础操作变量存储在当前终端内存命名仅支持字母、数字、下划线不能以数字开头Shell无需声明数据类型。liuyifeicentos7 ~16:15:01$var1key1 liuyifeicentos7 ~17:17:48$echo$var1key1# 多变量演示liuyifeicentos7 ~17:17:57$first_nameyifei liuyifeicentos7 ~17:20:04$last_nameliu liuyifeicentos7 ~17:20:14$echo$last_name$first_nameliu yifei# 双引号保留多个空格liuyifeicentos7 ~17:20:40$echo$last_name$first_nameliu yifei# 变量拼接歧义问题liuyifeicentos7 ~17:22:02$echo$last_name_$first_nameyifei# {} 大括号限定变量边界解决拼接识别错误liuyifeicentos7 ~17:23:55$echo${last_name}_${first_name}liu_yifei# 查看当前所有变量、函数liuyifeicentos7 ~17:24:24$set|grepfirst_namefirst_nameyifei# 销毁变量liuyifeicentos7 ~17:25:59$unsetfirst_name liuyifeicentos7 ~17:27:19$echo$first_name# declare 实现变量大小写转换liuyifeicentos7 ~17:27:34$declare-lnameLIUYIFEI liuyifeicentos7 ~17:28:43$echo$nameliuyifei liuyifeicentos7 ~17:28:53$declare-unameliuyifei liuyifeicentos7 ~17:29:14$echo$nameLIUYIFEI2. 常用系统环境变量详解环境变量分为系统内置环境变量、用户自定义变量控制Shell整体运行环境。环境变量作用说明EDITOR默认编辑器visudo等工具读取该变量LANG系统语言编码控制日期、报错中英文PATH命令检索路径系统查找程序目录PS1终端命令提示符样式HISTTIMEFORMAThistory命令显示时间格式HOME当前用户家目录USER当前登录用户名PWD当前所在工作目录2.1 EDITOR 默认编辑器# root执行默认vi无语法高亮[rootcentos7 ~17:33:30]# visudo# 临时指定vim为编辑器[rootcentos7 ~]# export EDITOR/bin/vim[rootcentos7 ~]# visudo# 单次临时生效不改变全局环境[rootcentos7 ~]# EDITOR/bin/vim visudo2.2 LANG 语言切换liuyifeicentos7 ~17:36:39$date2026年 07月17日 星期五17:37:04 CST# 切换英文liuyifeicentos7 ~17:37:04$exportLANGen_US.utf8 liuyifeicentos7 ~17:37:30$dateFri Jul1717:37:33 CST2026# 切回中文liuyifeicentos7 ~17:37:33$exportLANGzh_CN.utf8 liuyifeicentos7 ~17:37:57$date2026年 07月17日 星期五17:38:00 CST# 编码说明en_US.utf8英文、zh_CN.utf8简体中文、zh_TW.utf8繁体中文2.3 PATH 命令搜索路径liuyifeicentos7 ~17:38:00$echo$PATH/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin# 移动ls程序PATH找不到命令[rootcentos7 ~]# mv /usr/bin/ls .liuyifeicentos7 ~17:41:28$lsbash: ls: 未找到命令...# 恢复原始PATH[rootcentos7 ~]# PATH/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin# 追加/root目录到PATH[rootcentos7 ~]# export PATH$PATH:/rootliuyifeicentos7 ~17:43:41$lsanaconda-ks.cfg initial-setup-ks.cfgls# 还原ls程序位置[rootcentos7 ~]# mv ./ls /usr/bin2.4 PS1 自定义命令提示符liuyifeicentos7 ~17:54:25$echo$PS1\[\e[1;31m\]\u\[\e[1;33m\]\[\e[0m\]\[\e[92;1m\]\h\[\e[0m\]\[\e[94m\]\W\[\e[m\]\[\e[35m\]\t\[\e[m\]$# 简易修改提示符liuyifeicentos7 ~17:54:34$PS1HELLO HELLOechohello world hello world# 常用转义字符说明\h 主机短名\H完整主机\t24小时时间\u用户名\w完整路径\W目录名\#普通用户$ root## 带时间提示符liuyifeicentos7 ~$PS1[\u\h \W \t]\$ # 显示完整工作目录liuyifeicentos7 ~$PS1[\u\h \w \t]\$ liuyifeicentos7 ~$cd/usr/share/doc liuyifeicentos7 /usr/share/doc13:53:04$# 彩色提示符永久配置root写入全局[rootcentos7 ~]# echo PS1[\[\e[91m\]\u\[\e[0m\]\[\e[93m\]\[\e[0m\]\[\e[92;1m\]\h\[\e[0m\] \[\e[94m\] \W\[\e[0m\] \[\e[35m\]\t\[\e[0m\]]\[\e[93m\]\$\[\e[0m\] /etc/bashrc2.5 HISTTIMEFORMAT 历史命令时间# 完整年月日时分秒exportHISTTIMEFORMAT%F %T # 简洁月-日 时:分exportHISTTIMEFORMAT%m-%d %H:%M liuyifeicentos7 ~$history3. 变量持久化永久生效配置区分两种Shell登录模式加载配置文件不同login shellssh远程登录加载顺序/etc/profile→ ~/.bash_profile → ~/.bashrc → /etc/bashrcnologin shell新开bash子窗口~/.bashrc → /etc/bashrc# 全局配置英文语言所有ssh登录生效[rootcentos7 ~14:28:15]# echo export LANGen_US.utf8 /etc/profile# ssh登录验证liuyifeicentos7 ~14:29:48$dateSat Jul1814:30:23 CST2026# 全局配置默认编辑器新开bash生效[rootcentos7 ~14:33:42]# echo export EDITORvim /etc/bashrc# 新开子shell验证liuyifeicentos7 ~$bashliuyifeicentos7 ~$echo$EDITORvim4. 命令替换 $() 和 反引号作用抓取命令输出结果嵌入字符串、文件名liuyifeicentos7 ~15:35:08$echoToday isdate%AToday is 星期六 liuyifeicentos7 ~15:35:20$echoThetimeis$(date%M)minutes past$(date%l%p).Thetimeis35minutes past3下午.# 按日期创建文件两种写法等价liuyifeicentos7 ~15:35:45$touchfile-$(date%Y%m%d)liuyifeicentos7 ~$touchfile-date%Y%m%dliuyifeicentos7 ~15:36:10$lsfile-20260717 file-20260718# 算术展开 $[] 实现1~100求和liuyifeicentos7 ~15:36:13$echo$[123]6liuyifeicentos7 ~15:37:43$echo{1..3}123liuyifeicentos7 ~15:39:21$echo{1..3}|tr 123 liuyifeicentos7 ~16:52:04$echo$[$(echo{1..100}|tr )]50505. 转义符与三种引号区别\转义单个特殊字符取消$、通配符的特殊功能双引号保留空格解析变量、命令替换通配符失效单引号所有内容原样输出不解析任何变量、命令liuyifeicentos7 ~16:52:32$echo$PATH/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/liuyifei/.local/bin:/home/liuyifei/bin# 转义$原样输出liuyifeicentos7 ~16:58:12$echo\$PATH$PATHusernameliuyifei# 不加引号空格、特殊字符被shell拆分liuyifeicentos7 ~16:59:43$echo******* Welcome$usernameto Linux Classroom On$(date%F)********# 双引号保留空格正常解析变量和命令liuyifeicentos7 ~17:01:11$echo******** Welcome$usernameto On$(date%F)********# 双引号内\可转义$原样打印$符号liuyifeicentos7 ~17:02:58$echo******** Welcome \$usernameto m On \$(date%F)********# 单引号完全不解析全部原文输出liuyifeicentos7 ~17:04:46$echo******** Welcome $username to Linux Classroom On $(date %F) ********二、Linux 用户与组管理1 用户分类root超级用户UID0拥有系统全部权限系统用户后台服务进程使用登录shell为/sbin/nologin禁止交互式登录普通用户日常登录操作账号核心配置文件说明/etc/passwd 用户基础信息格式用户名: x :UID:GID:描述:家目录:登录shell示例liuyifeicentos7 ~$grepliuyifei /etc/passwd liuyifei:x:1000:1000::/home/liuyifei:/bin/bash# 系统用户示例liuyifeicentos7 ~$greppostfix /etc/passwd postfix:x:89:89::/var/spool/postfix:/sbin/nologin/etc/group 用户组信息格式组名: x :GID:附属用户列表liuyifeicentos7 ~$grepwheel /etc/group wheel:x:10:laoma,liuyifei/etc/shadow 加密密码文件9段字段存储加密密码、密码有效期、账户过期策略主组 vs 附属补充组主组创建用户默认同名组新建文件默认归属主组passwd中GID标识附属组用户额外加入权限组usermod -aG添加不加-a会覆盖原有附属组liuyifeicentos7 ~$iduid1000(liuyifei)gid1000(liuyifei)groups1000(liuyifei),10(wheel)liuyifeicentos7 ~$id-uliuyifei10002 用户查看命令# 查看当前登录账号liuyifeicentos7 ~$whoamiliuyifei# 查看所有在线终端用户liuyifeicentos7 ~$who# 查看在线用户负载、进程liuyifeicentos7 ~$ w# 仅打印在线用户名liuyifeicentos7 ~$users3 用户管理命令root执行useradd 创建用户# 最简创建用户user01[rootcentos7 ~]# useradd user01liuyifeicentos7 ~$grepuser01 /etc/passwd# 自定义UID、家目录、主组、登录shell[rootcentos7 ~]# useradd -u 8888 -d /opt/user02 -c software manager -g wheel -s /sbin/nologin user02# 用户初始化模板目录 /etc/skelliuyifeicentos7 ~$ls-a/etc/skel# 用户默认配置文件 /etc/login.defs[rootcentos7 ~]# vim /etc/login.defsusermod 修改用户属性# 修改UID、迁移家目录、更换登录shell[rootcentos7 ~]# usermod user02 -u 1008 -md /home/user02 -s /bin/bash# 添加附属组-a 追加不覆盖[rootcentos7 ~]# usermod -aG user01 user02liuyifeicentos7 ~$iduser02uid1008(user02)gid10(wheel)groups10(wheel),1003(user01)# -L 锁定密码 -U解锁[rootcentos7 ~]# usermod -L user02[rootcentos7 ~]# usermod -U user02# 修改登录shell禁止登录[rootcentos7 ~]# usermod -s /sbin/nologin user02userdel 删除用户[rootcentos7 ~]# useradd user03[rootcentos7 ~]# userdel user03# 用户在线无法直接删除慎用-f强制删除[rootcentos7 ~]# userdel -f user024 用户组管理命令groupadd 创建组[rootcentos7 ~]# groupadd admin# 指定GID创建组[rootcentos7 ~]# groupadd -g 2000 sysadminliuyifeicentos7 ~$grepadmin /etc/groupgroupmod 修改组名、GID[rootcentos7 ~]# groupmod --new-name admins admin[rootcentos7 ~]# groupmod -g 2002 adminsgroupdel 删除空组[rootcentos7 ~]# groupdel sysadmingroupmems 管理组内成员# 添加用户到组[rootcentos7 ~]# groupmems -g admins -a liuyifei# 列出组内所有成员[rootcentos7 ~]# groupmems -g admins -l# 删除组内成员[rootcentos7 ~]# groupmems -g admins -d liuyifei# 清空所有组成员[rootcentos7 ~]# groupmems -g admins -p5 密码时效管理 chage# 查看用户完整密码策略liuyifeicentos7 ~$ chage-lliuyifei# 设置密码最大有效期100天[rootcentos7 ~]# chage -M 100 liuyifei# 最小修改间隔10天[rootcentos7 ~]# chage -m 10 liuyifei# 强制下次登录修改密码[rootcentos7 ~]# chage -d 0 liuyifei# 设置账户过期日期[rootcentos7 ~]# chage -E 2026-07-18 liuyifei