深入了解 Bash:它是什麼,它的用途是什麼,以及如何透過範例和技巧掌握它

  • Bash 是 Linux 和 Unix 系統中最廣泛使用的命令解釋器,它允許作業系統的自動化、互動和高效管理。
  • Bash 腳本可讓您透過鍊式命令和邏輯結構執行重複性任務、複雜操作以及管理流程和資源。
  • 掌握 Bash 可以提高日常工作效率,對於管理員、開發人員以及任何在基於 GNU/Linux 的環境中工作的人來說都至關重要。

什麼是 BASH?

Bash 是任何現代 Linux 和 Unix 環境的基本組成部分,儘管許多新手用戶直到開始深入研究系統管理、任務自動化或軟體開發時才意識到它的重要性。 學習 Bash 不僅能讓日常生活更輕鬆,而且 它能讓你在作業系統上的熟練度和控制力上實現飛躍,開啟一系列可能性,遠遠超出在終端機中編寫單一指令的範疇。

如果你聽過「shell」或看過以「.sh」結尾的腳本,那麼你可能已經接觸過Bash了——即使只是間接的——只是沒有意識到而已。 在這裡,我們將深入了解 Bash 是什麼,它是如何運作的,它的真正用途是什麼,以及透過充分發揮它的潛力可以實現什麼,無論您是初學者還是希望提高技能並在工作或個人專案中節省大量時間。

Bash是什麼?它起源於哪裡?

當我們談到 Bash 時,我們指的是一個命令解釋器或 shell,它充當使用者和作業系統之間的中介,主要用於 GNU/Linux、Unix 和相容系統。 Bash 一詞源自於“Bourne Again Shell”,這是一個文字遊戲,指的是最初的 Bourne shell(sh),Bash 是對其的改進,同時保留了原有的風格。 相容性和新增功能。 它誕生於上世紀八十年代,這要歸功於布萊恩福克斯,是在…的支持下。 GNU項目目標是為 Unix 世界帶來一個免費、強大且開放的 shell。

它的成功如此顯著,以至於在實踐中,它現在已成為大多數 Linux 發行版和類別 Unix 系統中的預設 shell。 它充當使用者命令解釋器,允許您在互動模式(手動輸入命令)和非互動模式(運行腳本來自動化任務)下工作。事實上,即使是最新版本的 macOS 也使用 Bash 作為其預設 shell。

Bash 有什麼用途?它有哪些優勢?

Bash 的主要目的是提供一個環境,​​使用者可以在該環境中與作業系統互動、執行命令、管理檔案和進程,或透過腳本連結複雜的實用程式。 除了作為命令列介面 (CLI) 之外,Bash 還成為 “自動化大腦” 適用於任何 Linux 發行版,既可用於管理伺服器,也可用於處理開發、安裝或維護工作。

使用 Bash 的優點包括:

  • 自動執行重複性任務。 使用腳本,您可以在幾秒鐘內執行手動操作需要幾分鐘甚至幾小時才能完成的過程。
  • 靈活性和便攜性。 用 Bash 編寫的腳本幾乎無需任何更改即可在任何相容的系統上運行:Linux 發行版、macOS、伺服器,甚至只需進行少量調整即可在… Windows (例如,使用 WSL 或 Cygwin)。
  • 優化和減少誤差。 透過自動化,可以最大限度地減少人為錯誤的發生率。
  • 易於學習和改編現有腳本。 對於系統任務而言,Bash 比其他傳統語言更直觀、測試速度更快。
  • 與系統工具和命令完全整合。

shell 究竟是什麼?它與 Bash 有什麼關係?

shell 是一種應用程序,它解釋使用者編寫的命令並在作業系統上執行這些命令。 如果你把這個系統想像成一個黑盒子,那麼外殼就是通往盒子內部的門,你可以透過這扇門向盒子內部發出指令。

因此,Bash 是能夠實現此目的的可用 shell 之一(儘管是最受歡迎的)。 還有其他一些 Bash 工具,例如 zsh、csh 或 ksh,但 Bash 因其相容性、功能性和易於學習的特點而脫穎而出。

Bash的歷史演變

Bash的旅程始於1989年,當時 應自由軟體基金會和理查德·斯托曼的請求,布萊恩·福克斯Bash 最初是作為 Unix 系統 Bourne Shell 的免費替代方案而開發的。自那時起,它的普及率穩步增長,已成為 GNU/Linux 系統的事實標準,也是現代自動化技術建構的基礎。

在其時間線中,在福克斯之後,名字是 切特·拉米該組織至今仍在維護和改進 Bash,添加擴展並修復嚴重漏洞,例如: 彈震 2014 年,這表明了它的重要性和持續的關注。

Bash 安裝和可用性

Bash最大的優點之一就是它的普及性。 它幾乎可以在所有 GNU/Linux 發行版(Ubuntu、Debian、Red Hat、Fedora、Arch Linux 等)、Catalina 之前的 macOS 版本上使用,也可以選擇透過 WSL 等工具在…上使用。 Windows 甚至包括安卓系統。要了解更多關於命令列系統工作原理的信息,您可以參考相關資料。 什麼是 CLI?.

