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 的基础知识,实际使用中还有更多高级特性和技巧等待探索。

相关推荐
OKkankan2 小时前
string类的模拟实现
开发语言·数据结构·c++·算法
好好研究4 小时前
使用JavaScript实现轮播图的自动切换和左右箭头切换效果
开发语言·前端·javascript·css·html
汽车功能安全啊5 小时前
利用对称算法及非对称算法实现安全启动
java·开发语言·安全
Flobby5296 小时前
Go语言新手村:轻松理解变量、常量和枚举用法
开发语言·后端·golang
nbsaas-boot7 小时前
SQL Server 窗口函数全指南(函数用法与场景)
开发语言·数据库·python·sql·sql server
东方佑7 小时前
递归推理树(RR-Tree)系统:构建认知推理的骨架结构
开发语言·r语言·r-tree
Warren987 小时前
Java Stream流的使用
java·开发语言·windows·spring boot·后端·python·硬件工程
伍哥的传说7 小时前
Radash.js 现代化JavaScript实用工具库详解 – 轻量级Lodash替代方案
开发语言·javascript·ecmascript·tree-shaking·radash.js·debounce·throttle
xidianhuihui8 小时前
go install报错: should be v0 or v1, not v2问题解决
开发语言·后端·golang
架构师沉默8 小时前
Java优雅使用Spring Boot+MQTT推送与订阅
java·开发语言·spring boot