真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Shell怎么使用

這篇文章主要為大家展示了“Shell怎么使用”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Shell怎么使用”這篇文章吧。

成都創(chuàng)新互聯(lián)是一家以網(wǎng)站建設、網(wǎng)頁設計、品牌設計、軟件運維、成都網(wǎng)站營銷、小程序App開發(fā)等移動開發(fā)為一體互聯(lián)網(wǎng)公司。已累計為成都展覽展示等眾行業(yè)中小客戶提供優(yōu)質(zhì)的互聯(lián)網(wǎng)建站和軟件開發(fā)服務。

Shell 運行程序方法:1、使文件具有可執(zhí)行權限,直接運行;2、直接調(diào)用命令解釋器執(zhí)行程序;3、使用 source 命令執(zhí)行程序。

Shell怎么使用

     上圖是一個完整的、可執(zhí)行的 Linux Shell 程序,使用上述第一種方法運行此程序,結(jié)果如下:

Shell怎么使用

     可以看出,當前目錄并未被程序中的代碼改變。
     當命令行 shell 執(zhí)行程序時,首先判斷程序是否具有執(zhí)行權限,然后調(diào)用 Linux 內(nèi)核命令新建(fork)一個進程,在新建的進程中調(diào)用指定的命令,如果程序文件是編譯型(為禁止文件),則 Linux 內(nèi)核知道如何執(zhí)行。但是,上圖中的 echo.sh 程序文件是文本文件,內(nèi)核不知道如何執(zhí)行。于是內(nèi)核返回“not executable format file”(不是可執(zhí)行的文件類型),當 shell 收到這個消息時,則判定此文件是一個腳本。
     當 shell 判定此文件為腳本后,啟動一個新的 shell 執(zhí)行它。但是現(xiàn)在的 Linux 系統(tǒng)一般都有好幾個 shell,通過腳本的第一行“#!”告訴運行 shell 創(chuàng)建一個相應的進程來執(zhí)行腳本。

Shell怎么使用

   
     上圖就是運行 shell 程序的第二種方法:調(diào)用命令解釋器執(zhí)行腳本。

Shell怎么使用

   
     上圖是運行 shell 程序的第三種方法:直接使用 source 命令(也被稱為點命令)執(zhí)行腳本。

  1.    
        Linux Shell 可執(zhí)行的命令有三種:內(nèi)建命令、shell 函數(shù)和外部命令。


     內(nèi)建命令就是 shell 程序本身包含的命令,這些命令集成在 shell 解釋器中,例如 cd、echo 等。在執(zhí)行內(nèi)建命令時,沒有進程的創(chuàng)建和消亡。
     shell 函數(shù)是一系列程序代碼,以 shell 語言寫成,可以像其他命令一樣被引用。
     外部命令是獨立于 shell 的可執(zhí)行程序,例如 find、grep、echo.sh。命令行 shell 在執(zhí)行外部命令時,會創(chuàng)建一個當前 shell 的復制進程來執(zhí)行,因此存在進程的創(chuàng)建和消亡。執(zhí)行過程如下:

Shell怎么使用


     子進程在創(chuàng)建初期和父進程一模一樣,但是它不能改變父進程的參數(shù)變量。只有內(nèi)建命令才能改變環(huán)境變量。
     通過上面的解釋,在使用前兩種方法執(zhí)行 shell 腳本時,執(zhí)行過程如下:父進程接收到命令“./echo.sh”或“/bin/bash echo.sh”時,發(fā)現(xiàn)不是內(nèi)建命令,于是創(chuàng)建了一個和自己一模一樣的子進程來執(zhí)行這個外部命令;子進程用 /bin/sh 取代自己,sh 進程設置自己的運行環(huán)境變量;sh 進程依次執(zhí)行內(nèi)建命令 cd 和 echo,環(huán)境變量被改變,但是父進程的環(huán)境變量并沒有受到改變;sh 子進程執(zhí)行完畢,消亡。父進程從等待狀態(tài)醒來繼續(xù)接收命令。
     而使用 source 命令執(zhí)行 shell 腳本時,沒有子進程的創(chuàng)建與消亡,而是直接在父進程中執(zhí)行。


    
    變量(variable)實際上是一個鍵值對,例如 str="Hello",就是將字符串值(value)“Hello”賦予鍵(key)str。在 str 的使用范圍內(nèi),都可以使用 str 來引用“Hello”值,這個操作叫做變量替換。Shell 中的變量名稱以一個字母或下劃線開始,后面接任意長度的字母、數(shù)字或下劃線。而且它對變量類型不做區(qū)分,一切值都是字符串,鍵值都沒有長度的限制,但是在值為數(shù)字的時候,bash 是允許進行比較操作和整數(shù)操作的。鍵值對賦值的時候,等號兩邊不能有任何的空格,想要使用變量名稱獲取值,需要使用 $ 符號,當賦值的內(nèi)容包含空格時,需要加上引號。

