我們一起學shell之一:shell瞭解
寫在最前面!!!!!!by skyfans
下定決心,開始編寫這方面的部落格內容。原因很簡單,自己做了運維近8年,從最開始的windows伺服器運維到後來接觸linux,是一個漫長的過程,也不是一個漫長的時間。技術這玩意,更新的越來越快,如果作為一名技術人員,不努力,永遠也趕不上技術的快軌列車。也很清楚的記得一個童鞋回來和我說的東西:我去面試的時候那個經理給我出了一個shell的題,我沒有直接答上來,那個經理說了一個很深的話:”作為一個運維不會shell,那就像失去了雙腿一樣!!“
在企業工作了這些年,從一名技術人員轉變到專案經理,在到部門經理。感覺人生匆匆,每天處理不完的事情,技術在不復習的情況下,慢慢就忘掉了。人的遺忘是真的很快的!!
前幾天在考慮更新一個每天一個shell腳本系列內容,但是在更新後呢,好多的童鞋說經理:你寫的內容有點hight了,我們多少有些看不懂,如果直接拿來用,我們又學不到東西(其實對於一個老運維人員來說肯定會感覺我寫的東西都Low的不行,哈哈!!)。為此,我計劃開始來一個我們一起學shell系列,目的還是照顧那些想從0開始學習的淫們吧!~~哈哈!
關於起個名字,不知道氣什麼好,我個人沒啥文采,最近在看抖音上面有一首《我們一起學貓叫》好像挺火,那我就算是來了靈感,來個《我們一起學shell》系列吧!~於是名字就這麼定了!!
好,扯淡到此結束!!開始正題!!
《一》shell基本介紹
1.1什麼是shell
在學習東西之前,我們先要產生疑問,這是什麼,是幹嗎的?就像小孩子一樣,開始在成長的時候有各種各樣的問題,像十萬個為什麼!!
什麼是shell?
在電腦科學中,Shell俗稱殼(用來區別於核),是指“為使用者提供操作介面”的軟體(命令解析器)。它類似於DOS下的command.com和後來的cmd.exe。它接收使用者命令,然後呼叫相應的應用程式。Shell是一個用C語言編寫的指令碼語言,它是使用者與Linux的橋樑,使用者輸入命令交給Shell處理,Shell將相應的操作傳遞給核心(Kernel),核心把處理的結果輸出給使用者。
總結下:就是殼和核心之間的勾引關係,不對是溝通關係。記住,是linux上的,windows可不認識它!
網路上偷個圖,放在下面
1.2 shell基本分類
基本上shell分兩大類:
(1):圖形介面shell(Graphical User Interface shell 即 GUI shell)
(2):命令列式shell(Command Line Interface shell ,即CLI shell)
1.2.1 GUI shell
GUI為Unix或者類Unix作業系統構造一個功能完善、操作簡單以及介面友好的桌面環境。例如:應用最為廣泛的 Windows Explorer (微軟的windows系列作業系統),還有也包括廣為人知的 Linux shell,其中linux shell 包括 X window manager (BlackBox和FluxBox),以及功能更強大的CDE、GNOME、KDE、 XFCE等內容。
1.2.2 CLI shell
CLI是在使用者系統提示符下使用鍵盤輸入可執行命令的介面,使用者通過鍵盤輸入指令,完成一系列操作,並返回相應結果內容。文字作業系統與外部最主要的介面就叫做shell。shell是作業系統最外面的一層。shell管理你與作業系統之間的互動:等待你輸入,向作業系統解釋你的輸入,並且處理各種各樣的作業系統的輸出結果。
1.2.3 shell的型別
Shell基本上是一個命令直譯器,類似於DOS下的command。它接收使用者命令(如free -m,df -h等),然後呼叫相應的應用程式指令內容,回饋結果。較為通用的shell有標準的Bourne shell (sh)和C shell (csh)。
shell的型別,在UNIX中主要有:
Bourne shell (包括 sh,ksh,and bash)
Bourne shell ( sh)
Korn shell ( ksh)
Bourne Again shell ( bash)
POSIX shell ( sh)
C shell (包括 csh and tcsh)
C shell ( csh)
TENEX/TOPS C shell ( tcsh)
由於在日常運維工作中我們常用的是bash的內容,所以後續我們主講此種shell的相關姿勢點。Bash 也是大多數Linux 系統預設的 Shell。