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语言:第18天笔记
c语言·开发语言·笔记
楚Y6同学2 小时前
QT之QSS的使用方法和常用控件的样式设置
开发语言·qt
紫金龙腾2 小时前
EDGE 、chrome、浏览器显示“由你的组织管理”
前端·chrome·edge
Yolo566Q3 小时前
“R语言+遥感”的水环境综合评价方法实践技术应用
开发语言·r语言
时间裂缝里的猫-O-4 小时前
@Linux问题 :bash fork Cannot allocate memory 错误分析与解决方案
linux·chrome·bash
文火冰糖的硅基工坊5 小时前
[激光原理与应用-317]:光学设计 - Solidworks - 草图
开发语言·python·信息可视化·系统架构
草莓熊Lotso5 小时前
【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day10
c语言·开发语言·经验分享·算法·强化
草明5 小时前
docker stats 增加一列容器名称的显示
java·开发语言·docker
He1955016 小时前
Go初级二
开发语言·后端·golang
吴楷鹏6 小时前
如何同时打开多个 Chrome 呢?
前端·chrome