91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Shell怎么使用

發布時間:2021-12-30 18:00:17 來源:億速云 閱讀:277 作者:小新 欄目:建站服務器

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

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

Shell怎么使用

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

Shell怎么使用

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

Shell怎么使用

   
     上圖就是運行 shell 程序的第二種方法:調用命令解釋器執行腳本。

Shell怎么使用

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


  1.    
        Linux Shell 可執行的命令有三種:內建命令、shell 函數和外部命令。



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

Shell怎么使用


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


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

Shell怎么使用

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

Shell怎么使用


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

Shell怎么使用

Shell怎么使用

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

Shell怎么使用


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

例如 Linux Shell 中的

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

以上是“Shell怎么使用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

汪清县| 双辽市| 石楼县| 遵义市| 靖州| 台山市| 灵宝市| 三门县| 阳高县| 佛冈县| 舒兰市| 贵阳市| 鞍山市| 赤壁市| 苏尼特右旗| 改则县| 广德县| 阳西县| 庆城县| 忻州市| 图们市| 乡城县| 鹿泉市| 朝阳市| 额济纳旗| 池州市| 万荣县| 新竹县| 岚皋县| 比如县| 沅江市| 郯城县| 高邮市| 喀什市| 双柏县| 大冶市| 河东区| 广东省| 彰化市| 平潭县| 河池市|