shell簡介

一、Shell 概念定義

Shell 是用 C 語言編寫的程序,是用戶使用 Linux 的橋梁,既是命令語言又是程序設計語言。

shell 腳本為 Shell 編寫的腳本程序,常說的?shell 通常指 shell 腳本。

  • 包含一系列命令的文本文件,這些命令按照特定順序排列,由 Shell 解釋器逐行執行,以完成特定任務或實現一系列操作。
  • 提供用戶訪問操作系統內核服務界面的應用程序
  • 編程類似 JavaScript、php,需文本編輯器和腳本解釋器

二、Shell 基本種類

  • Bourne Shell(/usr/bin/sh 或/bin/sh):最早廣泛使用的 Unix Shell 之一,具有簡潔和高效的特點。許多系統腳本和基礎的系統操作都依賴于它。
  • Bourne Again Shell(/bin/bash):對 Bourne Shell 的擴展和增強,提供了更多的功能和特性,如命令補全、更強大的變量處理等。它在 Linux 系統中非常流行,是許多用戶的默認選擇。
  • C Shell(/usr/bin/csh):其語法風格與 Bourne Shell 有所不同,具有一些獨特的特性,如類似 C 語言的控制結構等。一些用戶因其特定的編程風格而喜歡使用它。
  • K Shell(/usr/bin/ksh):具有高效的執行速度和豐富的功能,在一些特定的場景和環境中被廣泛應用。
  • Shell for Root(/sbin/sh):這通常是專門為 root 用戶(系統管理員)設計的 Shell,可能在權限和功能上有一些特殊的配置,以適應系統管理的需求。

三、Shell 基本語法

  • 變量的使用
    • 可以定義各種類型的變量,如字符串、整數等。
    • 通過賦值和引用變量來傳遞數據。
# 定義字符串變量
name="Alice"
# 定義整數變量
age=25# 引用變量
echo "Name is $name and age is $age."
  • 控制結構
    • 包括 if-else 條件判斷。
    • for 循環用于迭代操作。
    • while 循環在特定條件下執行。
number=10
if [ $number -gt 5 ]; thenecho "Number is greater than 5"
elseecho "Number is less than or equal to 5"
fi
##if else語句for i in {1..5}; doecho "Iteration $i"
done
##for 語句count=0
while [ $count -lt 3 ]; doecho "Count is $count"((count++))
end
##while 語句
  • 函數的定義與調用
    • 將一段可重用的代碼定義為函數。
    • 方便在腳本中多處調用。
# 定義函數
function myFunction() {echo "This is inside the function."
}# 調用函數
myFunction
  • 輸入與輸出
    • 使用 read 命令獲取用戶輸入。
    • 通過 echo 等命令輸出信息。

四、Shell? 與 bat?

相似之處

  • 都可以用于執行一系列的命令行操作。
  • 都可以實現一定的自動化任務。

區別

  • 適用系統:Shell 腳本通常在類 Unix 系統(如 Linux、Mac OS)上使用,而 bat 腳本主要用于 Windows 系統。
  • 語法風格:它們的語法有較大差異,Shell 腳本有多種類型(如 Bash 等),各自有其獨特的語法規則和特性;bat 腳本有其特定的命令和語法結構。
  • 功能豐富度
    • Shell 腳本在系統管理、文件操作等方面可能更強大和靈活;
    • bat 腳本在 Windows 特定環境下有其針對性的功能。

五、Shell 腳本 具體應用

  • 系統管理:如自動化系統配置、軟件安裝與更新、用戶管理等。
  • 服務器運維:監控服務器狀態、啟動和停止服務、處理日志等。
  • 批量文件處理:批量重命名文件、移動或復制文件、對文件內容進行操作等。
  • 構建和部署:在軟件開發中用于項目的構建、打包和部署流程。
  • 數據處理與分析:對文本數據進行篩選、提取、統計等操作。
  • 任務自動化:實現各種重復任務的自動化執行,提高工作效率。
  • 環境設置:為特定應用或項目快速搭建所需的運行環境。
  • 日常辦公輔助:可以定制一些便捷的小工具來簡化日常辦公流程。

