国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Linux——Shell腳本編程(1)

這篇具有很好參考價值的文章主要介紹了Linux——Shell腳本編程(1)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、為什么要學習 Shell 編程 ?

1)Linux運維工程師在進行服務器集群管理時,需要編寫Shell程序來進行服務器管理。
2)對于 JavaEE 和 Python 程序員來說,工作的需要,要求你編寫一些 Shell腳本進行程序或者是服務器的維護,比如編寫一個定時備份數(shù)據(jù)庫的腳本。
3) 對于大數(shù)據(jù)程序員來說,需要編寫Shell程序來管理集群。

二、Shell 使用場景

①、Shell 是什么?

????????由于安全、復雜、繁瑣等原因,用戶不能直接接觸內(nèi)核(也沒有必要),需另外再開發(fā)一個程序讓用戶直接使用這個程序;該程序作用就是接收用戶操作(點擊圖標、輸入命令)并進行簡單處理,然后再傳遞給內(nèi)核,這樣用戶就能間接地使用操作系統(tǒng)內(nèi)核了。在用戶和內(nèi)核之間加一層“代理”,既能簡化操作又能保障內(nèi)核安全。

Linux——Shell腳本編程(1),Linux和部署,后端,學習方法,java,linux,服務器,運維,運維開發(fā)


????????這個另外開發(fā)的程序就是這層“代理”。Linux下這個命令行程序叫?Shell。是一個應用程序,讓用戶能夠更加高效、安全、低成本地使用 Linux 內(nèi)核,這就是 Shell 的本質(zhì)。Shell 本身并不是內(nèi)核的一部分,它只是站在內(nèi)核基礎上編寫的一個應用程序,和 QQ、迅雷、Firefox 等其它軟件沒有什么區(qū)別。然而 Shell 也有著它的特殊性就是開機立馬啟動;用戶通過 Shell 來使用 Linux,不啟動 Shell 的話用戶就沒辦法使用 Linux。

②、Shell?如何連接用戶和內(nèi)核?

????????Shell 程序本身功能是很弱的,比如文件操作、輸入輸出、進程管理等都得依賴內(nèi)核。運行一個命令,大部分情況下 Shell 會去調(diào)用內(nèi)核暴露出來的接口,這就是在使用內(nèi)核,只是這個過程被 Shell 隱藏了起來,它自己在背后默默進行看不到而已。
????????接口其實就是一個個函數(shù),使用內(nèi)核就是調(diào)用這些函數(shù)。這就是使用內(nèi)核全部內(nèi)容了嗎?嗯,是的!除了函數(shù),沒有別的途徑使用內(nèi)核。比如Shell 中輸入cat log.txt命令就可以查看 log.txt 文件中的內(nèi)容,然而log.txt 放在磁盤的哪個位置?分成了幾個數(shù)據(jù)塊?在哪里開始?在哪里終止?如何操作探頭讀取它?這些底層細節(jié) Shell 統(tǒng)統(tǒng)不知道的,它只能去調(diào)用內(nèi)核提供的 open() 和 read() 函數(shù),告訴內(nèi)核我要讀取 log.txt 文件,然后內(nèi)核就按照 Shell 的吩咐去讀取文件了,并將讀取到的文件內(nèi)容交給 Shell,最后由 Shell 呈現(xiàn)給用戶(其實呈現(xiàn)到顯示器上還得依賴內(nèi)核)。整個過程?Shell 就是一個“中間商”,它在用戶和內(nèi)核之間“倒賣”數(shù)據(jù)。

三、Shell 連接其它程序

