1. Linux基础命令全面解析
作为一名Linux系统管理员,熟练掌握基础命令是日常工作的基本功。本文将深入解析Linux系统中最常用的20多个核心命令,从文件操作到文本处理,从目录导航到系统查询,带你全面掌握这些命令的实用技巧和底层原理。
1.1 文件系统导航
1.1.1 tree命令:可视化目录结构
tree命令是我最常用的目录结构可视化工具,它能以树状图形式显示目录内容。基本用法很简单:
bash复制tree [目录路径]
如果不指定路径,默认显示当前目录。例如:
bash复制tree /home/user/projects
这个命令有几个实用技巧:
- 使用
-L参数限制显示深度:tree -L 2只显示两层目录 - 结合
-d参数只显示目录:tree -d - 使用
-I参数忽略特定模式:tree -I "*.log"不显示日志文件
注意:在大型目录(如根目录/)上使用tree命令可能导致大量输出,建议先用
-L限制深度或重定向到文件查看。
1.1.2 cd命令:目录切换的艺术
cd命令看似简单,但有许多实用技巧:
bash复制cd /absolute/path # 绝对路径
cd relative/path # 相对路径
cd ~ # 返回家目录
cd - # 返回上一个目录
实际工作中,我经常使用cd -在两个目录间快速切换。对于长路径,可以设置环境变量:
bash复制export PROJECTS=/var/www/projects
cd $PROJECTS
1.1.3 ls命令:文件列表的进阶用法
ls命令的基础用法大家都知道,但它的选项组合非常强大:
bash复制ls -lhtr # 按时间倒序显示详细信息
ls -la # 显示所有文件包括隐藏文件
ls -d */ # 只显示子目录
我最常用的组合是ls -lhtr,它能:
-l:显示详细信息-h:人类可读的文件大小-t:按修改时间排序-r:反向排序(最新的在最下面)
1.2 文件操作命令
1.2.1 cp/mv命令:文件复制与移动
cp命令的-a选项是我最推荐的,它保留所有文件属性:
bash复制cp -a source dest # 归档复制,保留权限、时间等
mv命令除了移动文件,还是重命名的主要方式:
bash复制mv oldname newname # 重命名
mv file dir/ # 移动文件
重要提示:移动大文件时,使用rsync更安全可靠,特别是跨设备移动时。
1.2.2 rm命令:安全删除策略
rm命令的破坏性众所周知,我有几个安全使用建议:
- 先使用
ls确认要删除的文件 - 使用
-i交互模式:rm -i file - 对于目录,总是先尝试
rmdir(只能删除空目录) - 必须使用
-r时,先不加-f确认删除列表
我习惯设置一个安全的rm别名:
bash复制alias rm='rm -i'
1.2.3 find命令:高级文件搜索
find命令是Linux最强大的搜索工具:
bash复制find /path -name "*.log" -mtime +30 -size +1M -exec ls -lh {} \;
这个命令查找:
- 在/path目录下
- 文件名匹配*.log
- 修改时间超过30天
- 大小超过1MB
- 并对结果执行ls -lh命令
1.3 文本处理命令
1.3.1 grep命令:文本搜索专家
grep是文本搜索的瑞士军刀:
bash复制grep -rn "error" /var/log/ # 递归搜索目录
grep -v "^#" config.conf # 排除注释行
grep -A2 -B2 "exception" log.txt # 显示前后各2行上下文
我常用的技巧:
-i:忽略大小写-E:使用扩展正则表达式-c:只显示匹配行数--color=auto:高亮显示匹配内容
1.3.2 sed/awk:文本处理双雄
sed适合简单的文本替换:
bash复制sed -i 's/old/new/g' file.txt # 全局替换
sed -n '10,20p' file.txt # 打印10-20行
awk更适合结构化数据处理:
bash复制awk -F: '{print $1,$6}' /etc/passwd # 打印用户名和家目录
awk '$3 > 1000 {print $0}' data.txt # 打印第三列大于1000的行
1.3.3 文件查看命令比较
| 命令 | 特点 | 适用场景 |
|---|---|---|
| cat | 一次性显示全部内容 | 查看小文件 |
| less | 支持前后翻页、搜索 | 查看大文件 |
| tail | 实时查看文件末尾 | 查看日志文件 |
| head | 查看文件开头 | 检查文件格式 |
| more | 基本分页查看 | 简单分页查看 |
我强烈推荐使用less替代more,因为它支持更多功能:
/向前搜索?向后搜索F实时跟踪文件变化(类似tail -f)
1.4 系统管理命令
1.4.1 ps/top/htop:进程管理
bash复制ps aux | grep nginx # 查看nginx进程
top -u mysql # 只显示mysql用户的进程
htop --sort-key=PERCENT_CPU # 按CPU使用率排序
我习惯使用htop替代top,因为它:
- 支持鼠标操作
- 可以树状显示进程
- 更直观的界面
1.4.2 df/du:磁盘空间管理
bash复制df -h # 查看磁盘使用情况
du -sh * | sort -hr # 查看当前目录各文件/目录大小并排序
排查磁盘空间问题时,我常用的组合命令:
bash复制du -ah / | sort -rh | head -n 20 # 找出系统中最大的20个文件/目录
1.4.3 tar/zip:文件打包压缩
bash复制tar -czvf archive.tar.gz dir/ # 创建gzip压缩包
tar -xzvf archive.tar.gz # 解压gzip压缩包
zip -r archive.zip dir/ # 创建zip压缩包
unzip archive.zip # 解压zip文件
压缩时我通常:
- 使用
-v查看过程 - 使用
-p保留权限(tar) - 对大文件使用
-9最高压缩率
1.5 网络相关命令
1.5.1 netstat/ss:网络连接查看
bash复制netstat -tulnp # 查看监听端口
ss -tulnp # 更快的替代方案
我更喜欢使用ss,因为它:
- 显示速度更快
- 信息更详细
- 支持更多过滤选项
1.5.2 curl/wget:网络请求工具
bash复制curl -I example.com # 只显示HTTP头
wget --mirror -p -k https://example.com # 完整镜像网站
调试API时常用的curl参数:
-v:详细输出-H:添加请求头-d:POST数据-o:输出到文件
1.6 权限管理命令
1.6.1 chmod/chown:文件权限控制
bash复制chmod -R 755 dir/ # 递归设置权限
chown -R user:group dir/ # 递归修改所有者
权限数字表示法:
- 4:读(r)
- 2:写(w)
- 1:执行(x)
- 7=4+2+1:读写执行
1.6.2 sudo/su:权限提升
bash复制sudo -u user command # 以指定用户执行命令
su - user # 完全切换到指定用户环境
安全建议:
- 避免直接使用root
- 通过sudo授权特定命令
- 使用
visudo安全编辑sudoers文件
1.7 实用小技巧
1.7.1 命令历史优化
bash复制export HISTSIZE=10000 # 增加历史记录数量
export HISTTIMEFORMAT="%F %T " # 为历史记录添加时间戳
我常用的历史命令技巧:
!!:重复上一条命令!$:上一条命令的最后一个参数!ssh:执行最近的ssh开头的命令
1.7.2 别名设置
bash复制alias ll='ls -alF'
alias grep='grep --color=auto'
alias df='df -h'
我建议把这些别名放在~/.bashrc中,常用的有:
alias ports='netstat -tulnp'alias myip='curl ipinfo.io/ip'alias now='date +"%T"'
1.7.3 重定向技巧
bash复制command > file 2>&1 # 标准输出和错误都重定向到文件
command | tee file.log # 同时输出到屏幕和文件
高级用法:
>:覆盖重定向>>:追加重定向2>:错误重定向&>:所有输出重定向
1.8 系统信息查询
1.8.1 uname/lsb_release:系统信息
bash复制uname -a # 显示所有系统信息
lsb_release -a # 显示发行版信息
cat /etc/*-release # 查看发行版详细信息
1.8.2 free/vmstat:内存监控
bash复制free -h # 人类可读的内存使用情况
vmstat 1 5 # 每1秒采样一次,共5次
1.8.3 lscpu/lspci:硬件信息
bash复制lscpu # CPU信息
lspci # PCI设备信息
lsblk # 块设备信息
1.9 实用组合命令
1.9.1 日志分析组合
bash复制grep "ERROR" /var/log/syslog | awk '{print $6}' | sort | uniq -c | sort -nr
这个管道:
- 查找包含ERROR的行
- 提取第6列(假设是错误类型)
- 排序
- 统计每种错误出现次数
- 按次数倒序排序
1.9.2 文件处理组合
bash复制find . -type f -name "*.log" -mtime +30 -exec gzip {} \;
这个命令:
- 查找当前目录下
- 所有.log文件
- 修改时间超过30天
- 并用gzip压缩
1.9.3 系统监控组合
bash复制watch -n 1 "df -h; echo; free -h; echo; uptime"
这个命令每1秒刷新显示:
- 磁盘使用情况
- 内存使用情况
- 系统负载
1.10 命令安全注意事项
- rm -rf /的危险:永远不要尝试,有些系统有保护,但不要依赖
- sudo的谨慎使用:明确知道命令作用再使用sudo
- 管道命令的验证:复杂的管道先分段测试
- 脚本的安全检查:从可信来源获取脚本,先查看内容再执行
- 权限修改的谨慎:递归修改权限前先确认目录
我个人的安全习惯:
- 重要操作前先备份
- 使用
-i交互选项 - 复杂的命令先echo查看效果
- 使用
time命令测试耗时操作
1.11 性能优化相关命令
1.11.1 iostat:IO监控
bash复制iostat -x 1 # 每秒显示一次详细IO统计
关键指标:
%util:设备利用率await:平均IO等待时间svctm:平均服务时间
1.11.2 sar:系统活动报告
bash复制sar -u 1 3 # CPU使用率,每秒1次,共3次
sar -r 1 3 # 内存使用情况
sar -b 1 3 # IO传输速率
1.11.3 perf:性能分析
bash复制perf top # 实时性能分析
perf stat command # 统计命令执行性能
1.12 终端多路复用器
1.12.1 tmux基础用法
bash复制tmux new -s session_name # 新建会话
tmux attach -t session_name # 附加到会话
常用快捷键:
Ctrl+b c:新建窗口Ctrl+b ":水平分割Ctrl+b %:垂直分割Ctrl+b d:分离会话
1.12.2 screen基础用法
bash复制screen -S session_name # 新建会话
screen -r session_name # 恢复会话
常用命令:
Ctrl+a c:新建窗口Ctrl+a ":显示窗口列表Ctrl+a d:分离会话
1.13 版本控制相关
1.13.1 git常用命令
bash复制git status # 查看状态
git log --oneline --graph # 简洁的提交历史
git diff --cached # 查看暂存区改动
1.13.2 svn常用命令
bash复制svn status # 查看状态
svn log -l 5 # 查看最近5条日志
svn diff -r HEAD # 与最新版本比较
1.14 软件包管理
1.14.1 apt/dnf/yum比较
| 命令 | 系统 | 特点 |
|---|---|---|
| apt | Debian/Ubuntu | 高级包管理工具 |
| dnf | Fedora/RHEL8+ | Yum的下一代替代品 |
| yum | RHEL/CentOS7 | 传统的RPM包管理器 |
常用操作:
bash复制sudo apt update && sudo apt upgrade # Debian系更新
sudo dnf update # Fedora更新
sudo yum install package # CentOS安装
1.14.2 源码编译安装
bash复制./configure --prefix=/usr/local
make
sudo make install
注意事项:
- 阅读INSTALL/README文件
- 安装必要的依赖
- 考虑使用checkinstall生成包
1.15 系统服务管理
1.15.1 systemctl命令
bash复制systemctl status nginx # 查看服务状态
systemctl start nginx # 启动服务
systemctl enable nginx # 设置开机启动
1.15.2 service命令
bash复制service nginx status # 旧式服务管理
service --status-all # 查看所有服务状态
1.16 用户和组管理
1.16.1 用户管理
bash复制useradd -m -s /bin/bash username # 创建用户
passwd username # 设置密码
usermod -aG groupname username # 添加用户到组
1.16.2 组管理
bash复制groupadd groupname # 创建组
gpasswd -a user group # 添加用户到组
groups username # 查看用户所属组
1.17 计划任务
1.17.1 cron定时任务
bash复制crontab -e # 编辑当前用户的任务
crontab -l # 列出任务
示例:
bash复制0 3 * * * /path/to/backup.sh # 每天3点执行备份
1.17.2 at一次性任务
bash复制at now + 1 hour # 1小时后执行
at> command1
at> command2
at> Ctrl+D
1.18 环境变量管理
1.18.1 查看和设置
bash复制env # 查看所有环境变量
echo $PATH # 查看PATH变量
export VAR=value # 设置环境变量
1.18.2 持久化设置
- 用户级:
~/.bashrc或~/.bash_profile - 系统级:
/etc/environment或/etc/profile.d/
1.19 文本编辑器
1.19.1 vim基础
bash复制vim file.txt # 打开文件
基本操作:
i:进入插入模式Esc:返回命令模式:wq:保存退出/text:搜索文本
1.19.2 nano基础
bash复制nano file.txt # 打开文件
常用快捷键:
Ctrl+O:保存Ctrl+X:退出Ctrl+W:搜索
1.20 远程连接管理
1.20.1 SSH基础
bash复制ssh user@host # 基本连接
ssh -p 2222 user@host # 指定端口
1.20.2 SSH密钥管理
bash复制ssh-keygen # 生成密钥对
ssh-copy-id user@host # 复制公钥到远程主机
1.21 文件传输
1.21.1 scp命令
bash复制scp file user@host:/path # 上传文件
scp user@host:/path file # 下载文件
1.21.2 rsync命令
bash复制rsync -avz /local/path user@host:/remote/path # 同步目录
1.22 系统备份与恢复
1.22.1 重要目录备份
bash复制tar -czvf backup-$(date +%F).tar.gz /etc /home /var/www
1.22.2 数据库备份
bash复制mysqldump -u user -p database > backup.sql
1.23 系统日志分析
1.23.1 常见日志文件
/var/log/syslog:系统主日志/var/log/auth.log:认证日志/var/log/nginx/:Nginx日志目录
1.23.2 journalctl命令
bash复制journalctl -xe # 查看系统日志
journalctl -u nginx # 查看nginx服务日志
1.24 性能调优命令
1.24.1 ulimit设置
bash复制ulimit -a # 查看当前限制
ulimit -n 65536 # 设置最大打开文件数
1.24.2 sysctl调优
bash复制sysctl -a # 查看所有内核参数
sysctl -w vm.swappiness=10 # 临时修改参数
1.25 容器相关命令
1.25.1 docker基础
bash复制docker ps -a # 查看所有容器
docker images # 查看镜像
1.25.2 podman基础
bash复制podman run -it image # 运行容器
podman ps # 查看运行中的容器
1.26 安全相关命令
1.26.1 fail2ban客户端
bash复制fail2ban-client status # 查看状态
fail2ban-client set sshd unbanip 1.2.3.4 # 解封IP
1.26.2 ufw防火墙
bash复制ufw allow 22/tcp # 允许SSH
ufw enable # 启用防火墙
1.27 网络诊断命令
1.27.1 ping/traceroute
bash复制ping -c 4 example.com # 发送4个ping包
traceroute example.com # 跟踪路由路径
1.27.2 mtr网络诊断
bash复制mtr -rw example.com # 综合网络诊断
1.28 磁盘管理命令
1.28.1 fdisk/parted
bash复制sudo fdisk -l # 列出分区表
sudo parted -l # 高级分区信息
1.28.2 fsck磁盘检查
bash复制fsck /dev/sda1 # 检查并修复文件系统
1.29 系统启动管理
1.29.1 grub相关
bash复制sudo update-grub # 更新grub配置
1.29.2 启动时间分析
bash复制systemd-analyze blame # 分析启动时间
1.30 其他实用命令
1.30.1 watch命令
bash复制watch -n 1 'ls -l' # 每秒刷新显示ls -l结果
1.30.2 tee命令
bash复制command | tee output.log # 同时输出到屏幕和文件
1.31 命令组合技巧
1.31.1 复杂管道示例
bash复制ps aux | grep -v grep | grep nginx | awk '{print $2}' | xargs kill -9
这个命令:
- 列出所有进程
- 排除grep自身
- 过滤nginx进程
- 提取PID列
- 杀死这些进程
1.31.2 并行处理
bash复制find . -type f -name "*.log" | parallel gzip {}
使用GNU parallel并行压缩所有日志文件
1.32 命令替代方案
1.32.1 现代替代命令
| 传统命令 | 现代替代 | 优势 |
|---|---|---|
| ifconfig | ip | 更强大的网络管理 |
| netstat | ss | 更快的socket统计 |
| top | htop | 更友好的界面 |
1.32.2 性能对比
bash复制time netstat -tulnp
time ss -tulnp
可以明显看到ss命令的速度优势
1.33 命令帮助系统
1.33.1 man页面阅读
bash复制man ls # 查看ls手册页
man -k keyword # 搜索相关手册页
1.33.2 tldr简化帮助
bash复制tldr ls # 简化的ls用法示例
1.34 命令历史分析
1.34.1 常用命令统计
bash复制history | awk '{print $2}' | sort | uniq -c | sort -nr | head -n 10
这个命令统计你最常用的10个命令
1.34.2 命令执行时间
bash复制export HISTTIMEFORMAT="%F %T "
history
可以看到每条命令的执行时间
1.35 终端美化技巧
1.35.1 PS1提示符定制
bash复制export PS1="\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\$ "
这个提示符显示:
- 绿色用户名和主机名
- 黄色当前目录
- 重置颜色
1.35.2 颜色输出设置
bash复制alias ls='ls --color=auto'
alias grep='grep --color=auto'
1.36 跨平台命令
1.36.1 兼容性考虑
bash复制uname -s # 查看系统类型
case $(uname -s) in
Linux*) command_for_linux;;
Darwin*) command_for_mac;;
esac
1.36.2 通用命令
bash复制curl -s ifconfig.me # 获取公网IP(跨平台)
date +%s # 时间戳(跨平台)
1.37 命令调试技巧
1.37.1 set命令选项
bash复制set -x # 开启命令追踪
command
set +x # 关闭命令追踪
1.37.2 脚本调试
bash复制bash -x script.sh # 调试模式运行脚本
1.38 命令性能分析
1.38.1 time命令
bash复制time command # 测量命令执行时间
1.38.2 strace系统调用跟踪
bash复制strace -c command # 统计系统调用
1.39 命令补全系统
1.39.1 bash-completion
bash复制source /etc/bash_completion
1.39.2 自定义补全
bash复制complete -W "start stop restart" service
1.40 命令版本管理
1.40.1 多版本管理
bash复制update-alternatives --config python
1.40.2 版本切换
bash复制pyenv global 3.8.1 # 使用pyenv切换Python版本
1.41 命令输出处理
1.41.1 列处理工具
bash复制cut -d: -f1 /etc/passwd # 提取第一列
1.41.2 排序去重
bash复制sort file | uniq -c | sort -nr
1.42 正则表达式应用
1.42.1 基本正则
bash复制grep "^[A-Z]" file # 匹配以大写字母开头的行
1.42.2 扩展正则
bash复制grep -E "(error|warn)" file # 匹配error或warn
1.43 文件差异比较
1.43.1 diff命令
bash复制diff -u file1 file2 # 统一格式差异
1.43.2 vimdiff工具
bash复制vimdiff file1 file2 # 可视化比较
1.44 系统监控面板
1.44.1 glances工具
bash复制glances # 综合监控面板
1.44.2 nmon工具
bash复制nmon # 交互式系统监控
1.45 终端录制工具
1.45.1 script命令
bash复制script -t 2> timing.log -a output.session
1.45.2 asciinema工具
bash复制asciinema rec # 开始录制
1.46 命令自动化
1.46.1 expect工具
bash复制#!/usr/bin/expect
spawn ssh user@host
expect "password:"
send "mypassword\r"
interact
1.46.2 自动化脚本
bash复制for host in $(cat hosts.txt); do
ssh $host "command"
done
1.47 命令安全审计
1.47.1 历史记录审计
bash复制grep -e "sudo" -e "su" ~/.bash_history
1.47.2 登录审计
bash复制last # 查看登录历史
1.48 命令效率提升
1.48.1 快捷键设置
bash复制bind '"\C-f":"cd /frequently/used/directory\n"'
1.48.2 快速目录跳转
bash复制shopt -s cdable_vars
export projects="/path/to/projects"
cd projects
1.49 命令错误处理
1.49.1 错误捕获
bash复制command || echo "failed"
1.49.2 严格模式
bash复制set -euo pipefail
1.50 命令学习资源
1.50.1 在线手册
bash复制info coreutils # GNU核心工具信息页
1.50.2 交互式学习
bash复制ssh sshtron.zachlatta.com # 通过游戏学习命令行
1.51 命令备忘单
1.51.1 常用命令速查
bash复制curl cheat.sh/tar # 获取tar命令备忘单
1.51.2 自定义备忘
bash复制alias cmds='cat ~/.commands_cheatsheet'
1.52 命令版本兼容
1.52.1 检查命令存在
bash复制command -v docker >/dev/null || echo "docker not installed"
1.52.2 多版本处理
bash复制[[ $(python -V 2>&1) =~ "Python 3" ]] || echo "Need Python 3"
1.53 命令输出美化
1.53.1 表格输出
bash复制column -t -s: /etc/passwd | head
1.53.2 高亮输出
bash复制grep --color=always "error" log.txt | less -R
1.54 命令批处理
1.54.1 xargs高级用法
bash复制find . -name "*.tmp" -print0 | xargs -0 rm -f
1.54.2 并行处理
bash复制cat urls.txt | parallel -j 8 wget {}
1.55 命令交互增强
1.55.1 fzf模糊查找
bash复制history | fzf
1.55.2 交互式选择
bash复制select file in *.log; do vim "$file"; break; done
1.56 命令参数补全
1.56.1 bash-completion
bash复制apt install bash-completion
1.56.2 自定义补全
bash复制complete -W "$(ls ~/projects)" proj
1.57 命令别名系统
1.57.1 实用别名
bash复制alias ports='netstat -tulnp'
alias myip='curl ipinfo.io/ip'
1.57.2 别名扩展
bash复制alias ll='ls -alF --color=auto'
1.58 命令历史优化
1.58.1 历史控制
bash复制export HISTCONTROL=ignoreboth
1.58.2 历史共享
bash复制shopt -s histappend
export PROMPT_COMMAND="history -a; history -c; history -r"
1.59 命令提示系统
1.59.1 动态提示
bash复制export PS1='$(git branch 2>/dev/null | grep -e "^*" | sed "s/^* /(\/) /") \u@\h:\w\$ '
1.59.2 状态提示
bash复制export PS1="\[\e[31m\]\$(if [[ \$? != 0 ]]; then echo '✗ '; else echo '✓ '; fi)\[\e[0m\]\u@\h:\w\$ "
1.60 命令环境隔离
1.60.1 环境隔离
bash复制python -m venv myenv
source myenv/bin/activate
1.60.2 容器隔离
bash复制docker run -it --rm alpine sh
1.61 命令资源限制
1.61.1 内存限制
bash复制ulimit -v 1000000 # 限制虚拟内存1GB
1.61.2 CPU限制
bash复制cpulimit -l 50 -p 1234 # 限制PID 1234使用50% CPU
1.62 命令日志记录
1.62.1 详细日志
bash复制script -f terminal.log
1.62.2 审计日志
bash复制export PROMPT_COMMAND='logger -p local1.notice -t bash "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//")"'
1.63 命令安全加固
1.63.1 敏感命令提醒
bash复制alias rm='echo "This is a protected rm. Use /bin/rm instead."; false'
1.63.2 命令确认
bash复制alias chmod='chmod -i'
alias chown='chown -i'
1.64 命令性能基准
1.64.1 磁盘IO测试
bash复制dd if=/dev/zero of=testfile bs=1G count=1 oflag=direct
1.64.2 网络测试
bash复制iperf3 -c server
1.65 命令替代方案
1.65.1 现代替代
bash复制bat cat # 语法高亮的cat替代
exa ls # 功能增强的ls替代
1.65.2 功能增强
bash复制dust du # 直观的磁盘使用分析
ripgrep grep # 更快的grep替代
1.66 命令组合模式
1.66.1 复杂管道
bash复制journalctl -u nginx --since "1 hour ago" | grep -i error | cut -d' ' -f9- | sort | uniq -c | sort -nr
1.66.2 条件执行
bash复制command1 && command2 # command1成功才执行command2
command1 || command2 # command1失败才执行command2
1.67 命令调试技巧
1.67.1 详细输出
bash复制bash -x script.sh
1.67.2 逐步执行
bash复制trap 'read -p "$BASH_COMMAND"' DEBUG
1.68 命令版本控制
1.68.1 多版本管理
bash复制pyenv install 3.9.0
pyenv global 3.9.0
1.68.2 版本切换
bash复制nvm use 14