Bash (Bourne Again SHell)

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

1. Bash 基础

1.1 什么是 Bash

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

1.2 基本命令结构

command [options] [arguments]
命令[选项][参数]

例如:

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 脚本基础

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

3.2 条件判断

if [ condition ]; thencommands
elif [ condition ]; thencommands
elsecommands
fi

3.3 循环结构

for 循环​:

for var in list; docommands
done

while 循环​:

while [ condition ]; docommands
done

3.4 函数

function_name() {commands[return value]
}

4. 高级特性

4.1 数组

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

4.2 正则表达式

  • =~ 操作符用于正则匹配
if [[ "string" =~ pattern ]]; thenecho "匹配成功"
fi

4.3 进程控制

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

4.4 调试

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

5. 实用技巧

5.1 命令历史

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

5.2 别名

alias ll='ls -l'
unalias ll

5.3 通配符

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

5.4 管道

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/news/909141.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uni-app学习笔记三十五--扩展组件的安装和使用

由于内置组件不能满足日常开发需要&#xff0c;uniapp官方也提供了众多的扩展组件供我们使用。由于不是内置组件&#xff0c;需要安装才能使用。 一、安装扩展插件 安装方法&#xff1a; 1.访问uniapp官方文档组件部分&#xff1a;组件使用的入门教程 | uni-app官网 点击左侧…

AIStor 的模型上下文协议 (MCP) 服务器: 工作原理

在本系列的前几篇博文中&#xff0c;我们讨论了MinIO AIStor 模型上下文协议 (MCP) 服务器的用户级和管理员级功能。在第一篇博文中&#xff0c;我们学习了如何查看存储桶的内容、分析对象并标记它们以便将来处理。在第二篇博文中&#xff0c;我们还学习了如何使用管理员命令以…

Excel 怎么让透视表以正常Excel表格形式显示

目录 1、创建数据透视表 2、设计 》报表布局 》以表格形式显示 3、设计 》分类汇总 》不显示分类汇总 1、创建数据透视表 2、设计 》报表布局 》以表格形式显示 3、设计 》分类汇总 》不显示分类汇总

汇编语言深度指南:从基础到字符串操作

基础知识 CPU简介 CPU是计算机的核心&#xff0c;负责&#xff1a; 执行机器指令&#xff1a;解码并执行二进制指令 mov eax, 5 ; 将值5移动到EAX寄存器暂存少量数据&#xff1a;通过内部寄存器快速存取访问存储器&#xff1a;读写内存数据 mov [0x1000], eax ; 将EAX值…

树莓派5-ubuntu 24.04 安装 ros环境

在开始安装ros环境前&#xff0c;需要确保已经准备好了以下操作 1.树莓派5开发板&#xff0c;已经烧录了 ubuntu 24.04&#xff0c;并做好了一些基础配置&#xff0c;如&#xff1a;远程访问配置&#xff0c;语言配置&#xff0c;网络配置等 2.新手建议在上面安装一个宝塔面板…

【狂飙AGI】第2课:大模型方向市场分析

目录 &#xff08;一&#xff09;产业规模&#xff08;二&#xff09;政策引导&#xff08;三&#xff09;人才需求&#xff08;四&#xff09;工作年限&#xff08;五&#xff09;年薪分析&#xff08;六&#xff09;薪资情况分析&#xff08;七&#xff09;地域及匹配薪资&am…

word用endnote插入国标参考文献

1.在endnote中先设置output style为我的GB格式 参考 Endnote使用——参考文献的插入及引用_endnote怎么引用参考文献-CSDN博客 已经修改好的GB导出格式&#xff1a;Chinese Std GBT7714 (numeric)-spx.ens Peixuan Shu/Chinese_Std_GBT7714 - 码云 - 开源中国 把这个style…

Peiiieee的Linux笔记(1)

基本指令 1. ls指令 语法&#xff1a;ls [选项][目录或文件] 功能&#xff1a;对于目录&#xff0c;该命令列出该目录下的所有子目录与文件。对于文件&#xff0c;将列出文件名以及其它信息。 -a&#xff1a;列出目录下的所有文件&#xff0c;包括以.开头的隐含文件。 -l&am…

Docker快速构建并启动Springboot程序,快速发布和上线/

Docker部署SpringBoot 1.工作木目录&#xff1a;/mnts/jar_work/vx_kefu/ruoyi_ruoyiwechatinfo 里面的目录是lib文件夹&#xff0c;logs文件夹&#xff0c;Dockerfile文件&#xff0c;SpringBoot的jar包&#xff0c;start.sh的命令&#xff0c;stop.sh的命令,tpid文件进程。 …