????????Shell 中輸入的命令,有一部分是 Shell 本身自帶的叫做內(nèi)置命令;有一部分是其它應用程序(一個程序就是一個命令)這叫做外部命令。Shell 本身支持的命令并不多功能也有限,但?Shell 可以調(diào)用其他程序,每個程序就是一個命令,使得 Shell 命令數(shù)量可以無限擴展,結(jié)果就是 Shell 功能非常強大,完全能夠勝任 Linux 日常管理工作,如文本或字符串檢索、文件的查找或創(chuàng)建、大規(guī)模軟件自動部署、更改系統(tǒng)設置、監(jiān)控服務器性能、發(fā)送報警郵件、抓取網(wǎng)頁內(nèi)容、壓縮文件等。更加驚訝的是,Shell 還可以讓多個外部程序發(fā)生連接,在它們之間很方便地傳遞數(shù)據(jù),就是把一個程序的輸出結(jié)果傳遞給另一個程序作為輸入。Shell 強大,并不是 Shell 本身功能豐富,而是它擅長使用和組織其他的程序??梢詫?Shell 在整個 Linux 系統(tǒng)中的地位描述成下圖所示的樣子。注意“用戶”和“其它應用程序”是通過虛線連接的,因為用戶啟動 Linux 后直接面對的是 Shell,通過 Shell 才能運行其它的應用程序。

Linux——Shell腳本編程(1),Linux和部署,后端,學習方法,java,linux,服務器,運維,運維開發(fā)

四、Shell 編程(Shell 是一種腳本語言)

????????Shell 并不是簡單的堆砌命令,我們還可以在 Shell 中編程,這和使用?C++、C#、Java、Python?等常見的編程語言并沒有什么兩樣。Shell 雖然沒有 C++、Java、Python 等強大,但也支持了基本的編程元素,例如:

  • if...else 選擇結(jié)構(gòu),case...in 開關語句,for、while、until 循環(huán);
  • 變量、數(shù)組、字符串、注釋、加減乘除、邏輯運算等概念;
  • 函數(shù),包括用戶自定義的函數(shù)和內(nèi)置函數(shù)(例如 printf、export、eval 等)。

????????站在這個角度講,Shell 也是一種編程語言,它的編譯器(解釋器)是 Shell 這個程序。我們平時所說的 Shell,有時候是指連接用戶和內(nèi)核的這個程序,有時候又是指 Shell 編程。Shell 主要用來開發(fā)一些實用的、自動化的小工具,而不是用來開發(fā)具有復雜業(yè)務邏輯的中大型軟件,例如檢測計算機的硬件參數(shù)、搭建 Web 運行環(huán)境、日志分析等,Shell 都非常合適。
????????尤其是 Linux 運維工程師,Shell 更是必不可少的,是必須掌握的技能,它使得我們能夠自動化地管理服務器集群,否則你就得一個一個地登錄所有的服務器,對每一臺服務器都進行相同的設置,而這些服務器可能有成百上千之多,會浪費大量的時間在重復性的工作上。

五、常見的 Shell

常見的 Shell 有 sh、bash、csh、tcsh、ash 等。

sh

????????sh 的全稱是 Bourne shell,由 AT&T 公司的 Steve Bourne開發(fā),為了紀念他,就用他的名字命名了。sh 是 UNIX 上的標準 shell,很多 UNIX 版本都配有 sh。sh 是第一個流行的 Shell。

csh

????????sh 之后另一個廣為流傳的 shell 是由柏克萊大學的 Bill Joy 設計的,這個 shell 的語法有點類似C語言,所以才得名為 C shell ,簡稱為 csh。Bill Joy 是一個風云人物,他創(chuàng)立了 BSD 操作系統(tǒng),開發(fā)了 vi 編輯器,還是 Sun 公司的創(chuàng)始人之一。

BSD 是 UNIX 的一個重要分支,后人在此基礎上發(fā)展出了很多現(xiàn)代的操作系統(tǒng),最著名的有 FreeBSD、OpenBSD 和 NetBSD,就連?Mac OS X 在很大程度上也基于BSD。

tcsh

????????tcsh 是 csh 的增強版,加入了命令補全功能,提供了更加強大的語法支持。

ash

????????一個簡單的輕量級的 Shell,占用資源少,適合運行于低內(nèi)存環(huán)境,但是與下面講到的 bash shell 完全兼容。

bash

????????bash shell 是 Linux 的默認 shell。bash 由 GNU 組織開發(fā),保持了對 sh shell 的兼容性,是各種 Linux 發(fā)行版默認配置的 shell。