若要檢查是否已安裝 Bash,請在終端機中執行以下命令:

bash --version

如果顯示了版本號,即可立即開始使用。

第一步:了解控制台和基本的 Bash 命令

透過控制台(或終端),Bash 允許您執行修改、查詢或操作檔案、目錄、進程等等的命令。 對於任何想要超越簡單圖形介面的用戶來說,它都是一個起點。

導航和資料夾管理命令:

  • 密碼:顯示您目前所在的目錄路徑。
  • cd:更改資料夾,並將路徑作為參數指定。

操作目錄的命令:

  • ls:列出資料夾的內容。
  • MKDIR:新建一個目錄。
  • 命令rmdir刪除空目錄。
  • rm刪除資料夾或檔案(務必格外小心)。

文件操作:

  • cp在不同位置之間複製文件。
  • mv:移動或重新命名檔案。
  • :顯示文件的內容。

使用者常用指令:

  • :查閱任何命令的手冊。
  • 錯過:在終端機上列印資訊。
  • grep的:在文件中搜尋文字模式。
  • 出口關閉目前 Bash 會話。

自動化任務:Bash 腳本實用入門

Bash 最強大的功能之一是能夠創建腳本,即包含一系列按順序執行的命令的文字文件,從而自動執行任何重複或複雜的操作序列。

這些腳本對於系統管理任務、備份、部署、日誌管理等等都特別有用。例如,假設您想要搜尋所有副檔名為.txt 的檔案。 。舊 您可以將資料夾中的檔案自動移動到備份資料夾。所有這些操作都可以用一個簡單的 Bash 腳本完成。

Bash腳本的基本結構

  1. 第一行必須指明解釋器: 通常包括 #!/bin/bash 這樣系統就可以使用 Bash 來運行腳本了。
  2. 所需的命令已寫出,每條命令佔一行。
  3. 腳本以 .sh 副檔名儲存。 (例如:backup.sh)。
  4. 你需要賦予它執行權限 chmod +x nombre.sh.
  5. 它透過終端執行,可以透過以下方式之一執行: ./nombre.sh o bash nombre.sh.

這些基本步驟將使您能夠自動執行操作,並且 節省大量原本需要多次重複命令才能完成的任務的工作量。

Bash 中的變數:類型和用途

Bash 中的變數儲存文字字串、數字、命令結果或路徑等訊息,用於操作資料並促進腳本中的動態工作。

  • 全域變數(環境變量): 它們在整個系統及其子進程中均可使用。
  • 局部變量: 它們僅存在於已聲明它們的 shell 或函數中。

聲明和使用範例:

# Asigna 'Esto es un texto' a la variable mensaje
mensaje="Esto es un texto"
echo $mensaje

請記住,等號 (=) 周圍不需要空格,要使用變數的值,請將該符號放在變數前面。 $.

流程控制:Bash 中的條件語句和循環語句

Bash 腳本功能強大,這得益於其流程控制機制,它允許您根據條件執行操作、重複任務或執行檢查。

條件語句(if-then-else)

if ; then
  echo "El número es mayor que 10"
else
  echo "El número es 10 o menor"
fi

您可以使用以下方式連線條件 ELIF 並執行多項檢查。

循環

它們用於處理清單、重複命令或遍歷檔案和目錄。

  • For 迴圈: 遍歷清單中的每個元素。
for item in 1 2 3; do
  echo $item
done
  • While 迴圈: 當條件為真時重複此操作。
  • 循環直到: 重複此動作直至條件成立。

你可以結合迴圈和條件語句來寫更複雜的腳本。

Bash 中的函數:重複使用與模組化

Bash 中的一個函數允許你將一組命令歸類到一個特定的名稱下。這樣可以讓你重複使用程式碼,並更清楚地組織大型腳本。

hola_mundo() {
  echo "¡Hola, mundo!"
}
hola_mundo

函數可以有參數和傳回值,從而可以輕鬆地根據您的需求建立自訂實用程式。

Bash腳本中的檔案和進程管理

Bash 擅長使用內建命令或外部實用程式來操作和管理文件,使您可以執行從讀取和寫入文件到搜尋和篩選資訊的所有操作。

  • 讀取檔案: 運用 cat 所有內容或循環 while read 逐行處理。
  • 寫入/輸出重定向: 運用 > 覆蓋和 >> 在文件末尾添加內容。
echo "Texto nuevo" > archivo.txt  # Sobrescribe

echo "Otra línea" >> archivo.txt  # Añade

日誌管理、備份建立、格式轉換或關鍵資訊提取等操作通常都會自動化。

高級命令和內建實用程式

Bash 可讓您利用數百個系統命令和應用程式來完成複雜任務,並輕鬆整合和連結結果。

  • grep: 按模式進行文字搜尋。
  • awk、sed、cut: 快速處理資料和文字。
  • top、ps、kill、systemctl: 系統流程與服務的監督與管理。
  • ping、ifconfig、scp、ssh: 與網路、遠端伺服器和檔案傳輸進行互動。

