1. Linux终端与Shell基础认知
终端(Terminal)是Linux系统中用户与内核交互的文本界面窗口,而Shell则是运行在终端中的命令解释器。常见的Bash(Bourne Again Shell)就是大多数Linux发行版的默认Shell环境。当你在Ubuntu中按下Ctrl+Alt+T调出的黑框窗口,实际上开启的是一个终端模拟器,其中运行的Bash Shell会等待你输入命令。
注意:现代Linux系统使用的多是"终端模拟器"(如GNOME Terminal),这与早期物理终端设备(如VT100)有本质区别,但交互方式一脉相承。
Shell的工作流程可以分解为:
- 显示命令提示符(如
user@host:~$) - 读取用户输入的命令字符串
- 解析命令参数和执行逻辑
- 调用系统内核执行对应操作
- 输出执行结果
- 返回步骤1等待下个命令
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 终端基础操作技巧
2.1 终端复用与分屏
使用screen或tmux可以实现:
- 会话保持:网络断开后重新连接仍可恢复工作现场
- 多窗口管理:单个终端内创建多个虚拟终端
- 分屏显示:垂直/水平分割窗口同时操作
bash复制# 安装tmux
sudo apt install tmux
# 基础操作
tmux new -s session_name # 新建会话
Ctrl+b % # 垂直分屏
Ctrl+b " # 水平分屏
Ctrl+b d # 脱离会话
tmux attach -t session_name # 重新接入会话
2.2 历史命令高效使用
Bash会记录执行过的命令,通过以下技巧提升效率:
!!:重复上条命令!$:引用上条命令的最后一个参数Ctrl+R:反向搜索历史命令history | grep keyword:筛选含关键词的历史命令
3. 文件系统核心命令
3.1 目录导航与查看
bash复制pwd # 显示当前工作目录
cd ~ # 返回用户主目录
cd - # 返回上一个工作目录
ls -lah # 显示所有文件(含隐藏)的详细信息
tree -L 2 # 以树状图显示目录结构(2层深度)
3.2 文件操作四件套
bash复制# 创建/删除
touch new_file.txt # 创建空文件
mkdir -p path/to/dir # 递归创建目录
rm -i file # 交互式删除文件
# 复制/移动
cp -av source dest # 归档模式复制(保留属性)
mv file new_location/ # 移动文件
# 查看内容
less large_file.log # 分页查看(支持搜索)
head -n 20 file # 显示前20行
tail -f logfile # 实时追踪日志更新
3.3 权限管理精要
Linux权限系统采用rwx(读/写/执行)三组权限,分别对应:
- 文件所有者(u)
- 所属组(g)
- 其他用户(o)
bash复制chmod 755 script.sh # 设置权限为rwxr-xr-x
chown user:group file # 修改文件所有者和组
stat file # 查看详细权限信息
4. 文本处理三剑客
4.1 grep文本搜索
bash复制grep -rin "error" /var/log/ # 递归搜索目录中含error的行(忽略大小写)
grep -v "^#" config.conf # 过滤掉注释行(以#开头)
grep -E "pattern1|pattern2" # 使用扩展正则匹配多个模式
4.2 sed流编辑器
bash复制sed 's/old/new/g' file # 全局替换文本
sed -i.bak '5d' file # 删除第5行(备份原文件)
sed -n '10,20p' file # 只打印10-20行
4.3 awk数据处理
bash复制awk '{print $1,$3}' data.txt # 打印第1和第3列
awk -F: '{print $1}' /etc/passwd # 以冒号分隔处理密码文件
awk '$3 > 100 {print $0}' records # 筛选第3列大于100的记录
5. 进程管理实战
5.1 进程监控命令
bash复制ps aux | grep nginx # 查看nginx相关进程
top -u mysql # 监控mysql用户的进程资源占用
htop # 增强版交互式进程查看器(需安装)
5.2 后台任务控制
bash复制python3 long_task.py & # 将任务放到后台运行
jobs # 查看后台任务列表
fg %1 # 将任务1调回前台
Ctrl+Z # 暂停当前前台任务
bg %1 # 将暂停的任务转为后台运行
5.3 信号管理与终止
bash复制kill -l # 查看所有信号类型
kill -9 PID # 强制终止进程(SIGKILL)
killall -u username # 终止某用户的所有进程
pkill -f "pattern" # 按名称模式终止进程
6. 网络相关命令
6.1 连接诊断工具
bash复制ping -c 4 example.com # 发送4个测试包
traceroute google.com # 显示路由路径
mtr -r -c 10 8.8.8.8 # 实时路由诊断工具
6.2 端口与服务检查
bash复制netstat -tulnp # 查看监听中的TCP/UDP端口
ss -ltn # 更现代的socket统计工具
lsof -i :80 # 查看80端口的占用情况
6.3 文件传输操作
bash复制scp file user@remote:/path # 安全复制到远程主机
rsync -avz src/ user@remote:dst/ # 增量同步目录
wget -c http://example.com/file # 断点续传下载
7. Shell脚本入门
7.1 基础脚本结构
bash复制#!/bin/bash
# 注释:这是一个示例脚本
echo "当前用户:$(whoami)"
echo "系统负载:$(uptime)"
exit 0 # 返回状态码
7.2 变量与条件判断
bash复制name="Linux"
echo "Hello $name" # 变量引用
if [ -f "/etc/passwd" ]; then
echo "密码文件存在"
elif [ -d "/tmp" ]; then
echo "/tmp是目录"
else
echo "条件不满足"
fi
7.3 循环控制结构
bash复制# for循环示例
for i in {1..5}; do
echo "第$i次循环"
done
# while读取文件
while read line; do
echo "处理行:$line"
done < input.txt
8. 实用技巧与排错
8.1 命令组合技巧
bash复制# 管道串联多个命令
cat access.log | grep "404" | awk '{print $7}' | sort | uniq -c
# 命令替换
tar -czf backup-$(date +%Y%m%d).tar.gz /important_data
# 后台执行并记录输出
nohup python3 server.py > server.log 2>&1 &
8.2 常见问题排查
问题1:命令找不到
bash复制echo $PATH # 检查可执行路径
which command # 定位命令位置
sudo apt install package # 安装缺失软件
问题2:权限不足
bash复制ls -l /path/to/file # 检查权限设置
sudo !! # 用root权限重试上条命令
问题3:磁盘空间不足
bash复制df -h # 查看磁盘使用情况
du -sh * | sort -h # 找出大文件目录
8.3 效率提升工具
- zsh:增强型Shell替代品,支持更好的补全和主题
- fzf:模糊查找工具,快速定位文件和命令
- bat:
cat的替代品,支持语法高亮和分页 - exa:现代
ls替代工具,更好的显示效果
安装示例:
bash复制sudo apt install zsh fzf bat exa
