绿豆沙の小窝

Back

Bash 入门

为什么要学 Bash#

日常开发中大量重复操作——编译、打包、部署、查日志、批量改名——如果每次手动敲一遍,效率极低。Bash 让你用几行命令自动完成这些事。

Bash 是 Unix/Linux 默认的命令行解释器,macOS 自带,Windows 可通过 WSL 或 Git Bash 使用。

基础操作#

管道与重定向#

# 管道:前一个命令的输出作为后一个命令的输入
cat log.txt | grep ERROR | wc -l    # 统计 ERROR 出现次数

# 重定向:将输出写入文件
ls > output.txt          # 覆盖写入
ls >> output.txt         # 追加写入
command 2>&1             # 标准错误重定向到标准输出
command > /dev/null      # 丢弃所有输出
bash

最常用的命令组合#

# grep:搜索文本
grep "关键词" file
grep -r "TODO" src/          # 递归搜索目录
ps aux | grep nginx           # 查找进程

# find:搜索文件
find . -name "*.log"          # 按名称查找
find . -mtime -7              # 最近 7 天修改的文件
find . -name "*.tmp" -delete  # 查找并删除

# awk / sed:文本处理
awk '{print $1}' file         # 打印第一列
sed 's/old/new/g' file        # 全文替换
sed -i 's/old/new/g' file     # 直接修改文件
bash

变量与循环#

条件判断#

# 文件测试
[ -f file ]   # 是普通文件
[ -d dir ]    # 是目录
[ -x file ]   # 可执行

# 字符串比较
[ "$a" = "$b" ]     # 相等
[ -z "$str" ]       # 字符串为空

# if 语句
if [ -f "config.yml" ]; then
    echo "配置文件存在"
else
    echo "请创建 config.yml"
fi
bash

简单脚本模板#

#!/bin/bash
set -euo pipefail   # 遇到错误立即退出,未定义变量报错

echo "=== 开始部署 ==="

# 构建
cd /path/to/project
npm run build

# 同步到服务器
rsync -avz dist/ user@server:/var/www/html/

echo "=== 部署完成 ==="
bash

set -euo pipefail 是脚本安全标配,防止命令失败后继续执行。

实用别名#

在 ~/.bashrc 中加入:

alias ll='ls -alF'
alias gs='git status'
alias gp='git push'
alias gc='git commit'
alias ..='cd ..'
alias ...='cd ../..'

# 重新加载配置
alias reload='source ~/.bashrc'
bash

总结#

命令用途
ls / cd / pwd文件和目录导航
cat / head / tail / less查看文件内容
grep文本搜索
`` (管道)
> / >>输出重定向
for / while / if控制流
$(...)命令替换
chmod权限管理

Bash 的核心思想:组合小工具完成复杂任务。掌握管道、重定向、变量和控制流,你就能写出高效的命令行工作流。

Bash 入门
https://lvdousha26.github.io/blog/bash-tutorial
Author lvdousha
Published at May 18, 2026