[Shell編程] 零基礎入門 Shell 編程:從概念到第一個腳本

目錄

一、什么是 Shell?—— 連接用戶與系統的 "橋梁"

二、常見的 Shell 類型 —— 不同系統的 "操作面板"

三、Shell 能做什么?—— 不止于 "輸入命令"

1??命令行操作:這是最基礎的功能。通過ls(查看文件)、cd(切換目錄)、rm(刪除文件)等命令,直接控制電腦的文件、進程等資源。

2??系統管理:系統管理員的 "利器"。比如通過 Shell 命令查看 CPU 使用率、配置網絡參數、管理用戶賬號等,無需圖形界面就能完成復雜的系統配置。

3??腳本編程:將一系列命令寫進文本文件(腳本),讓系統按順序執行。比如你每天需要備份文件、清理緩存,只需寫一個腳本,一鍵就能完成所有操作。

4??自動化任務:解放雙手的關鍵。通過腳本實現重復性工作的自動化,比如批量重命名文件、定時運行程序(結合crontab工具)等,大幅提升工作效率。

四、Linux 中的 Shell—— 深入了解 "命令解釋器"

五、第一個 Shell 腳本:Hello World!

步驟 1:創建腳本文件

步驟 2:編寫腳本內容

步驟 3:添加可執行權限

步驟 4:執行腳本

執行結果

六、Shell 編程規范:寫出易讀、易維護的腳本

總結:從入門到實踐


一、什么是 Shell?—— 連接用戶與系統的 "橋梁"

簡單來說,Shell 是一個命令解釋器,它站在用戶和操作系統內核之間,充當 "翻譯官" 的角色:用戶輸入命令,Shell 負責解析并傳遞給內核執行,再將結果返回給用戶。

  • 形象點說,操作系統的核心(內核)就像一臺精密的機器,普通用戶無法直接操作;而 Shell 就是這臺機器的 "操作面板",讓我們能用簡單的命令控制復雜的系統。
  • 類比 Windows 系統:我們常用的cmd.exe(命令提示符)就是一種 Shell;更強大的 PowerShell 也是 Shell 的進階版本。

二、常見的 Shell 類型 —— 不同系統的 "操作面板"

不同的操作系統有不同的 Shell,常見的主要有以下幾種:

<1> Windows 系統

  • cmd.exe:最基礎的命令行 Shell,繼承了早期 DOS 系統的功能,適合簡單的文件操作、程序啟動等。
  • PowerShell:微軟推出的高級 Shell,不僅能執行命令,還支持腳本編程,適合系統管理和自動化任務(比如批量配置 Windows 服務器)。

<2> Linux 系統

  • bash(/bin/bash):目前絕大多數 Linux 發行版(如 Ubuntu、CentOS)的默認 Shell,全稱為 "Bourne Again Shell"。它功能強大、易用且免費,是 Linux 用戶的首選,也是我們學習的重點

三、Shell 能做什么?—— 不止于 "輸入命令"

Shell 的用途遠不止 "輸入命令" 這么簡單,它是系統管理和自動化的核心工具:

1??命令行操作:這是最基礎的功能。通過ls(查看文件)、cd(切換目錄)、rm(刪除文件)等命令,直接控制電腦的文件、進程等資源。

2??系統管理:系統管理員的 "利器"。比如通過 Shell 命令查看 CPU 使用率、配置網絡參數、管理用戶賬號等,無需圖形界面就能完成復雜的系統配置。

3??腳本編程:將一系列命令寫進文本文件(腳本),讓系統按順序執行。比如你每天需要備份文件、清理緩存,只需寫一個腳本,一鍵就能完成所有操作。

4??自動化任務:解放雙手的關鍵。通過腳本實現重復性工作的自動化,比如批量重命名文件、定時運行程序(結合crontab工具)等,大幅提升工作效率。

四、Linux 中的 Shell—— 深入了解 "命令解釋器"

在 Linux 系統中,Shell 是一個特殊的應用程序,它的核心作用是 "解釋命令":

  • 當你輸入ls -l時,Shell 會解析這個命令的含義("查看當前目錄下文件的詳細信息"),然后告訴內核執行相應操作,最后將結果顯示在屏幕上。

  • 查看系統支持的 Shell:Linux 系統可以同時支持多種 Shell,通過/etc/shells文件可以查看所有可用的 Shell 類型。執行以下命令即可:

    bash

    cat /etc/shells
    
    ?

    通常會看到/bin/bash/bin/sh等,其中/bin/bash是最常用的默認 Shell。

