Linux Shell 教程概览

什么是 Shell?

Shell 是 Linux/Unix 系统的命令行解释器,是用户与操作系统内核之间的接口。常见的 Shell 包括:

  • Bash (Bourne Again Shell) - 最常用,默认 Shell

  • Zsh - 功能更丰富,支持插件

  • Fish - 用户友好,开箱即用

  • Sh - 原始 Bourne Shell

基础命令

bash 复制代码
# 文件和目录操作
ls -la              # 列出所有文件(包括隐藏文件)
cd /path            # 切换目录
pwd                 # 显示当前路径
mkdir dir           # 创建目录
rm file             # 删除文件
rm -rf dir          # 递归删除目录
cp source dest      # 复制文件
mv source dest      # 移动/重命名

# 文件查看
cat file            # 查看完整文件
less file           # 分页查看
head -n 10 file     # 查看前10行
tail -n 10 file     # 查看后10行
tail -f file        # 实时跟踪文件变化

# 权限管理
chmod 755 file      # 修改权限(rwxr-xr-x)
chown user:group file  # 修改所有者

重定向与管道

bash 复制代码
# 重定向
command > file      # 标准输出重定向到文件(覆盖)
command >> file     # 标准输出重定向到文件(追加)
command 2> file     # 错误输出重定向
command &> file     # 全部输出重定向

# 管道 - 将一个命令的输出作为另一个命令的输入
ls -la | grep ".txt"    # 查找 txt 文件
ps aux | grep python    # 查找 Python 进程
cat file.txt | wc -l    # 统计行数

变量与环境

bash 复制代码
# 变量定义和使用
name="John"
echo $name          # 输出 John
echo ${name}World   # 输出 JohnWorld

# 环境变量
export PATH=$PATH:/my/path   # 添加路径到 PATH
echo $HOME          # 用户主目录
echo $PWD           # 当前目录

# 命令替换
files=$(ls)         # 或者 `ls`
echo "当前目录有: $files"

Shell 脚本基础

bash 复制代码
#!/bin/bash
# 这是第一个脚本

# 变量
name="World"

# 用户输入
echo "请输入名字:"
read input_name

# 条件判断
if [ "$input_name" != "" ]; then
    echo "Hello, $input_name!"
else
    echo "Hello, $name!"
fi

# 循环
for i in {1..5}; do
    echo "Count: $i"
done

# 函数
greet() {
    echo "Hello, $1"
}
greet "Alice"

常用工具命令

bash 复制代码
# 文本处理
grep "pattern" file        # 搜索文本
sed 's/old/new/g' file     # 替换文本
awk '{print $1}' file      # 提取第一列
sort file                  # 排序
uniq                       # 去重(需先排序)

# 系统信息
top/htop                   # 进程监控
df -h                      # 磁盘使用情况
free -h                    # 内存使用情况
netstat -tuln              # 端口监听状态
ps aux                     # 进程列表

# 压缩解压
tar -czf archive.tar.gz dir/    # 创建 tar.gz
tar -xzf archive.tar.gz         # 解压 tar.gz
zip -r archive.zip dir/         # 创建 zip
unzip archive.zip               # 解压 zip

实用技巧

bash 复制代码
# 快捷键
Ctrl + C      # 终止当前命令
Ctrl + Z      # 暂停当前命令
Ctrl + D      # 退出 Shell
Ctrl + A      # 跳到行首
Ctrl + E      # 跳到行尾
Tab           # 自动补全
↑ ↓           # 历史命令

# 通配符
*             # 匹配任意字符
?             # 匹配单个字符
[abc]         # 匹配 a/b/c 之一

# 后台运行
command &                 # 后台运行
nohup command &          # 退出终端后继续运行
Ctrl + Z; bg             # 将当前任务放到后台

# 组合命令
cmd1 && cmd2    # cmd1 成功才执行 cmd2
cmd1 || cmd2    # cmd1 失败才执行 cmd2
cmd1 ; cmd2     # 依次执行,不管结果
相关推荐
wuminyu2 分钟前
JVM锁膨胀与Futex源码解析
java·linux·c语言·jvm·c++
yume_sibai9 分钟前
Element Plus 导航与反馈组件完全指南(15个核心组件)
前端·elementui·交互
斑马13913 分钟前
Linux软件编程学习笔记(十一)——HTTP协议
linux·笔记·学习
OpenPomeloxCommunity19 分钟前
Linux驱动基础(一):模块机制的设计与实现
linux
Shadow(⊙o⊙)28 分钟前
Linux网络——文件与网络的连接桥梁struct sock {
linux·运维·网络
新时代牛马40 分钟前
Linux 性能调优与追踪完整篇:ftrace、perf、eBPF从采样到落地验证
linux·运维·服务器
sunoo-2291 小时前
【网络编程 + 数据库】select 与 epoll 核心区别详解 + SQLite 入门到 C 接口全攻略
linux·网络·数据库·vscode·学习·sqlite
可乐鸡翅yeah_1 小时前
hls.js 多实例并发踩坑,多视频页面播放器内存与冲突问题解决
开发语言·前端·javascript·音视频·hls·m3u8·m3u8在线播放
zbyyd1 小时前
Linux 系统编程 :select/epoll 多路复用与 SQLite 数据库实战
linux·数据库·sqlite
涛涛ing1 小时前
你的页面为什么总是卡成PPT?2026年,90%的前端都忽略了主线程
前端