一、編寫shell指令碼
shell終端直譯器是人與計算機硬體之間的「翻譯官」,它作為使用者與linux系統內部的通訊媒介,除了能夠支援各種變數與引數外,還提供了諸如迴圈、分支等高階程式語言才有的控制結構特性。要想正確使用shell中的這些功能特性,準確下達命令尤為重要。
shell指令碼命令的工作方式有兩種:互動式和批處理。
互動式(interactive):使用者每輸入一條命令就立即執行。
批處理(batch):由使用者事先編寫好乙個完整的shell指令碼,shell會一次性執行指令碼中諸多的命令。
在shell指令碼中不僅會用到前面學習過的很多linux命令以及正規表示式、管道符、資料流重定向等語法規則,還需要把內部功能模組化後通過邏輯語句進行處理,最終形成日常所見的shell指令碼。
乙個完整的shell指令碼,實際上出現了三種不同的元素:
第一行的指令碼宣告(#!)用來告訴系統使用哪種shell直譯器來執行該指令碼;
第二行的注釋資訊(#)是對指令碼功能和某些命令的介紹資訊,使得自己或他人在日後看到這個指令碼內容時,可以快速知道該指令碼的作用或一些警告資訊;
第三、四行的可執行語句也就是我們平時執行的linux命令了。
1.接收使用者的引數
為了讓shell指令碼程式更好地滿足使用者的一些實時需求,以便靈活完成工作,必須要讓指令碼程式能夠像之前執行命令時那樣,接收使用者輸入的引數。
2. 判斷使用者的引數
shell指令碼中的條件測試語法可以判斷表示式是否成立,若條件成立則返回數字0,否則便返回其他隨機數值。
按照測試物件來劃分,條件測試語句可以分為4種:
檔案測試語句;
邏輯測試語句;
整數值比較語句;
字串比較語句。
測試語句格式: [ 條件表示式 ]
切記,條件表示式兩邊均應有乙個空格。
2.1檔案測試即使用指定條件來判斷檔案是否存在或許可權是否滿足等情況的運算子。
檔案測試所用的引數
操作符 作用
-d 測試檔案是否為目錄型別
-e 測試檔案是否存在
-f 判斷是否為一般檔案
-r 測試當前使用者是否有許可權讀取
-w 測試當前使用者是否有許可權寫入
-x 測試當前使用者是否有許可權執行
2.2邏輯語句用於對測試結果進行邏輯分析,根據測試結果可實現不同的效果。
在shell終端中邏輯「與」的運算符號是&&,它表示當前面的命令執行成功後才會執行它後面的命令。
邏輯「或」,它在linux系統中的運算符號為||,表示當前面的命令執行失敗後才會執行它後面的命令。
第三種邏輯語句是「非」,在linux系統中的運算符號是乙個嘆號(!),它表示把條件測試中的判斷結果取相反值。也就是說,如果原本測試的結果是正確的,則將其變成錯誤的;原本測試錯誤的結果則將其變成正確的。
Linux8系統學習 使用者身份與檔案許可權(二)
一 檔案的特殊許可權 在複雜多變的生產環境中,單純設定檔案的rwx許可權無法滿足我們對安全和靈活性的需求,因此便有了suid sgid與sbit的特殊許可權位。1.suidsuid是一種對二進位制程式進行設定的特殊許可權,可以讓二進位制程式的執行者臨時擁有屬主的許可權 僅對擁有執行許可權的二進位制程...
linux 顯示系統學習
gnome gdm kde kdm xdm x display manager x server dev fb0 ptstty gvfs dridrm linux 的3d加速 客戶端程式通過xlib 和 glxlib來和xserver 通訊。客戶端程式一般不直接呼叫,而通過使用toolkit庫比如g...
Linux系統學習之初
在linux誕生之前,一直是unix的天下。只不過當時unix並不能免費獲得,要使用必須先購買授權。在這樣的背景下,很多計算機愛好者非常渴望有乙個便宜或者免費的作業系統供大家學習研究。1983年,計算機界的牛人richard stallman發起了乙個計畫,目的就是構建一套完全自由的作業系統,這個計...