五、第一個 Shell 腳本:Hello World!

學習編程的第一步往往是 "Hello World",Shell 編程也不例外。下面我們一步步寫出第一個 Shell 腳本,感受 Shell 編程的魅力。

步驟 1:創建腳本文件

首先,新建一個名為HelloWorld.sh的文件(.sh是 Shell 腳本的常用后綴,方便識別)。可以用vimnano等文本編輯器創建:

bash

vim HelloWorld.sh

步驟 2:編寫腳本內容

在文件中輸入以下內容,然后保存退出:

bash

#!/bin/bash
# 這是我的第一個Shell腳本(注釋行)
pwd  # 顯示當前目錄
echo "Hello World!"  # 輸出Hello World

  • 第一行#!/bin/bash是腳本聲明,告訴系統:這個腳本需要用/bin/bash程序來解釋執行(必須放在腳本第一行)。
  • #開頭的行是注釋(除了第一行的#!/bin/bash),用于說明腳本功能,方便自己和他人理解(好習慣一定要養成!)。
  • pwd命令:顯示當前所在目錄。
  • echo命令:輸出后面的字符串(類似其他語言的 "打印" 功能)。

步驟 3:添加可執行權限

Shell 腳本默認沒有 "執行權限",需要用chmod命令添加。進入腳本所在目錄,執行:

bash

chmod +x ./HelloWorld.sh

  • chmod +x給文件添加 "可執行" 權限(x代表 execute)。
  • 執行后,用ll命令可以看到文件權限中多了x(表示可執行)。

步驟 4:執行腳本

現在,我們可以運行這個腳本了。有三種常見的執行方式:

  1. 通過./執行(推薦):

    bash

    ./HelloWorld.sh
    
    ?
    • 為什么要用./?因為 Linux 會在PATH環境變量指定的目錄(如/bin/usr/bin)中查找可執行程序,而當前目錄通常不在PATH中。./表示 "當前目錄",告訴系統:就在這里找這個腳本。
  2. 通過bashsh執行:

    bash

    bash ./HelloWorld.sh  # 或 sh ./HelloWorld.sh
    

    這種方式不需要腳本有執行權限,因為是直接調用bash程序來解釋腳本。
  3. 通過source.執行:

    bash

    source HelloWorld.sh  # 或 . HelloWorld.sh(注意.后面有空格)
    
    ?
    • 這種方式會在當前 Shell 環境中執行腳本(其他方式會啟動一個 "子 Shell"),適合需要修改當前環境的腳本(比如設置環境變量)。

執行結果

無論用哪種方式,你都會看到類似以下的輸出:

plaintext

/root  # pwd命令的結果(當前目錄)
Hello World!  # echo命令的結果

六、Shell 編程規范:寫出易讀、易維護的腳本

好的腳本不僅能運行,還要讓別人(包括未來的自己)看得懂。以下是初學者必須掌握的編程規范:

  1. 開頭必須有腳本聲明:第一行#!/bin/bash不能少,明確指定解釋器。

  2. 添加注釋:

    • 腳本開頭用注釋說明腳本的功能、作者、創建時間等。
    • 復雜邏輯處用注釋解釋思路(比如 "這里是判斷文件是否存在的邏輯")。
    • 注釋用#開頭,單行注釋即可(Shell 不支持多行注釋)。
  3. 輸出友好信息:多用echo命令輸出關鍵步驟的提示(比如 "開始備份文件..."、"腳本執行完畢"),讓執行過程更清晰。

  4. 示例:規范后的 HelloWorld 腳本

    bash

    #!/bin/bash
    # 腳本名稱:HelloWorld.sh
    # 功能:輸出當前目錄和Hello World信息
    # 作者:初學者echo "當前的目錄位于:"  # 提示信息
    pwd  # 顯示當前目錄
    echo "Hello World!"  # 輸出問候語
    echo "腳本執行完畢"  # 結束提示
    
    ?

    執行后輸出更清晰:

    plaintext

    當前的目錄位于:
    /root
    Hello World!
    腳本執行完畢
    

總結:從入門到實踐

