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

相关推荐
未来之窗软件服务15 分钟前
浏览器开发CEFSharp (十七)网页自定义下载—仙盟创梦IDE
chrome·浏览器开发·cefsharp·仙盟创梦ide·东方仙盟
何似在人间57525 分钟前
Go语言快速入门教程(JAVA转go)——1 概述
java·开发语言·golang
边疆.36 分钟前
【C++】继承详解
开发语言·c++·继承
lxh01131 小时前
LRU 缓存
开发语言·前端·javascript
John_ToDebug2 小时前
Chrome性能黑魔法:深入浅出PGO优化与实战指南
c++·chrome
空山新雨(大队长)2 小时前
Java第五课:输入输出
java·开发语言
wow_DG2 小时前
【Vue2 ✨】Vue2 入门之旅 · 进阶篇(二):虚拟 DOM 与 Diff 算法
开发语言·javascript·vue.js·算法·前端框架
sali-tec3 小时前
C# 基于halcon的视觉工作流-章32-线线测量
开发语言·人工智能·算法·计算机视觉·c#
little_xianzhong3 小时前
Java 日期字符串万能解析工具类(支持多种日期格式智能转换)
java·开发语言
Dersun3 小时前
python学习进阶之异常和文件操作(三)
开发语言·python·学习·json