六、Shell 優點缺點

優點:

  • 強大的交互性:能方便地與用戶進行交互,獲取輸入和反饋信息。
  • 便捷的系統管理:特別適合系統操作和管理任務,如文件操作、進程管理等。
  • 靈活易用:語法相對簡單,容易學習和上手,且可以快速編寫實用的腳本。
  • 高度可定制:可以根據具體需求進行靈活定制和擴展。

缺點:

  • 執行效率相對較低:與一些編譯型語言相比,在處理大規模數據或復雜計算時效率可能不高。
  • 代碼可讀性可能受限:復雜的腳本可能在代碼結構和可讀性上存在一定挑戰。
  • 錯誤排查有時較困難:一些不明顯的錯誤可能較難發現和定位。

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

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

相關文章

調試環境搭建(Redis 6.X 版本)

今兒,我們來搭建一個 Redis 調試環境,目標是: 啟動 Redis Server ,成功斷點調試 Server 的啟動過程。使用 redis-cli 啟動一個 Client 連接上 Server,并使用 get key 指令,發起一次 key 的讀取。 視頻可見…

【python解決】查詢報%d format: a number is required, not str問題

【Python解決】查詢報%d format: a number is required, not str問題 在Python中,字符串格式化是一種常見的操作,用于創建包含變量的字符串。如果你在使用%操作符進行格式化時遇到了%d format: a number is required, not str的錯誤,這意味著…

C# 集合(二) —— List/Queue類

總目錄 C# 語法總目錄 集合二 List/Queue 1. List2. Queue 1. List List有ArrayList和LinkedList ArrayList 類似數組,查找快,插入刪除慢(相對)LinkedList 類似雙向鏈表,查找慢(相對),插入刪除快 //ArrayList //ArrayList Arr…

ts和js有什么不同

TypeScript(簡稱TS)和JavaScript(簡稱JS)之間的主要區別可以歸納為以下幾點: 類型系統: JS:是一種弱類型、動態類型的語言,變量的類型在運行時確定,沒有靜態類型選項。T…

基于SSM的旅游民宿預定系統【源碼】【運行教程】

基于SSM的旅游民宿預定系統 一、項目介紹1. 游客功能2. 管理員功能3. 高級功能 二、項目技術棧三、項目運行四、項目演示總結 大家好,這里是程序猿代碼之路!隨著旅游業的快速發展,民宿作為一種獨特的住宿方式越來越受到游客的喜愛。為了提升用…

百華鞋業祝莘莘學子旗開得勝,一舉奪魁

在知識的海洋中, 有一群人以筆為劍, 在漫長的歲月里不斷磨礪, 只為迎接那場人生的重要戰役——高考。 高考, 是學子們十幾年寒窗苦讀的見證, 是他們用奮斗書寫青春考卷的舞臺。 在這個舞臺上, 他們將…

當前主流的App開發技術綜述

一、引言 隨著移動互聯網的蓬勃發展,App(應用程序)已經成為人們日常生活中不可或缺的一部分。無論是社交、購物、娛樂還是工作學習,App都以其便捷、高效和個性化的特點深受用戶喜愛。而在這一過程中,App開發技術也在不…

周末總結(2024/06/08)

工作 人際關系核心實踐: 要學會隨時回應別人的善意。執行時間控制在5分鐘以內 堅持每天早會打招呼 遇到接不住的話題時拉低自己,抬高別人(無陰陽氣息) 工作上的要點 現狀(接受破爛現狀,改變狀態) - 和老師溝通過&…

ChatGPT-4o體驗demo

OpenAI 最近推出了其最新的人工智能語言模型——GPT-4O。該模型是在原有 GPT-4 的基礎上進行優化而成,旨在提升生成質量和響應速度。GPT-4O 采用了更加高效的架構設計,使其在處理復雜文本時表現出更快的速度和更高的準確性。GPT-4O 在訓練過程中融入了最…

