Linux Shell之一 Shell簡介

來源:互聯網
上載者:User

標籤:程式設計   程式設計語言   解譯器   作業系統   c語言   

    玩Linux不知道Shell,那就是不懂Linux。這句話足以見證shell在Linux營運中的地位。一直想好好寫下shell,但總是不知道如何寫起,不是因為Shell太難,而是因為她太龐大,也可能是因為自己shell能力上的不足,怕不能體系化地瞭解Shell,但是要開始的終究還是要開始,Come On!
什麼是Shell
     Shell是作業系統的最外層,Shell可以合并程式設計語言以控制進程和檔案,以及啟動和控制其它程式。shell 通過提示您輸入,向作業系統解釋該輸入,然後處理來自作業系統的任何結果輸出來管理您與作業系統之間的互動。
    Shell是一個使用者跟作業系統之間的一個命令直譯器。Shell是使用者與Linux作業系統之間溝通的橋樑。使用者可以輸入命令執行,又可以利用 Shell指令碼編程去運行。
    Shell本身是一個用C語言編寫的程式,它是使用者使用Unix/Linux的橋樑,使用者的大部分工作都是通過Shell完成的。
    Shell既是一種命令語言,又是一種程式設計語言。作為命令語言,它互動式地解釋和執行使用者輸入的命令;作為程式設計語言,它定義了各種變數和參數,並提供了許多在進階語言中才具有的控制結構,包括迴圈和分支。  
 
Shell與編譯型語言的差異
編譯型語言
    很多傳統的程式設計語言,例如Fortran、Ada、Pascal、C、C++和Java,都是編譯型語言。這類語言需要預先將我們寫好的原始碼(source code)轉換成目標代碼(object code),這個過程被稱作“編譯”。運行程式時,直接讀取目標代碼(object code)。由於編譯後的目標代碼(object code)非常接近電腦底層,因此執行效率很高,這是編譯型語言的優點。但是,由於編譯型語言多半運作於底層,所處理的是位元組、整數、浮點數或是其他機器層級的對象,往往實現一個簡單的功能需要大量複雜的代碼。例如,在C++裡,就很難進行“將一個目錄裡所有的檔案複製到另一個目錄中”之類的簡單操作。
解釋型語言
    解釋型語言也被稱作“指令碼語言”。執行這類程式時,解譯器(interpreter)需要讀取我們編寫的原始碼(source code),並將其轉換成目標代碼(object code),再由電腦運行。因為每次執行程式都多了編譯的過程,因此效率有所下降。

指令碼程式設計語言的好處

    使用指令碼程式設計語言的好處是,它們多半運行在比編譯型語言還高的層級,能夠輕易處理檔案與目錄之類的對象;缺點是它們的效率通常不如編譯型語言。不過權衡之下,通常使用指令碼編程還是值得的:花一個小時寫成的簡單指令碼,同樣的功能用C或C++來編寫實現,可能需要兩天,而且一般來說,指令碼執行的速度已經夠快了,快到足以讓人忽略它效能上的問題。指令碼程式設計語言的例子有awk、Perl、Python、Ruby與Shell。
Shell有兩種執行命令的方式:
    互動式(Interactive):解釋執行使用者的命令,使用者輸入一條命令,Shell就解釋執行一條。
    批處理(Batch):使用者事先寫一個Shell指令碼(Script),其中有很多條命令,讓Shell一次把這些命令執行完,而不必一條一條地敲命令。
Linux Shell種類:
    常見的有Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K Shell(/usr/bin/ksh)、Shell for Root(/sbin/sh)等。不同的Shell語言的文法有所不同,所以不能交換使用。
最常用的shell是Bash,也就是Bourne Again Shell,由於易用和免費,Bash在日常工作中被廣泛使用,也是大多數Linux系統預設的Shell。接下來我們來寫一個簡單的shell指令碼。(shell指令碼一般檔案名稱以.sh結尾{非必須,但是很有必要},同時檔案第一行定義該指令碼為shell指令碼)

[[email protected] ~]# vim first.sh[[email protected] ~]# cat first.sh #!/bin/bash#DATE 2015.04.28#Author jacken#USE:  This is my first shellecho "Hello World!"[[email protected] ~]# bash first.sh Hello World![[email protected] ~]# ./first.sh-bash: ./first.sh: Permission denied[[email protected] ~]# chmod +x first.sh [[email protected] ~]# ./first.shHello World![[email protected] ~]#

注釋:
想很很多人學Shell都是從“世界,你好!”開始的,Me too!
Shell是用來執行的,所以要有執行(x)的許可權,或者直接 bash first.sh 告訴系統,這就是一個指令碼(無需執行許可權)
第一行的#!/bin/bash是指定這個指令碼要用哪種語言來解釋,除了第一行當"#"標識出哪種語言外,剩餘的全部“#”後的都是注釋、說明。
一個好的Shell會標明日期、作者、版本、用途,這是一個良好的習慣,否則當我們寫數百行代碼的時候,隔個幾個月或幾年,怎麼知道當初寫的是什麼呢?
650) this.width=650;" src="http://img.baidu.com/hi/face/i_f32.gif" alt="i_f32.gif" />

本文出自 “Welcome To Linux World” 部落格,請務必保留此出處http://linuxnote.blog.51cto.com/9876511/1639640

Linux Shell之一 Shell簡介

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.