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
繁體地址,請注明出處:http://hk.pswp.cn/news/909141.shtml
英文地址,請注明出處:http://en.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、絲滑的交互、母語…