bash 兼容 sh 意味著,針對 sh 編寫的 Shell 代碼可以不加修改地在 bash 中運行。

盡管如此,bash 和 sh 還是有一些不同之處:

  • 一方面,bash 擴展了一些命令和參數(shù);
  • 另一方面,bash 并不完全和 sh 兼容,它們有些行為并不一致,但在大多數(shù)企業(yè)運維的情況下區(qū)別不大,特殊場景可以使用 bash 代替 sh。

六、Shell 腳本的執(zhí)行方式

腳本格式要求

1)腳本以#!/bin/bash開頭
2)腳本需要有可執(zhí)行權限

方式1(輸入腳本的絕對路徑或相對路徑)

說明:首先要賦予helloworld.sh 腳本的+x權限, 再執(zhí)行腳本

比如/hello.sh 或者使用絕對路徑/root/shcode/hello.sh

方式2(sh+腳本)

說明:不用賦予腳本+x權限,直接執(zhí)行即可。比如 shhello.sh,也可以使用絕對路徑

七、編寫第一個Shell 腳本

創(chuàng)建一個 Shell 腳本,輸出hello world!

vim hello.sh
#!/bin/bash
echo "hello,world~"

Linux——Shell腳本編程(1),Linux和部署,后端,學習方法,java,linux,服務器,運維,運維開發(fā)

Linux——Shell腳本編程(1),Linux和部署,后端,學習方法,java,linux,服務器,運維,運維開發(fā)文章來源地址http://www.zghlxwxcb.cn/news/detail-708653.html

?八、參考資料:Shell腳本手冊.pdf (aliyuncs.com)

