bash-linux:Bash Linux 模式

时间:2026-07-25 19:30:01 来源:互联网

Bash Linux 模式

Linux/macOS 上 Bash 的必备模式。

1. 运算符语法

命令串联

运算符 含义 示例
; 顺序执行 cmd1; cmd2
&& 前一个成功才执行 npm install && npm run dev
|| 前一个失败才执行 npm test || echo "Tests failed"
| 管道输出 ls | grep ".js"

2. 文件操作

常用命令

任务 命令
列出全部 ls -la
查找文件 find . -name "*.js" -type f
文件内容 cat file.txt
前 N 行 head -n 20 file.txt
后 N 行 tail -n 20 file.txt
跟踪日志 tail -f log.txt
在文件中搜索 grep -r "pattern" --include="*.js"
文件大小 du -sh *
磁盘占用 df -h

3. 进程管理

任务 命令
列出进程 ps aux
按名称查找 ps aux | grep node
按 PID 终止 kill -9 <PID>
查找端口占用 lsof -i :3000
终止端口 kill -9 $(lsof -t -i :3000)
后台运行 npm run dev &
作业列表 jobs -l
调回前台 fg %1

4. 文本处理

核心工具

工具 用途 示例
grep 搜索 grep -rn "TODO" src/
sed 替换 sed -i 's/old/new/g' file.txt
awk 提取列 awk '{print $1}' file.txt
cut 截取字段 cut -d',' -f1 data.csv
sort 排序 sort -u file.txt
uniq 去重 sort file.txt | uniq -c
wc 计数 wc -l file.txt

5. 环境变量

任务 命令
查看全部 envprintenv
查看单个 echo $PATH
临时设置 export VAR="value"
在脚本中设置 VAR="value" command
加入 PATH export PATH="$PATH:/new/path"

6. 网络

任务 命令
下载 curl -O https://example.com/file
API 请求 curl -X GET https://api.example.com
POST JSON curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' URL
检查端口 nc -zv localhost 3000
网络信息 ifconfigip addr

7. 脚本模板

#!/bin/bash
set -euo pipefail  # 出错、未定义变量、管道失败时退出

# 颜色(可选)
RED='33[0;31m'
GREEN='33[0;32m'
NC='33[0m'

# 脚本所在目录
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

# 函数
log_info() { echo -e "${GREEN}[INFO]${NC} $1"; }
log_error() { echo -e "${RED}[ERROR]${NC} $1" >&2; }

# 主函数
main() {
    log_info "Starting..."
    # 在此编写逻辑
    log_info "Done!"
}

main "$@"

8. 常见模式

检查命令是否存在

if command -v node &> /dev/null; then
    echo "Node is installed"
fi

变量默认值

NAME=${1:-"default_value"}

逐行读取文件

while IFS= read -r line; do
    echo "$line"
done < file.txt

遍历文件

for file in *.js; do
    echo "Processing $file"
done

9. 与 PowerShell 的区别

任务 PowerShell Bash
列出文件 Get-ChildItem ls -la
查找文件 Get-ChildItem -Recurse find . -type f
环境变量 $env:VAR $VAR
字符串拼接 "$a$b" "$a$b"(相同)
空值检查 if ($x) if [ -n "$x" ]
管道 基于对象 基于文本

10. 错误处理

设置选项

set -e          # 出错即退出
set -u          # 未定义变量即退出
set -o pipefail # 管道失败即退出
set -x          # 调试:打印执行的命令

用 trap 清理

cleanup() {
    echo "Cleaning up..."
    rm -f /tmp/tempfile
}
trap cleanup EXIT

记住:Bash 是基于文本的。用 && 串联成功路径,用 set -e 保证安全,并为变量加上引号!