一些關于機器學習的思路和猜測

一、機器學習能做什么 1、網上說機器學習就是根據已有的圖片、文字、視頻資料,建立一個數據庫,用一個處理算法,把已有的資料進行提取關鍵特征和一些聯系,存入數據庫中。 2、當學習到一定程度,就能跟人一樣到實際場景…

kafka的leader和follower

leader和follower kafka的leader和follower是相對于分區有意義的,不是相對于broker。 因為每個分區都有leader和follower, leader負責讀寫數據。 follower負責復制leader的數據保存到自己的日志數據中,并在leader掛掉后重新選舉出leader。 kafka會再…

pinia 重置狀態插件

一、前言 測試提出,登出登錄后,再次進入頁面后。頁面的查詢項非初始狀態。檢查后發現,是因為查詢項的值存到了store呢,從store中獲取,故需要一個重置store的方法 二、pinia 查閱pinia官網后,發現pinia提…

請求分頁存儲管理方式

目錄 請求分頁中的硬件支持 1. 請求頁表機制 2. 缺頁中斷機構 硬件支持的詳細工作流程 示例代碼 請求分頁中的內存分配 最小物理塊數的確定 分配方式 分配公平性 請求分頁存儲管理方式中的內存分配策略 具體示例 頁面調入策略 最近最久未使用(LRU, Leas…

(2024,Vision-LSTM,ViL,xLSTM,ViT,ViM,雙向掃描)xLSTM 作為通用視覺骨干

Vision-LSTM: xLSTM as Generic Vision Backbone 公和眾與號:EDPJ(進 Q 交流群:922230617 或加 VX:CV_EDPJ 進 V 交流群) 目錄 0. 摘要 2 方法 3 實驗 3.1 分類設計 4 結論 0. 摘要 Transformer 被廣泛用作計算…

linux常用操作命令匯總

各個軟件安裝步驟流程 jdk 鏈接: mysql 鏈接: redis 要查詢 Linux 上各個應用程序占用的內存 要查詢 Linux 上各個應用程序占用的內存,可以使用 top 或 ps 命令結合其他工具來實現。下面介紹兩種方法 方法一:使用 top 命令 打…

Access數據中的SQL偏移注入

使用場景: 目標數據表的字段較多,無法一一獲取的時候,嘗試使用偏移注入的方式實現SQL注入。 原理: 例如:一個表有6個字段,而你想獲取的目標表admin的字段不知道,此時可以使用聯合查詢的方式獲…

反射型xss靶場練習

反射型xss危害小,這里使用的xss靶場是常用的xss靶場:xss-labs。 當我們完成彈窗后就通過該關卡,說該關卡存在xss的一個漏洞并且可以解析js代碼。 第一關: 這里沒有過濾我們輸入的代碼:直接將js代碼放在js代碼中&a…

12、架構-流量治理之服務容錯

概述 容錯性設計(Design for Failure)是微服務的另一個核心原 則,也是筆者書中反復強調的開發觀念轉變。不過,即使已經有一定 的心理準備,大多數首次將微服務架構引入實際生產系統的開發者, 在服務發…

web前端 麥子學院:探索前端技術的無盡奧秘

web前端 麥子學院:探索前端技術的無盡奧秘 在數字化浪潮洶涌的時代,Web前端技術作為連接用戶與互聯網的橋梁,正以其獨特的魅力吸引著無數開發者。麥子學院,作為前端技術學習的殿堂,為我們提供了深入探索前端技術的寶貴…

Linux下線程的互斥與同步詳解

🤖個人主頁:晚風相伴-CSDN博客 💖如果覺得內容對你有幫助的話,還請給博主一鍵三連(點贊💜、收藏🧡、關注💚)吧 🙏如果內容有誤或者有寫的不好的地方的話&…