Skip to content

Shell使用指南 ​

Shell是Linux/Unix系统中最常用的命令行工具,掌握Shell的使用方法和快捷键操作可以大大提高工作效率。

📋 目录 ​

🎯 基础知识 ​

1.1 Shell类型 ​

常见的Shell类型:

  1. Bash(Bourne Again Shell)

    • Linux默认Shell
    • 功能强大,兼容性好
  2. Zsh(Z Shell)

    • macOS默认Shell(Catalina以后)
    • 功能丰富,支持插件
  3. Fish(Friendly Interactive Shell)

    • 用户友好
    • 自动补全功能强大

1.2 查看当前Shell ​

bash
# 查看当前使用的Shell
echo $SHELL

# 查看所有可用的Shell
cat /etc/shells

1.3 切换Shell ​

bash
# 切换到Bash
bash

# 切换到Zsh
zsh

# 退出当前Shell
exit

🎯 二、常用命令 ​

2.1 文件操作 ​

查看文件 ​

bash
# 列出文件
ls                    # 列出当前目录文件
ls -l                 # 详细信息
ls -a                 # 包括隐藏文件
ls -lh                # 人类可读的文件大小

# 查看文件内容
cat filename          # 显示整个文件
less filename         # 分页查看(支持搜索)
more filename         # 分页查看
head -n 10 filename   # 查看前10行
tail -n 10 filename   # 查看后10行
tail -f filename      # 实时查看文件变化

文件操作 ​

bash
# 复制文件
cp source dest        # 复制文件
cp -r source dest     # 复制目录

# 移动/重命名
mv old new            # 移动或重命名

# 删除文件
rm filename           # 删除文件
rm -r dirname         # 删除目录
rm -rf dirname        # 强制删除目录

# 创建文件/目录
touch filename        # 创建空文件
mkdir dirname         # 创建目录
mkdir -p dir1/dir2    # 递归创建目录

2.2 文本处理 ​

搜索和过滤 ​

bash
# grep:搜索文本
grep pattern file     # 搜索包含pattern的行
grep -i pattern file  # 忽略大小写
grep -r pattern dir   # 递归搜索目录
grep -v pattern file  # 反向搜索(不包含pattern)

# find:查找文件
find . -name "*.txt"              # 查找.txt文件
find . -type f -name "*.log"      # 查找.log文件
find . -mtime -7                  # 查找7天内修改的文件
find . -size +100M                # 查找大于100MB的文件

# awk:文本处理
awk '{print $1}' file             # 打印第一列
awk -F: '{print $1}' /etc/passwd  # 以:为分隔符

# sed:流编辑器
sed 's/old/new/g' file            # 替换文本
sed -n '10,20p' file              # 打印10-20行

排序和去重 ​

bash
# sort:排序
sort file                          # 排序
sort -r file                       # 反向排序
sort -n file                       # 数值排序
sort -u file                       # 去重并排序

# uniq:去重
uniq file                          # 去重
sort file | uniq                   # 排序后去重
sort file | uniq -c                # 统计重复次数

2.3 系统管理 ​

进程管理 ​

bash
# 查看进程
ps aux                             # 查看所有进程
ps aux | grep nginx                # 查找nginx进程
top                                # 实时查看进程
htop                               # 增强版top(需安装)

# 杀死进程
kill pid                           # 杀死进程
kill -9 pid                        # 强制杀死进程
killall process_name               # 杀死所有同名进程
pkill pattern                      # 根据模式杀死进程

系统信息 ​

bash
# 系统信息
uname -a                           # 系统信息
uptime                             # 运行时间
whoami                             # 当前用户
id                                 # 用户ID信息

# 磁盘使用
df -h                              # 磁盘使用情况
du -h dirname                      # 目录大小
du -sh *                           # 当前目录各文件大小

# 内存使用
free -h                            # 内存使用情况

网络操作 ​

bash
# 网络连接
netstat -tuln                      # 查看端口监听
ss -tuln                           # 现代版netstat
lsof -i :8080                      # 查看8080端口

# 网络测试
ping hostname                      # ping测试
curl url                           # 发送HTTP请求
wget url                           # 下载文件

🎯 三、快捷键操作 ​

3.1 移动光标 ​

光标移动:

快捷键功能
Ctrl + A移动到行首
Ctrl + E移动到行尾
Ctrl + B向左移动一个字符
Ctrl + F向右移动一个字符
Alt + B向左移动一个单词
Alt + F向右移动一个单词
Ctrl + XX在当前光标和行首之间切换

3.2 编辑操作 ​

文本编辑:

快捷键功能
Ctrl + D删除光标处的字符
Ctrl + H删除光标前的字符(同Backspace)
Ctrl + K删除从光标到行尾
Ctrl + U删除从光标到行首
Ctrl + W删除光标前的一个单词
Alt + D删除光标后的一个单词
Ctrl + Y粘贴刚才删除的内容
Ctrl + T交换光标前后的字符
Alt + T交换光标前后的单词

