1. 程式人生 > >大神教你一招,如何使用Shell

大神教你一招,如何使用Shell

shel 14. text 組合 行為 語法 權限 測試 如何

Shell是用來解決用戶如何與操作系統通信的問題。
  
  其實大家都對Shell這個概念有誤解,好像一定要是命令行的Shell才叫Shell。
  
  其實Shell,就是殼。
  
  顧名思義就是機器外面的一層殼,用於人機交互,只要是人與電腦交互的接口,就可以稱為Shell。
  
  所以我們熟悉的GNOME、KDE等圖形界面也都是Shell,只不過是GUI Shell。所以像Bash 等 Shell 當初發明的原因當然也就很容易理解了,就是為了人與機器之間交互的問題,只不過當時的技術還不能做出 GUI,所以就做成了命令行的形式。
  
  Linux的核kernel,殼有很多種,
  
  有命令行的:bash、sh、csh、ksh
  
  有圖形化的:KDE/GNOME/ CDE/XFCE
  
  據說Linus那夥人只負責開發核。
  
  也可以把 shell 理解為——命令解釋器。
  
  現在小天教大家編寫簡單的Shell腳本
  
  編寫Shell腳本的方式非常簡單。只需要使用常用的文本編輯器如VIM創建一個文件,然後在文件中輸入命令即可。例如,如果想查看當前所在的工作路徑並列出當前目錄下所有文件及屬性信息,實現這個功能的腳本就可以這麽編寫。

  技術分享圖片
  那麽一個個來解釋這其中的含義吧
  
  第一行#!/bin/bash 代表腳本聲明,即告訴系統使用哪種命令解釋器執行這個腳本。
  
  第二行#為註釋信息。如果有學過C語言或者其他編程語言應該能很快了解。註釋信息不會被執行。是對這個腳本功能的解釋。方便他人查看腳本的時候知道這個腳本的功能。

  
  後面的就是Linux的命令,就不再贅述了。另外。Linux不以後綴名分辨文件類型。也可以說Linux中沒有後綴名的概念。所以腳本名字的.sh是一個約定俗成的規矩 表示這是一個可執行的腳本。
  
  一個寫好的腳本文件可以通過bash去執行。結果如下

  技術分享圖片
  除了用bash這種方式執行之外,還可以使用“./”去執行。但是可能會報錯提示權限不足。這邊先使用chmod命令給腳本執行的權限。權限部分的知識在這暫且不提。在此只需要知道腳本的另一種執行方法就行。

  技術分享圖片
  接收用戶的參數
  
  上面這種簡單的shell腳本只能執行一些預先定義好的功能。有時候需要接收用戶的輸入,才能更好的滿足需求。
  
  在Shell語言中,內設了用於接收參數的變量。變量之間可以用空格間隔。例如0代表當前shell腳本程序的名稱,0代表當前shell腳本程序的名稱,#對應的是總共有幾個參數。、?對應的是所有位置的參數值,?對應的是所有位置的參數值,?對應的是上一個命令執行的返回值。112 3…3…N代表第一個,第二個,第三個….第N個參數的值

  
  嘗試編寫一個腳本程序示例,通過引用上面的變量參數來看下真實效果:

  技術分享圖片
  判斷用戶的參數
  
  系統在執行mkdir命令時會判斷用戶輸入的信息,即判斷用戶指定的文件夾名稱是否已經存在,如果存在則提示報錯;反之則自動創建。Shell腳本中的條件測試語法可以判斷表達式是否成立,若條件成立則返回數字0,否則便返回其他隨機數值。
  
  條件測試語法的執行格式如下:
  
  [ 條件表達式 ]註意兩邊一定要有空格
  
  按照測試對象來劃分,條件測試語句可以分為4種
  
  1.文件測試語句
  
  2.邏輯測試語句
  
  3.整數值比較語句
  
  4.字符串比較語句
  
  文件測試即使用指定條件來判斷文件是否存在或權限是否滿足等情況的運算符.具體參數如下:

  技術分享圖片
  下面使用文件測試語句來判斷/etc/fstab是否為一個目錄類型的文件,然後通過Shell解釋器的內設$?變量顯示上一條命令執行後的返回值。如果返回值為0,則目錄存在;如果返回值為非零的值,則意味著目錄不存在:

  技術分享圖片
  再使用文件測試語句來判斷/etc/fstab是否為一般文件,如果返回值為0,則代表文件存在,且為一般文件:

  技術分享圖片
  當有一天,機器控制了全人類,人類完全成了機器的奴隸,我想 shell 就可以被替代了,應該說是不存在了,因為機器自己會直接調用自己的某個功能。那時候,他們會做很多種如何與人類大腦通信的shell ,用來告訴人類某時某刻、用什麽行為、完成什麽事情、達到什麽效果。
  
  當然,就機器控制人類這件事來說,最好的shell 就是人類語言。反過來想,實際上,shell 就是人類告訴機器某時某刻、用什麽行為、完成什麽事情、達到什麽效果,只不過操作系統是以文件做為基本元素構成的。所以, shell 就是要找到所需文件,也就是要用什麽行為。
  
  而某時某刻、完成什麽事情可以理解為參數,達到的效果就看用戶對各種命令的熟悉程度了,因為多個命令(多個具有一定功能的文件)可以靈活的組合使用,如Linux管道符就能實現多個命令組合使用。
  
  本次分享結束,金信潤天會不定期的推出各種技術幹貨歡迎大家一起交流學習!

  
  技術分享圖片
  本文作者:Lee Xu
  
  HCIE-R&S、CCIE-R&S
  
  擅長路由交換、安全、無線等技術
  
  湖北省職業院校計算機網絡賽項獲獎指導老師
  
  主要技術方向Cisco和Huawei
  
  講授課程:HCIE、CCNA、CCNP、HCNA、HCNP等

大神教你一招,如何使用Shell