Shell 編程是 Linux 系統操作和自動化的基礎,它不難學,但能大幅提升工作效率。本文我們從 Shell 的概念講到第一個腳本的編寫,核心要點包括:

  • Shell 是用戶與內核之間的命令解釋器;
  • bash 是 Linux 中最常用的 Shell;
  • 腳本的核心是 "按順序執行命令",#!/bin/bash和注釋是基礎規范;
  • 執行腳本的三種方式及區別需要牢記。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/94343.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/94343.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/94343.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【數據結構】排序(sort) -- 插入排序

目錄 一、插入排序 二、直接插入排序&#xff08;straight insertion sort&#xff09; 1. 思路介紹 2. 代碼實現 3. 特性總結 三、希爾排序&#xff08;Shell sort&#xff09; 1. 思路介紹 2. 代碼實現 3. 特性總結 四、總結 一、插入排序 常見的排序算法有&…

水面垃圾清掃船cad【6張】三維圖+設計說明書

海洋吸塵器結構設計 摘 要 近年來&#xff0c;隨著經濟的快速發展&#xff0c;海洋產業及海上活動的增加&#xff0c;導致海洋漂浮垃圾越來越多&#xff0c;對沿岸的居民和海洋的生物的生命安全造成了很大的威脅&#xff0c;嚴重破壞海洋生態平衡。針對海洋垃圾污染這一主要問…

03-List列表數據類型

1.特點&#xff1a; 原屬是字符串類型 列表頭尾增刪塊&#xff0c;中間慢&#xff0c;增刪元素是常態 元素可重復 最多包含2^32-1個元素 索引通python列表2.常用命令 ------增------ 1.從列表頭部壓入數據LPUSH key value1 value22.從列表尾部壓入數據RPUSH key value1 value23…

防火墻認證用戶部署

文章目錄1、配置vlan2、防火墻配置&#xff08;1&#xff09;配置安全區域&#xff08;2&#xff09;接口加入安全區域(3)fw配置DHCP(4)地址組&#xff08;5&#xff09;管理員(6)用戶認證1、配置vlan vlan batch 10 20 [Huawei-GigabitEthernet0/0/2]port link-type access …

Vue.js之監聽器

watch偵聽器&#xff1a;作用:監視數據變化&#xff0c;執行一些 業務邏輯 或 異步操作。 語法:簡單寫法→簡單類型數據&#xff0c;直接監視完整寫法 → 添加額外配置項 (1)deep:true 對復雜類型深度監視(2)immediate:true 初始化立刻執行一次handler方法//1.簡單寫法 data: {…

25電賽e題雜亂環境穩定識別矩形框(附源碼)

? 識別并跟蹤矩形目標 識別視頻中符合矩形輪廓的目標區域&#xff0c;并標記中心點位置。 實現思路 **圖像預處理&#xff1a;灰度 二值化**閉運算消除孔洞二值化處理查找并篩選矩形輪廓解算中心點目標篩選結果繪制 環境 使用 OpenCV 和 python&#xff1a; 圖像預處理…

【前端安全】聊聊 HTML 閉合優先級和瀏覽器解析順序

【前端安全】聊聊瀏覽器解析順序和 HTML 閉合優先級 最近在研究 XSS 的時候&#xff0c;發現一個特別容易被忽略的問題 —— 瀏覽器到底是怎么解析 HTML 的&#xff1f;為什么有些 payload 成功了&#xff0c;有些卻怎么試都不行&#xff1f;其實這跟標簽的閉合優先級還有解析順…

PHP-分支語句、while循環、for循環

分支語句 無論在何種編程語言中&#xff0c;流程控制都是很重要的內容。由于 PHP 的大部分語法都繼承了C語言的特點&#xff0c; 因此在流程控制方面&#xff0c;PHP 有著和C語言類似的流程控制。 if else 語句是流程控制中根據條件判斷執行的一種。該語句執行時先對條件進行判…

并發編程常用工具類(下):CyclicBarrier 與 Phaser 的協同應用

在并發編程中&#xff0c;除了CountDownLatch和Semaphore&#xff0c;CyclicBarrier和Phaser也是實現多線程協作的重要工具。它們在處理多階段任務同步、動態調整參與線程等場景中展現出獨特價值。本文作為并發工具類系列的第二篇&#xff0c;將深入解析CyclicBarrier和Phaser的…

機器人焊接節氣裝置