到了這里,關于Linux——Shell腳本編程(1)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【Linux命令行與Shell腳本編程】第十六章 Shell函數(shù)

    【Linux命令行與Shell腳本編程】第十六章 Shell函數(shù)

    腳本函數(shù)基礎 函數(shù)返回值 在函數(shù)中使用變量 數(shù)組變量和函數(shù) 函數(shù)遞歸 創(chuàng)建庫 在命令行中使用函數(shù) 可以將shell腳本代碼放入函數(shù)中封裝起來,這樣就能在腳本的任意位置多次使用. 函數(shù)是一個腳本代碼塊,可以并在腳本中的任何位置重用它。當需要在腳本中使用該代碼塊時

    2024年02月14日
    瀏覽(40)
  • 3.7 Linux shell腳本編程(分支語句、循環(huán)語句)

    3.7 Linux shell腳本編程(分支語句、循環(huán)語句)

    目錄 分支語句(對標C語言中的if) 多路分支語句(對標C語言中的swich case) 分支語句(對標C語言中的if) 語法結(jié)構(gòu): ? ? ? ? ?if ? ?表達式 ? ? ? ? ??? ??? ?then ?命令表 ? ? ? ? ?fi ? ? 如果表達式為真, 則執(zhí)行命令表中的命令; 否則退出if語句, 即執(zhí)行fi后面的語句。

    2024年02月02日
    瀏覽(24)
  • Linux shell編程學習筆記29:shell自帶的 腳本調(diào)試 選項

    Linux shell編程學習筆記29:shell自帶的 腳本調(diào)試 選項

    Linux shell腳本的調(diào)試方法比較多,上次我們探討和測試了shell內(nèi)建命令set所提供的一些調(diào)試選項,其實 shell 本身也提供了一些調(diào)試選項。我們以bash為例來看看。 purleEndurer @ csdn ~ $ bash --help GNU bash, version 4.2.46(2)-release-(x86_64-redhat-linux-gnu) Usage: ?bash [GNU long option] [option] ... ? ? ?

    2024年02月04日
    瀏覽(16)
  • 【Linux命令行與Shell腳本編程】第十四章,呈現(xiàn)數(shù)據(jù)

    【Linux命令行與Shell腳本編程】第十四章,呈現(xiàn)數(shù)據(jù)

    第十四章 呈現(xiàn)數(shù)據(jù) 1.1,標準文件描述符 文件描述符 縮寫 描述 0 STDIN 標準輸入 1 STDOUT 標準輸出 2 STDERR 標準錯誤 1.1.1,STDIN 標準輸入 1.1.2,STDOUT 標準輸出 1.1.3,STDERR 錯誤輸出 1.2,重定向錯誤 1.2.1.只重定向錯誤 n 1.2.2.重定向錯誤消息和正常輸出 2.1,臨時重定向 2.2,永久重定向 exec 4

    2023年04月25日
    瀏覽(25)
  • linux|shell編程|shell腳本內(nèi)的加減乘除運算實現(xiàn)示例

    shell腳本內(nèi)的加減乘除是由于在編寫kubernetes巡檢腳本的時候,某些部分需要做一點簡單的運算,突然發(fā)現(xiàn)我其實對這些不太熟悉。 因此,查閱了一些資料,現(xiàn)在就加減乘除運算在shell腳本內(nèi)如何應用做一個簡單的總結(jié),寫的不對的地方請各位輕點噴 首先,我們看一個錯誤的示

    2024年02月17日
    瀏覽(19)
  • 【Linux命令行與Shell腳本編程】第十九章 正則表達式

    【Linux命令行與Shell腳本編程】第十九章 正則表達式

    正則表達式基礎 定義BRE模式 擴展正則表達式 在sed和gawk中創(chuàng)建正則表達式,以得到所需的數(shù)據(jù)。 正則表達式是一種可供Linux工具過濾文本的自定義模板,使用元字符來描述數(shù)據(jù)流中的一個或多個字符. Linux工具(比如sed或gawk)會在讀取數(shù)據(jù)時使用正則表達式對數(shù)據(jù)進行模式匹配

    2024年02月13日
    瀏覽(24)
  • Linux shell編程學習筆記14:編寫和運行第一個shell腳本hello world!

    Linux shell編程學習筆記14:編寫和運行第一個shell腳本hello world!

    ?* 20231020?寫這篇博文斷斷續(xù)續(xù)花了好幾天,為了說明不同shell在執(zhí)行同一腳本文件時的差別,我分別在csdn提供線上Linux環(huán)境 (使用的shell是zsh)和自己的電腦上(使用的shell是bash)做測試。功夫不負有心人,在其中一些實例中可以體現(xiàn)出zsh和bash的對腳本文件支持的差別,收

    2024年02月07日
    瀏覽(29)
  • lv3 嵌入式開發(fā)-5 linux shell腳本編程(概念、變量、語句)

    lv3 嵌入式開發(fā)-5 linux shell腳本編程(概念、變量、語句)

    ?Shell腳本是利用 shell 的功能所寫的一個程序。這個程序是使用純文本文件,將一些 shell 的語法與命令(含外部命令)寫在里面,搭配正則表達式、管道命令與數(shù)據(jù)流重定向等功能 ?第一個Shell腳本文件 變量來源于數(shù)學,是計算機語言中能儲存計算結(jié)果或能表示值的抽象概念

    2024年02月10日
    瀏覽(56)
  • 【Linux編程Shell自動化腳本】03 shell四劍客(find、sed、grep、awk)

    語法格式 參數(shù)說明 : path 是要查找的目錄路徑,可以是一個目錄或文件名,也可以是多個路徑,多個路徑之間用空格分隔,如果未指定路徑,則默認為當前目錄。 expression 是可選參數(shù),用于指定查找的條件,可以是文件名、文件類型、文件大小等等。 1. 常用expression 以下列出

    2024年02月09日
    瀏覽(28)
  • Linux Shell 腳本編程學習之【第3章 正則表達式 (第一部分)】

    1、正則表達式是由一串字符和元字符構(gòu)成的字符串,簡稱 RE(Regular Expression)。 2、正則表達式起到數(shù)據(jù)過濾作用。 3、POSIX 標準將正則表達式分為兩類:基本的正則表達式和擴展的正則表達式,大部分 Linux 應用和工具僅支持基本的正則表達式。 Linux Shell 以一串字符作為表達式

    2024年02月16日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包