3.3 历史命令 ​

命令历史:

快捷键功能
Ctrl + P上一个命令(同↑)
Ctrl + N下一个命令(同↓)
Ctrl + R搜索历史命令(反向搜索)
Ctrl + S正向搜索历史命令
Ctrl + G退出历史搜索模式
Alt + .使用上一个命令的最后一个参数
Alt + *展开上一个命令的所有参数

3.4 补全操作 ​

自动补全:

快捷键功能
Tab自动补全命令或文件名
Tab Tab显示所有可能的补全选项
Alt + ?显示可能的补全选项
Alt + *插入所有可能的补全

3.5 控制操作 ​

终端控制:

快捷键功能
Ctrl + L清屏(同clear命令)
Ctrl + C中断当前命令
Ctrl + Z暂停当前命令(放入后台)
Ctrl + D退出Shell(EOF)
Ctrl + S暂停输出
Ctrl + Q恢复输出
Ctrl + \强制退出(SIGQUIT)

3.6 其他常用快捷键 ​

其他操作:

快捷键功能
Ctrl + _撤销上一次操作
Alt + C将光标处的单词首字母大写
Alt + U将光标处的单词转为大写
Alt + L将光标处的单词转为小写
Ctrl + X Ctrl + E在编辑器中打开当前命令
Ctrl + X Ctrl + U撤销上一次编辑

🎯 四、Shell脚本 ​

4.1 基本语法 ​

bash
#!/bin/bash
# 这是注释

# 变量
name="John"
age=25

# 使用变量
echo "Name: $name"
echo "Age: $age"

# 命令替换
date=$(date)
echo "Current date: $date"

# 条件判断
if [ $age -gt 18 ]; then
    echo "Adult"
else
    echo "Minor"
fi

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

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

greet "World"

4.2 特殊变量 ​

bash
# 特殊变量
$0              # 脚本名称
$1, $2, ...     # 位置参数
$#              # 参数个数
$@              # 所有参数
$?              # 上一个命令的退出码
$$              # 当前进程ID
$!              # 上一个后台进程ID

4.3 条件判断 ​

bash
# 文件测试
[ -f file ]     # 文件存在
[ -d dir ]      # 目录存在
[ -r file ]     # 文件可读
[ -w file ]     # 文件可写
[ -x file ]     # 文件可执行

# 数值比较
[ $a -eq $b ]   # 相等
[ $a -ne $b ]   # 不等
[ $a -gt $b ]   # 大于
[ $a -lt $b ]   # 小于

# 字符串比较
[ "$a" = "$b" ] # 相等
[ "$a" != "$b" ]# 不等
[ -z "$a" ]     # 空字符串
[ -n "$a" ]     # 非空字符串

🎯 五、高级技巧 ​

5.1 管道和重定向 ​

bash
# 管道
command1 | command2                # 将command1的输出作为command2的输入

# 重定向
command > file                     # 输出重定向(覆盖)
command >> file                    # 输出重定向(追加)
command < file                     # 输入重定向
command 2> file                    # 错误重定向
command > file 2>&1                # 输出和错误都重定向
command &> file                    # 同上(Bash 4+)

5.2 后台执行 ​

bash
# 后台执行
command &                          # 后台执行
nohup command &                    # 后台执行,不受终端关闭影响

# 任务管理
jobs                               # 查看后台任务
fg %1                              # 将任务1转到前台
bg %1                              # 将任务1转到后台

5.3 别名和函数 ​

bash
# 别名
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'

# 取消别名
unalias ll

# 永久保存别名(添加到~/.bashrc或~/.zshrc)
echo 'alias ll="ls -alF"' >> ~/.bashrc
source ~/.bashrc

5.4 环境变量 ​

bash
# 设置环境变量
export PATH=$PATH:/usr/local/bin
export JAVA_HOME=/usr/lib/jvm/java-8

# 查看环境变量
echo $PATH
env                                # 查看所有环境变量
printenv                           # 同上

# 永久设置(添加到~/.bashrc或~/.zshrc)
echo 'export PATH=$PATH:/usr/local/bin' >> ~/.bashrc
source ~/.bashrc

📖 学习资源 ​

在线教程 ​

书籍推荐 ​

  • 《Linux命令行与shell脚本编程大全》 - Richard Blum
  • 《鸟哥的Linux私房菜》 - 鸟哥

练习网站 ​

✅ 学习检查清单 ​

  • [ ] 已掌握Shell基础知识
  • [ ] 已熟悉常用命令
  • [ ] 已掌握快捷键操作
  • [ ] 已学会编写Shell脚本
  • [ ] 已理解管道和重定向
  • [ ] 已掌握进程管理
  • [ ] 已练习编写常用脚本

返回目录:工具使用
下一主题:VIM使用指南