Shell怎么使用

     
     需要注意的時,使用 $ 符號獲取變量值的時候,只是 ${with_space} 的簡寫形式,在某些上下文中,使用 $with_space 可能會引起錯誤,這時就需要使用完全形式了。當變量沒有 $ 前綴出現(xiàn)的時候,可能是如下幾種情況:變量被聲明或賦值、變量被 unset、變量被 export。
     變量賦值可以使用等號,也可以在 read 命令中或者循環(huán)頭進行賦值,例如 for var in 1 2 3。被雙引號括起來的變量替換是不會被阻止的,因此它被稱為部分引用或弱引用,而使用單引號將會禁止變量替換,變量名只會被解釋成字面的意思,因此單引號被稱為全引用或強引用。在 shell 中,變量值可以是空值(NULL),這很常見且合理,但是在算術運算中,空值變量往往被看作 0,不過這是一個為文檔化(同時可能是不可移植)的行為。

Shell怎么使用


     Linux Shell 中變量類型有兩種:局部變量可見范圍在代碼塊或函數(shù)中,并且必須明確以 local 聲明,否作它是全局可見的;全局變量(例如環(huán)境變量)可見范圍為全局,不需要加任何修飾詞。

Shell怎么使用

Shell怎么使用

     上圖中執(zhí)行了一個變量相關的程序,運行結(jié)果如下:變量 num 初始值為 123;調(diào)用 func1() 函數(shù)將它賦為 321,需要注意的是此處是修改了全局變量;調(diào)用 func2() 函數(shù)將它賦為 456,此處賦值加上了 local 聲明,因此修改的是局部變量。
     echo 命令通常用來將各個參數(shù)打印到標準輸出。參數(shù)間以一個空格隔開,在輸出打印結(jié)束后,換行。下圖為它的轉(zhuǎn)義字符序列。

Shell怎么使用

     export 命令通常用來設置環(huán)境變量,但是這里設置的環(huán)境變量,僅僅作用于當前進程,進程消亡之后就會消失;也就是說子進程用 export 命令設置的變量無法影響到父進程。但是如果使用 source 方式調(diào)用腳本,腳本里有 export 命令修改了環(huán)境變量,則會影響到父進程。
     env 命令不帶參數(shù)的情況下,顯示所有環(huán)境變量,-i 參數(shù)表示不帶環(huán)境變量,-u 參數(shù)表示從環(huán)境變量中刪除一個變量。(與 set 函數(shù)顯示所有本地變量不同,env 函數(shù)只顯示環(huán)境變量)
     unset 命令默認為刪除變量(-v 參數(shù)),如果使用 -f 參數(shù),則被視為刪除函數(shù)。
     
    語言類型:計算機內(nèi)核(CPU)不能直接理解高級語言(Linux Shell、Java、Python 等),只能直接理解機器語言,所以必須把高級語言翻譯成機器語言,計算機才能執(zhí)行高級語言編寫的程序。
     翻譯的方式有兩種:一個是編譯(compile),一個是解釋(interpret),這兩種方式只是翻譯的時間不同。編譯型語言在執(zhí)行程序之前,需要一個專門的編譯過程,把程序編譯成機器語言的文件,在之后的運行中,就不用重新翻譯了。解釋性語言不需要編譯,只是在程序運行的同時進行翻譯,通常會有一個專門的解釋器(

例如 Linux Shell 中的

/bin/sh、bash、zsh、csh 等)。
     兩種類型的語言,差異如下:許多中、大型程序都是用編譯型語言(例如 C/C++、Java、Fortran)完成,它們的源代碼文件(source code)經(jīng)過編譯之后轉(zhuǎn)為目標代碼文件(object code),機器才能讀取并執(zhí)行目標代碼文件;編譯型語言高效,但是由于貼近于機器底層,難以執(zhí)行上層的一些簡單操作(例如 C++ 難以對某目錄下的所有文件批量重命名),而解釋型語言執(zhí)行層面高于編譯型語言,因此能輕松完成一些高級操作;腳本語言(Shell、Perl、Python、awk、Ruby 等)都是解釋性語言。
     (Python 是一種解釋型語言,但是它采用了 Java 語言的 VM 機制,提供了編譯功能,它的源代碼文件經(jīng)過編譯后,產(chǎn)生了字節(jié)碼文件(bytecode),可以節(jié)省加載模塊的時間從而提高效率)

以上是“Shell怎么使用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


網(wǎng)站標題:Shell怎么使用
標題網(wǎng)址:http://weahome.cn/article/jhijic.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部