飞翔飞翔
主页
  • 计算机基础

    • TCP/IP协议
    • Linux命令
  • 数据库

    • SQL教程
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON教程
  • 工具

    • Markdown指南
  • Git

    • GitFlow
  • Quartz

    • Quartz教程
  • Java

    • Java设计模式
  • 缓存

    • Redis教程
联系
阿里云
主页
  • 计算机基础

    • TCP/IP协议
    • Linux命令
  • 数据库

    • SQL教程
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON教程
  • 工具

    • Markdown指南
  • Git

    • GitFlow
  • Quartz

    • Quartz教程
  • Java

    • Java设计模式
  • 缓存

    • Redis教程
联系
阿里云
  • 学习路径
  • 基础入门

    • Linux 命令概述与环境准备
    • 文件与目录操作(上):ls、cd、pwd
    • 文件与目录操作(下):cat、touch、mkdir、rm、cp、mv
    • 获取帮助与基础工具:man、help、clear、exit、sudo
  • 文件权限

    • 文件权限管理:chmod、chown
  • 系统与监控

    • 进程管理与系统监控:ps、top、kill、df、du、free
    • 用户与环境:whoami、id、env、echo、history
  • 网络命令

    • 网络诊断(上):ping、curl、wget
    • 网络诊断(下):netstat、ss、ip
    • 网络抓包与高级工具:traceroute、tcpdump、nc
    • DNS 与防火墙:nslookup、dig、iptables
  • 文本处理

    • 文本搜索:grep
    • 文本处理(上):awk
    • 文本处理(下):sed
    • 文本排序与统计:sort、uniq、wc
    • 文件查看与查找:head、tail、cut、find
    • 归档压缩与管道组合:tar、gzip、xargs
  • 开发工具

    • 开发工具链(上):gcc、make
    • 开发工具链(下):gdb、time
    • 版本控制:git
    • 远程操作:ssh、scp
    • 编辑器:vim、nano
  • Shell 编程

    • Shell 编程基础(上):变量、管道、重定向
    • Shell 编程基础(下):条件、循环、函数
  • 综合实战

    • 综合实战:日志分析

用户与环境:whoami、id、env、echo、history

whoami 与 id:查看用户身份

whoami

whoami
# 输出:user

显示当前登录的用户名。简单直接,常用于脚本中判断执行者。

id

id
# 输出:uid=1000(user) gid=1000(user) groups=1000(user),4(adm),24(cdrom),27(sudo)

显示当前用户的 UID(用户 ID)、GID(组 ID)和所属的所有组。

UID 的特殊值

UID用户作用
0root超级用户,拥有所有权限
1-999系统用户运行系统服务(如 www-data, mysql)
1000+普通用户人类用户

env:查看环境变量

环境变量是 Shell 和程序运行时的配置参数,影响命令的查找路径、语言设置、编辑器选择等。

env
# 输出所有环境变量

关键环境变量

变量作用示例
PATH命令搜索路径/usr/local/bin:/usr/bin:/bin
HOME家目录/home/user
USER当前用户名user
SHELL当前 Shell/bin/bash
LANG系统语言zh_CN.UTF-8
EDITOR默认编辑器vim
PS1命令提示符格式\u@\h:\w\$

PATH 的工作原理

echo $PATH
# /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

# 当你输入 ls 时,Shell 按顺序查找:
# 1. /usr/local/bin/ls
# 2. /usr/bin/ls  ← 找到了!
# 3. /bin/ls

修改环境变量

# 临时修改(仅当前终端)
export PATH=$PATH:/home/user/bin

# 永久修改(写入配置文件)
echo 'export PATH=$PATH:/home/user/bin' >> ~/.bashrc
source ~/.bashrc

echo:输出与变量查看

echo 用于打印文本或变量值,是调试和脚本中最常用的命令。

# 打印普通文本
echo "Hello, Linux!"

# 查看环境变量
echo $PATH
echo $HOME
echo $USER

# 查看上一个命令的退出状态(0=成功,非0=失败)
echo $?

# 不换行输出(-n)
echo -n "Loading..."

# 解释转义字符(-e)
echo -e "Line 1\nLine 2\tTabbed"

退出状态码

状态码含义
0成功
1通用错误
2误用命令
126命令不可执行
127命令未找到
130被 Ctrl+C 终止

history:命令历史

history 显示当前会话和之前会话执行过的命令列表。

# 显示所有历史命令
history

# 显示最近 20 条
history 20

# 搜索历史命令(Ctrl+R 反向搜索)
# 按 Ctrl+R 后输入关键词,如 "ssh"

# 执行历史中的第 n 条命令
!100

# 执行上一条命令
!!

# 执行最近以 "ls" 开头的命令
!ls

# 清除历史记录
history -c

历史命令的存储

# 当前会话的历史保存在内存中
# 退出时写入 ~/.bash_history

# 查看历史文件
cat ~/.bash_history

# 历史记录数量限制
echo $HISTSIZE      # 内存中保存的数量(默认 1000)
echo $HISTFILESIZE  # 文件中保存的数量(默认 2000)

本篇小结

  • whoami:当前用户名;id:UID、GID、所属组
  • root 的 UID=0,系统用户 UID=1-999,普通用户 UID=1000+
  • env:查看所有环境变量;echo $VAR:查看单个变量
  • PATH:命令搜索路径,按顺序查找,找不到报 command not found
  • echo $?:查看上条命令的退出状态,0=成功
  • history:命令历史,!n 执行第 n 条,!! 执行上一条,Ctrl+R 搜索

动手实践

  1. 查看你的用户身份:

    whoami
    id
    
  2. 查看关键环境变量:

    echo $PATH
    echo $HOME
    echo $SHELL
    echo $LANG
    
  3. PATH 实验:

    # 创建一个自定义命令
    mkdir ~/bin
    echo '#!/bin/bash\necho "Hello from my bin!"' > ~/bin/hello
    chmod +x ~/bin/hello
    
    # 未添加 PATH 时
    hello
    # command not found
    
    # 添加 PATH
    export PATH=$PATH:~/bin
    hello
    # Hello from my bin!
    
  4. 退出状态码实验:

    ls /tmp
    echo $?          # 0(成功)
    
    ls /notexist
    echo $?          # 2(错误)
    
  5. 历史命令练习:

    history 10       # 最近 10 条
    !1               # 执行历史第 1 条(谨慎)
    !!               # 执行上一条
    # 按 Ctrl+R,输入 "echo",看能否找到之前的 echo 命令
    
  6. 思考:为什么 echo $PATH 输出中用冒号 : 分隔路径,而不是空格或其他符号?如果 PATH 中有两个目录都有同名命令,会执行哪个?

上一页
进程管理与系统监控:ps、top、kill、df、du、free