在这里插入图片描述

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
202211月 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
202211月 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命令行提示符
LANGshell 环境语言
PATH命令搜素路径
HOME当前用户家目录
USER当前用户
PWD当前shell路径

完整的shell 环境变量参考bash(1)。

题目

  1. 创建 operator1 用户
  2. 使用 id 验证 operator1 用户信息
  3. 查看 /etc/passwd 中对应条目
  4. 密码设置为 redhat
  5. 修改 operator1 用户uid为1088
  6. 修改 operator1 用户描述信息为"Operator One"
  7. 将 wheel 组作为补充组添加给 operator1 用户
  8. 查看 /etc/group 中对应条目
  9. 删除 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
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