关于 bash-linux
面向 Linux 和 macOS 使用者的 Bash 技能,汇总命令组合、文件操作、进程管理和文本处理等常用模式。还介绍环境变量、网络操作及脚本错误处理。
主要功能
- 01命令串联与管道操作
- 02文件查找和内容处理
- 03进程与端口检查
- 04文本处理工具用法
- 05环境变量和网络命令
- 06脚本错误处理与清理
适用场景
- 01组合命令运行开发任务
- 02查找文件并筛选文本
- 03检查进程和端口占用
- 04编写带错误处理的 Shell 脚本
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill bash-linux安装后在 Claude Code 中输入/bash-linux确认已加载。
详细介绍
Bash Linux 模式
Bash 在 Linux/macOS 上的基本模式。
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 |
| 停止所属进程 | kill -TERM <verified-task-PID>;确认进程已退出,仅在必要时升级处理 |
| 查找端口占用者 | lsof -i :3000 |
| 检查端口所有者 | lsof -nP -iTCP:3000 -sTCP:LISTEN;停止进程前确认所有权 |
| 后台运行 | npm run dev & |
| 查看作业 | jobs -l |
| 调至前台 | fg %1 |
4. 文本处理
核心工具
| 工具 | 用途 | 示例 |
|---|---|---|
grep | 搜索 | grep -rn "TODO" src/ |
sed | 预览替换结果 | sed 's/old/new/g' file.txt(macOS/GNU 的原地修改标志有所不同) |
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. 环境变量
| 任务 | 命令 |
|---|---|
| 查看全部 | env 或 printenv |
| 查看单个变量 | 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 |
| 网络信息 | ifconfig 或 ip addr |
7. 脚本模板
#!/bin/bash
set -euo pipefail # Exit on error, undefined var, pipe fail
# Colors (optional)
RED='\033[0;31m'
GREEN='\033[0;32m'
NC='\033[0m'
# Script directory
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# Functions
log_info() { echo -e "${GREEN}[INFO]${NC} $1"; }
log_error() { echo -e "${RED}[ERROR]${NC} $1" >&2; }
# Main
main() {
log_info "Starting..."
# Your logic here
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 # Exit on error
set -u # Exit on undefined variable
set -o pipefail # Exit on pipe failure
set -x # Debug only with non-secret inputs; prints expanded arguments
使用 Trap 清理
cleanup() {
echo "Cleaning up..."
rm -f /tmp/tempfile
}
trap cleanup EXIT
请记住: Bash 基于文本。使用
&&串联成功执行的命令,并为变量加引号。set -e存在条件语句和管道例外;请明确检查会产生重要后果的操作,切勿仅凭 Shell 标志就认定完全安全。
适用场景
当要执行概述中描述的工作流或操作时,可以使用此技能。
限制
- 仅当任务明确符合上述范围时,才使用此技能。
- 不要将输出视为可替代特定环境验证、测试或专家审查的方案。
- 如果缺少必要的输入、权限、安全边界或成功标准,请停止并请求澄清。
评论
支持 Markdown