BashLinux终端模式Skill bash-linux

Bash Linux终端模式是用于在Linux和macOS系统上进行命令行操作、脚本编写和系统管理的技能。它包括关键命令如文件操作、进程管理、文本处理、网络操作和错误处理,适用于自动化任务、DevOps工作流和系统维护。关键词:Bash, Linux, 命令行, 脚本, 自动化, 系统管理, DevOps, 终端命令。

操作系统 0 次安装 0 次浏览 更新于 3/21/2026

name: bash-linux description: Bash/Linux终端模式。关键命令、管道、错误处理、脚本编写。在macOS或Linux系统上工作时使用。 allowed-tools: Read, Write, Edit, Glob, Grep, Bash

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
通过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='\033[0;31m'
GREEN='\033[0;32m'
NC='\033[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 "启动中..."
    # 你的逻辑在这里
    log_info "完成!"
}

main "$@"

8. 常见模式

检查命令是否存在

if command -v node &> /dev/null; then
    echo "Node 已安装"
fi

默认变量值

NAME=${1:-"default_value"}

逐行读取文件

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

遍历文件

for file in *.js; do
    echo "处理 $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          # 调试:打印命令

陷阱用于清理

cleanup() {
    echo "清理中..."
    rm -f /tmp/tempfile
}
trap cleanup EXIT

记住: Bash是基于文本的。使用 && 进行成功链,set -e 提高安全性,并引用你的变量!