所有這些命令都可以在腳本中使用和組合,以創建完全自訂的解決方案。

Bash腳本的權限和執行

要執行 Bash 腳本,必須賦予其執行權限:

chmod +x nombre.sh

然後您可以輸入以下命令啟動它:

./nombre.sh

或者,如果您願意,可以直接指定解釋器:

bash nombre.sh

腳本可以透過 Unix 中的任務排程器「cron」自動運行,從而無需人工幹預即可在特定時間安排操作。

安全使用 Bash 的實用技巧和關鍵要點

在編寫 Bash 腳本時,清晰性和健全性至關重要。請確保您的腳本:

  • 他們總是先找到翻譯人員。
  • 他們會驗證資料輸入情況,以防止危險的錯誤。
  • 他們還添加了解釋性評論。 # 為了闡明每個部分或功能。
  • 它們使用原生命令和高效選項來提高效能。

有類似的工具 殼牌檢查 它可以幫助你分析腳本,並在運行腳本之前檢測語法問題或潛在錯誤。

什麼是網路霸凌?何時該避免網路霸凌?

「Bashism」指的是使用Bash特有的功能,這些功能與標準的POSIX shell規範不相容。 如果你的腳本需要在 Bash 不能保證作為解釋器的環境中運行,請避免使用這些擴展,並選擇不同的語法。 盡可能通用。

將 Bash 與其他環境和技術集成

Bash 不是一個孤立的島嶼:你可以將它與其他程式語言、版本控制系統或 DevOps 工具結合起來,創造完整且強大的工作流程。

  • Bash 可以呼叫其他語言(Python、Perl 等),從而實現複雜的交互作用。
  • 它與持續部署(CI/CD)系統和伺服器自動化無縫整合。
  • 命令列介面是現代雲端服務和管理專案的基石。

常見 Bash 腳本範例

為了說明這些概念,以下列舉一些 Bash 特別擅長的應用場景:

  • 每日備份自動化管理和舊文件自動清理。
  • 透過傳送電子郵件警報來監控 CPU、記憶體或磁碟空間使用量。
  • 應用程式部署在伺服器上,具備自動檢查和通知功能。
  • 用極少的 Bash 程式碼提取、過濾和轉換數百萬行日誌。
  • 透過網路在伺服器之間同步檔案。
  • 多平台軟體安裝流程。

這些案例證明了 Bash 的靈活性、高效性和對各種技術場景的適應性。

Bash腳本的基本和進階命令

要熟練 Bash,需要了解並掌握日常使用中最常用的命令,包括基礎命令和高級命令。

  • cd、pwd、ls、mkdir、rmdir、cp、mv、rm、touch、cat — 檔案和目錄的導航、操作。
  • grep、awk、sed、cut、sort、uniq、tr — 文字和資料流的操縱。
  • ps、top、kill、systemctl、service —流程與服務管理。
  • df,du — 磁碟空間資訊。
  • ping、ifconfig、netstat、ssh、scp — 網路和連線指令。

學習 Bash 的過程中,你會發現可以用管道將這些指令組合起來(|)、重定向和控制結構,以極少的努力取得驚人的結果。

輸入和輸出:使用者互動和存儲

Bash 最有用的功能之一是它能夠直接與用戶互動並管理文件,允許它讀取鍵盤輸入並以各種方式保存資訊。

echo "Introduce tu nombre:"
read nombre
echo "¡Hola, $nombre!"

要處理動態數據,可以使用本機檔案、向腳本傳遞參數或將結果儲存在變數中。

./script.sh archivo.txt palabraClave

在腳本內部,您可以使用以下方式存取這些參數: $1 y $2.

使用 Bash 時常見的錯誤和關鍵建議

在使用和學習過程中,經常會出現一些常見錯誤,例如:

  • 輸入或變數缺乏驗證,導致出現意想不到的結果。
  • 在運行檔案和腳本之前,請確保其權限不正確。
  • 缺少註釋會使維護工作變得困難。
  • 全域變數和局部變數混淆,導致上下文錯誤。
  • 在不完全了解其工作原理的情況下執行危險命令,例如: rm -rf.

為了避免這些錯誤,始終建議查閱官方文件、透過實例練習以及使用分析工具。

Bash 在科技領域的現況與未來

Bash 不僅沒有過時,反而不斷更新,融入安全改進和新功能,鞏固了其在 Linux 系統、伺服器、雲端、DevOps 和自動化管理中的支柱地位。

它廣泛存在於生產和開發環境中,從傳統伺服器到雲端平台、容器(Docker、Kubernetes)以及 CI/CD 工作流程,無所不包。要擴展您對系統整合的知識,請參閱… 什麼是 WSL 2?.

其活躍的社區,以及免費的教育資源和官方文檔,方便了從初學者到專家等各個級別的學習者和疑惑解決者。

發表評論