Bash (Bourne Again SHell)

Unix/Linux 系统中最常用的命令行解释器之一,它是原始 Bourne shell (sh) 的增强版本。以下是 Bash 的详细解释:

1. Bash 基础

1.1 什么是 Bash

  • 一个命令行解释器,用于执行用户输入的命令
  • 支持脚本编程,可以编写复杂的自动化任务
  • 提供命令历史、命令补全、别名等便利功能

1.2 基本命令结构

bash 复制代码
command [options] [arguments]
命令[选项][参数]

例如:

bash 复制代码
ls -l /home

2. Bash 特性

2.1 变量

  • 定义变量:name=value(注意等号两边不能有空格)
  • 使用变量:$name${name}
  • 环境变量:export VAR=value

2.2 特殊变量

  • $0 - 脚本名称
  • $1-$9 - 脚本参数
  • $# - 参数个数
  • $* - 所有参数
  • $? - 上一条命令的退出状态
  • $$ - 当前 shell 的进程 ID

2.3 引号

  • 单引号 ':保留所有字符的字面值
  • 双引号 ":允许变量和命令替换
  • 反引号 ````` 或 $():命令替换

2.4 输入输出重定向

  • > - 输出重定向(覆盖)
  • >> - 输出重定向(追加)
  • < - 输入重定向
  • 2> - 错误输出重定向
  • &> - 标准输出和错误输出都重定向

3. Bash 脚本编程

3.1 脚本基础

bash 复制代码
#!/bin/bash
# 这是一个注释
echo "Hello, World!"

3.2 条件判断

bash 复制代码
if [ condition ]; then
    commands
elif [ condition ]; then
    commands
else
    commands
fi

3.3 循环结构

for 循环​:

bash 复制代码
for var in list; do
    commands
done

while 循环​:

bash 复制代码
while [ condition ]; do
    commands
done

3.4 函数

bash 复制代码
function_name() {
    commands
    [return value]
}

4. 高级特性

4.1 数组

bash 复制代码
array=(value1 value2 value3)
echo ${array[0]}  # 访问第一个元素
echo ${array[@]}  # 访问所有元素

4.2 正则表达式

  • =~ 操作符用于正则匹配
bash 复制代码
if [[ "string" =~ pattern ]]; then
    echo "匹配成功"
fi

4.3 进程控制

  • & - 后台运行
  • ; - 顺序执行
  • && - 前一个成功才执行下一个
  • || - 前一个失败才执行下一个

4.4 调试

  • set -x - 开启调试模式
  • set +x - 关闭调试模式
  • bash -x script.sh - 调试运行脚本

5. 实用技巧

5.1 命令历史

  • history - 查看命令历史
  • !n - 执行历史中第 n 条命令
  • !! - 执行上一条命令
  • !string - 执行最近以 string 开头的命令

5.2 别名

bash 复制代码
alias ll='ls -l'
unalias ll

5.3 通配符

  • * - 匹配任意字符
  • ? - 匹配单个字符
  • [] - 匹配括号内的任一字符

5.4 管道

  • | - 将一个命令的输出作为另一个命令的输入
bash 复制代码
ls -l | grep "txt"

Bash 是一个功能强大的工具,掌握它可以大大提高在 Unix/Linux 系统下的工作效率。以上只是 Bash 的基础知识,实际使用中还有更多高级特性和技巧等待探索。

相关推荐
玖玥拾1 小时前
C# 语言进阶(十五)C# 游戏服务端 MySQL 数据库
服务器·开发语言·网络·数据库·mysql·c#
铅笔侠_小龙虾2 小时前
Rust 学习目录
开发语言·学习·rust
云泽8082 小时前
从零吃透 C++ 异常:抛出捕获、栈展开、异常重抛与编码规范详解
开发语言·c++·代码规范
灯澜忆梦2 小时前
GO---可见性规则
开发语言·golang
逝水无殇2 小时前
C# 文件的输入与输出详解
开发语言·数据库·后端·c#
这是个栗子3 小时前
前端开发中的常用工具函数(八)
开发语言·前端·javascript
凤凰院凶涛QAQ4 小时前
《Java版数据结构 & 集合类剖析》栈与队列:“push/pop 是栈的灵魂,offer/poll 是队列的骨架——四组 API,两种人生”
java·开发语言·数据结构
研☆香4 小时前
为什么变量声明在赋值前也能使用?—— 深入理解 JavaScript 变量提升与作用域
开发语言·前端·javascript
右耳朵猫AI4 小时前
PHP周刊2026W28 | 安全更新、Laravel 13.18、Twig 3.28
开发语言·php·laravel
second604 小时前
第一部分:快速上手 —— 建立 C++ 基本语法与编程范式
开发语言·c++