Linux 运维 / Shell 技巧,保姆级入门
·

Shell 基础
变量定义和查看
Linux 使用变量临时字符串值,便于后续引用。变量值存储在当前会话内存中。
变量名只能包含:字母、数字、下划线。变量名不能以数字开头。
shell中变量的类型,一般不需要明确指明。
# ====================== EDITOR 环境变量:指定visudo使用的编辑器 ======================
# visudo 默认调用vi编辑sudo配置文件/etc/sudoers,无语法高亮
[root@centos7 ~]# visudo
# 全局临时设置编辑器为vim,后续所有visudo都用vim打开
[root@centos7 ~]# export EDITOR=/bin/vim
# 单次执行visudo时临时指定vim,仅本次命令生效
[root@centos7 ~]# EDITOR=/bin/vim visudo
# 使用vim编辑/etc/sudoers,自带语法高亮,防止sudo配置语法错误
# ====================== LANG 环境变量:控制系统语言、日期、字符编码 ======================
# 查看当前中文格式日期
[root@centos7 ~]# date
2022年 11月 07日 星期一 13:38:31 CST
# 临时切换系统语言为英文utf8编码
[root@centos7 ~]# export LANG=en_US.utf8
# 切换后日期显示英文格式
[root@centos7 ~]# date
Mon Nov 7 13:38:55 CST 2022
# 切回简体中文utf8编码
[root@centos7 ~]# export LANG=zh_CN.utf8
# 恢复中文日期展示
[root@centos7 ~]# date
2022年 11月 07日 星期一 13:40:49 CST
# 常用LANG编码对照表
# 英语:en_US.utf8
# 简体中文:zh_CN.utf8
# 繁体中文:zh_TW.utf8
# ====================== PATH 环境变量:系统检索外部命令的目录列表 ======================
# 查看当前系统命令搜索路径
[root@centos7 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
# 将ls命令从系统目录移到家目录,PATH找不到ls命令
[root@centos7 ~]# mv /usr/bin/ls .
# 执行ls报错command not found
[root@centos7 ~]# ls
bash: ls: command not found...
Similar command is: 'lz'
# 查找ls命令位置,无法检索到
[root@centos7 ~]# which ls
alias ls='ls --color=auto'
Similar command is: 'lz'
# 手动重置PATH为系统默认原始值
[root@centos7 ~]# PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
# 在原有PATH尾部追加/root目录,让系统识别家目录内的ls
[root@centos7 ~]# export PATH=$PATH:/root
# 再次执行ls可正常运行
[root@centos7 ~]# ls
anaconda-ks.cfg initial-setup-ks.cfg ls
# 查看ls检索路径,此时读取/root/ls
[root@centos7 ~]# which ls
alias ls='ls --color=auto'
/root/ls
# 将ls命令移回系统默认命令目录/usr/bin,恢复原始环境
[root@centos7 ~]# mv ./ls /usr/bin
# ====================== PS1 环境变量:自定义终端命令行提示符样式 ======================
# 查看meng用户默认提示符配置
[meng@centos7 ~]$ echo $PS1
[\u@\h \W]\$
# 查看bash官方手册,搜索PROMPTING关键字查看所有提示符转义符说明
man bash
# 提示符转义符扩展说明:
# \h 主机名,第一个 `.` 之前的短主机名
# \H 完整主机名
# \n 换行符
# \t 当前时间,24小时制 HH:MM:SS
# \T 当前时间,12小时制 HH:MM:SS
# \@ 当前时间,12小时制带am/pm标识
# \A 当前时间,24小时制 HH:MM
# \u 当前登录用户名
# \w 当前完整工作目录
# \W 当前目录最后一级名称(简化目录)
# \$ root用户显示#,普通用户显示$
# 修改提示符固定为 HELLO
[meng@centos7 ~]$ PS1='HELLO '
HELLO echo hello world
hello world
# 自定义提示符:用户名@短主机名+简化目录+24小时时分秒
[meng@centos7 ~]$ PS1='[\u@\h \W \t]\$ '
[meng@centos7 ~ 13:52:08]$
# 自定义提示符:显示完整工作路径+时间
[meng@centos7 ~]$ PS1='[\u@\h \w \t]\$ '
[meng@centos7 ~ 13:52:56]$ cd /usr/share/doc
[meng@centos7 /usr/share/doc 13:53:04]$
# ====================== 彩色提示符颜色控制编码 ======================
# 颜色转义代码说明
# \[\e[0;30m\]:黑色
# \[\e[0;31m\]:红色
# \[\e[0;32m\]:绿色
# \[\e[0;33m\]:黄色
# \[\e[0;34m\]:蓝色
# \[\e[0;35m\]:紫色
# \[\e[0;36m\]:青色
# \[\e[0;37m\]:白色
# \[\e[0m\]:恢复终端默认颜色
环境变量
根据变量是否是用户定义:
- shell 环境内置变量:设置shell的运行环境。
- 用户自定义变量:字面意思,用户自己定义的变量,也就是普通变量。
部分shell环境变量如下:
| 环境变量名 | 作用 |
|---|---|
| EDITOR | 默认编辑器 |
| HISTFILE | 历史文件位置 |
| HISTFILESIZE | 历史命令个数 |
| HISTTIMEFORMAT | 历史命令时间格式 |
| PS1 | 命令行提示符 |
| LANG | shell 环境语言 |
| PATH | 命令搜素路径 |
| HOME | 当前用户家目录 |
| USER | 当前用户 |
| PWD | 当前shell路径 |
完整的shell 环境变量参考bash(1)。
题目
- 创建 operator1 用户
- 使用 id 验证 operator1 用户信息
- 查看 /etc/passwd 中对应条目
- 密码设置为 redhat
- 修改 operator1 用户uid为1088
- 修改 operator1 用户描述信息为"Operator One"
- 将 wheel 组作为补充组添加给 operator1 用户
- 查看 /etc/group 中对应条目
- 删除 operator1 用户
# 1. 创建 operator1 用户
useradd operator1
# 2. 使用 id 验证 operator1 用户信息
id operator1
# 3. 查看 /etc/passwd 中 operator1 对应条目
grep operator1 /etc/passwd
# 4. 设置用户密码为 redhat(--stdin 标准输入免交互设置密码)
echo redhat | passwd --stdin operator1
# 5. 修改 operator1 用户UID为1088
usermod -u 1088 operator1
# 6. 修改用户描述信息为 "Operator One",-c 指定注释信息
usermod -c "Operator One" operator1
# 7. 将 wheel 组作为补充附加组添加,-a 追加、-G 附加组
usermod -aG wheel operator1
# 8. 查看 /etc/group 中和 operator1 相关的组信息
grep operator1 /etc/group
# 9. 删除用户前置:杀掉该用户所有运行进程,否则删用户会报错占用
pkill -u operator1
# 10. 彻底删除用户,-r 同时删除家目录、邮箱、私有用户组
userdel -r operator1
更多推荐

所有评论(0)