RT-Thread Studio 配置使用详细教程

文章目录 一、新建工程1.1 创建基于芯片的工程1.1.1 选择创建的rtt版本1.1.2 配置工程基本属性1.1.3 初创工程目录结构1.1.4 修改时钟配置1.1.5 配置调试下载器 1.2 创建基于开发板的工程 二、配置内核三、配置组件四、配置软件包五、适配配置六、其它问题 一、新建工程 1.1 创…

React 中的 useCallback 入门指南:是真需要,还是假怪?

在学习 React 时&#xff0c;很多人初步接触 useCallback 都有一个同样的疑问&#xff1a; “useCallback 到底是干啥的&#xff1f;不是简单地就是‘缓存一个函数’吗&#xff1f;我一直不明白它真正有什么用。” 这篇文章就来给你一个全方位、实操、有例实的 useCallback 入门…

14.计算机网络End

计算机网络end 一、概念 网络协议三要素&#xff1a;语法、语义、同步TCP/IP中为运输层提供服务的层级&#xff1a;网际层计算机网络性能指标&#xff08;答5个即可&#xff09;&#xff1a; 带宽时延吞吐量往返时间&#xff08;RTT&#xff09;利用率 交换式以太网用户带宽&…

Next.js + Supabase = 快速开发 = 高速公路

Next.js Supabase介绍一下这2个好的&#xff0c;直说重点&#xff1a; ✅ Next.js&#xff1a;React 的“终极形态” 一句话概括&#xff1a; Next.js 是基于 React 的 Web 框架&#xff0c;帮你快速构建全栈应用&#xff0c;支持 SSR&#xff08;服务端渲染&#xff09;、AP…

机器学习用于算法交易(Matlab实现)

机器学习用于算法交易&#xff08;Matlab实现&#xff09; 摘要 随着金融市场的复杂性和交易量的不断增长&#xff0c;传统交易方式逐渐暴露出局限性&#xff0c;算法交易因其高效性和精准性已成为主流趋势。在此背景下&#xff0c;将机器学习融入算法交易具有重要的研究意义…

day64—回溯—组合数(LeetCode-77)

题目描述 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1&#xff1a; 输入&#xff1a;n 4, k 2 输出&#xff1a; [[2,4],[3,4],[2,3],[1,2],[1,3],[1,4], ] 示例 2&#xff1a; 输入&#xff1a…

机器学习与深度学习21-信息论

目录 前文回顾1.信息上的概念2.相对熵是什么3.互信息是什么4.条件熵和条件互信息5.最大熵模型6.信息增益与基尼不纯度 前文回顾 上一篇文章链接&#xff1a;地址 1.信息上的概念 信息熵&#xff08;Entropy&#xff09;是信息理论中用于度量随机变量不确定性的概念。它表示了…

chrome138版本及以上el-input的textarea输入问题

描述 项目基于vue2 element UI 问题简述&#xff1a;Chrome138及以上版本&#xff0c;把组件中的el-input的textarea的disabled属性从true设为false&#xff0c;无法输入 封装了一套表单输入组件&#xff0c;其中的textarea如下&#xff1a; <div v-if"item.type te…

TCP/IP 网络编程 | 服务端 客户端的封装

设计模式 文章目录 设计模式一、socket.h 接口&#xff08;interface&#xff09;二、socket.cpp 实现&#xff08;implementation&#xff09;三、server.cpp 使用封装&#xff08;main 函数&#xff09;四、client.cpp 使用封装&#xff08;main 函数&#xff09;五、退出方法…

TASTE-Rob:推进面向任务的手-目标交互视频生成,实现可通用的机器人操作

25年3月来自香港中文大学的论文“TASTE-Rob: Advancing Video Generation of Task-Oriented Hand-Object Interaction for Generalizable Robotic Manipulation”。 本文也是在解决现有数据集和模型在面向任务的手部-目标交互视频生成方面的关键限制&#xff0c;这是为机器人模…

Trae AI IDE 全网最全的使用教程

Trae AI IDE 全网最全的使用教程 近期&#xff0c;字节发布了一款 AI Coding 产品 —— Trae&#xff0c;它是一款对标 Cursor 和 Windsurf 的全新 IDE&#xff0c;也是一款真正为中文开发者量身定制的工具&#xff0c;可谓是中文开发者的福音。 其优雅的 UI、丝滑的交互、母语…