在摩托車制造過程中&#xff0c;精密部件的焊接質量直接影響整車的安全性和操控性能。以發動機缸體焊接為例&#xff0c;傳統手工焊接容易出現焊縫不均勻的問題&#xff0c;而采用六軸弧焊機器人后&#xff0c;焊接精度能控制在0.1毫米以內。日本川崎重工的生產數據顯示&#x…

使用yolo11訓練食物浪費檢測數據集VOC+YOLO格式6734張32類別步驟和流程

【數據集介紹】數據集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路徑的txt文件&#xff0c;僅僅包含jpg圖片以及對應的VOC格式xml文件和yolo格式txt文件)圖片數量(jpg文件個數)&#xff1a;6734標注數量(xml文件個數)&#xff1a;6734標注數量(txt文件個數)&#xff1…

掌握PowerPC架構與編程技巧:技術資料詳解

本文還有配套的精品資源&#xff0c;點擊獲取 簡介&#xff1a;PowerPC是一種高性能的RISC架構&#xff0c;最初由IBM、Motorola和Apple聯合開發&#xff0c;被設計用于高端工作站和服務器&#xff0c;同時廣泛應用于嵌入式系統、航空電子設備、游戲主機和超級計算機等領域。…

VR 企業展廳:開啟數字化展示新時代

在當今數字化浪潮席卷各行各業的時代&#xff0c;企業的展示與宣傳方式也在不斷革新。VR&#xff08;虛擬現實&#xff09;技術的出現&#xff0c;為企業展廳帶來了全新的變革&#xff0c;使其從傳統的實體展示空間&#xff0c;轉變為具有無限可能的數字化虛擬空間。一、VR 企業…

測試用例顆粒度全解析

引言&#xff1a;為什么顆粒度是測試團隊的“隱形門檻”&#xff1f;在軟件測試領域&#xff0c;測試用例顆粒度&#xff08;即測試用例的詳細程度&#xff09;看似是一個基礎問題&#xff0c;卻常常成為團隊協作的“隱形門檻”。某電商平臺測試團隊曾出現過這樣的窘境&#xf…

分布式鎖的基本原理和基于lua腳本的實現(Redisson)

為了確保分布式鎖可用&#xff0c;我們要確保鎖的實現同時滿足以下四個條件&#xff1a;- 互斥性。在任意時刻&#xff0c;只有一個客戶端能持有鎖。- 不會發生死鎖。即使有一個客戶端在持有鎖的期間崩潰而沒有主動解鎖&#xff0c;也能保證后續其他客戶端能加鎖。- 解鈴還須系…

智慧園區數字孿生全生命周期交付體系:從虛擬建模到全域智聯的快速交付新常態

在數字經濟與綠色低碳轉型的雙重驅動下&#xff0c;智慧園區建設正經歷從“物理空間堆砌”到“數據智能驅動”的范式革命。數字孿生技術作為核心引擎&#xff0c;通過構建物理園區的虛擬鏡像&#xff0c;實現虛實空間的毫秒級同步與智能協同&#xff0c;推動園區管理向全要素感…

電腦忘記開機密碼怎么辦?【圖文詳解】5種方法重置/更改/取消/設置開機密碼?

一、問題背景誰都有馬虎的時候&#xff0c;要是突然忘了電腦開機密碼&#xff0c;就只能對著登錄界面干著急&#xff0c;沒法打開電腦處理工作、查看文件&#xff0c;太影響效率了。別慌&#xff0c;其實有不少簡單實用的辦法能解除或重置密碼&#xff0c;下面就來一一介紹&…

Go語言select

select是什么select是Go語言層面提供的一種多路復用機制&#xff0c;用于檢測當前goroutine連接的多個channel是否有數據準備完畢&#xff0c;可用于讀或寫。Go語言的select語句&#xff0c;是用來起一個goroutine監聽多個Channel的讀寫事件&#xff0c;提高從多個Channel獲取信…

VUE+SPRINGBOOT從0-1打造前后端-前后臺系統-整體示例

一、注冊、登錄、密碼找回二、VUE前臺系統三、VUE后臺系統

深入解析SmolVLA:VLM與動作專家間的注意力機制交互

在機器人學習領域&#xff0c;如何有效地將視覺語言模型&#xff08;VLM&#xff09;的強大感知能力與低級動作控制相結合&#xff0c;是實現通用機器人智能的關鍵挑戰。SmolVLA&#xff08;Small Vision-Language-Action&#xff09;架構正是在這一背景下應運而生&#xff0c;…