一塊兒學Shell之(一)背景知識

#--------------------------------------------------------------#shell

# ====> 紅色字體 -特指煮酒我的所見。加粗則爲須要重點注意     #安全

# ====> 藍色加粗 -特指與本文相關人員,包括參與修正的朋友。 #bash

# ====> 煮酒品茶 -Http://cwtea.blog.51cto.com              #
 
#--------------------------------------------------------------#
 

 
開篇序:
煮酒品茶:首先須要申明的,首先本人並非一時心血來潮而寫此「專題」,而是實時的記錄學習Shell的一個過程,採自書《Shell腳本學習指南》,很是感謝原書做者能寫出看法。並針對書上的文章進行一些我的的理解和見解,看客權當此是一本書的筆記便可,適才我也是如是想的。需註明的是本人也是邊看邊記筆記, 這當中會夾雜我的的一些靈感和一個錯誤的觀點,但願不要誤導讀者,固然也但願讀者在查閱的時候最好連原著一塊兒看。多加強本身的靈動性與感知性。文章有錯誤或者您有更好的建議,請留下留言,筆者會認真去接受建議以及對文章錯誤信息進行更新。
煮酒品茶:首先對筆記是以下規劃的。記錄必需要記錄的概念,以及對腳本核心思想的理解。以及對文中概念的一些擴展甚至是設想。每篇文章都會寫下總結,來權衡文章的質量以及增長筆者的水平。可能的話會在每篇筆記後找相關腳原本學習腳本編寫者的思路以及過程。也但願在這個過程當中能獲得高手們的指點,不出意外一共會有筆記15-20篇根據書本的進程設定。
煮酒品茶:文章會不按期的進行更改以及優化更新。多關注文章變更便可。文章更新變更會以標題爲【第幾回編輯】爲基準。
 
基本信息
書名: 《Shell腳本學習指南》
原書名: Classic Shell Scripting
原出版社: O'Reilly Media, Inc.
做者: Arnold Robbins    Nelson H.F.Beebe   
譯者: O'Reilly Taiwan公司
 
1、背景知識介紹
 
Shell的工做是:執行命令、Shell支持Postix標準。
 
Shell的格式是:
一、以空格或者Tab鍵隔開命令行的每一個組成部分。
二、命令名稱是命令行的第一個項目,一般後面會跟選項以及參數。
三、選項的開關是破折號(——)或者減號(-),後跟字母,選項是可有可            無的,
四、分號(;)可用來分隔同一行裏多餘的命令。
注:使用「&」符號則Shell將後臺執行前面的命令,意味着shell不用等到命令完成就能夠執行下一條命令。
 
煮酒品茶:這個仍是比較好理解的,最開始品茶居然不知道破折號怎麼打,這時候同事就派上用場了。破折號通常用於軟件安裝定義目錄居多,也就是外部命令最經常使用的。
 
Shell識別的基本命令:
一、內建命令  - 由Shell自己所執行的命令。如cd、read、test、echo、printf等。
二、Shell函數 - 是功能健全的一系列程序代碼,以Shell語言寫成,能夠像命令同樣被引用。如if else 賦值操做同樣。
三、外部命令  - 是由Shell的副本執行的命令,模式爲父Shell啓動子Shell而後由子Shell啓動新程序,處理完以後交由父Shell執行。
 
變量:
定義:爲某個信息片斷所取的名字。
規則:每一個變量只有一個值,變量能夠爲空(null)值,首字母必須是字母或下劃線,內容能夠是任意長度。
賦值方式:變量名稱=字符(中間不要有空格),若是需賦值的內容中須要帶空格那麼須要帶引號,須要取變量時能夠用美刀($)加變量名稱來取。 
 
煮酒品茶:我本身記這些定義記得我煩的很啊,可是真正理解後想一想又很是簡單。必定須要記住這些規則,記住了你之後要少翻不少資料。講點好玩的吧。不少的腳本第一行是 #!/bin/bash,知道爲何第一行是這個嗎?不知道吧,我來告訴你咯,若是沒有這一句,當你賦於寫運行權限時運行這個程序,程序會先交由內核來處理,而內核知道處理編譯程序,但一看你不是編譯程序,那麼他就認爲是個Shell,又丟給了shell來執行。咱們再回頭看下#!/bin/bash就很是明瞭了,又有人問了,在Shell裏面#不都是用來註釋的嗎?對確實,可是在腳本里,第一行是預留的,若是有#!/bin/bash那麼他就直接認定你爲一個Shell就不交由內核來處理。咱們來構造着玩玩吧。先是#! /bin/bash 加了一個空格,咱們會發現其實沒區別,可是從Linux流程上來說他但是有區別的啦,當第一行遇到空格時Shell就中止了檢索。這時仍是先交內核而後再還給Shell,因此不能有空格啦。(測試發現#!後面加空格也沒事,估計是如今標準升級過了吧。還有就是這一行redhat系列的是最多支持127個字符咯,如今有沒有升就不知道了。之後若是搞多了提示出錯至少知道這裏也會出問題的。)再來構造一個別的可執行cat程序啦,來試試是什麼感受?

  
  
           
  
  
  1. [root@localhost test]# ./ts  
  2. #!/bin/cat  
  3. hello 51CTO  
看到沒咯?第一行定義他找/bin/cat的麻煩,流程就變成這樣了,執行ts,ts找/bin/cat來執行ts這個腳本。
 
  
  
           
  
  
  1. [root@localhost test]# cat ts 
  2. #!/bin/cat 
  3. hello 51CTO 
 
那麼這兩個顯示的就是同樣咯。是否是很好玩?再來玩,SH的權限要大於bash喔,哈哈,運行程序直接sh 程序名,bash 程序名也是能夠的啦。
 
  
  
           
  
  
  1. [root@localhost test]# ll /bin/sh 
  2. lrwxrwxrwx 1 root root 4 Apr 25 22:42 /bin/sh -> bash 
  3. [root@localhost test]# ll /bin/bash 
  4. -rwxr-xr-x 1 root root 768664 Jul 22  2011 /bin/bash 
玩完了作點正事。介紹兩個命令who與cat 其實也就是跟着書上的進程走的。但原書的命令參數好像有問題。不過我有Linux查詢寶典啦。
 
who屬性:系統相關-系統安全
who語法:who [參數] [記錄文件]
  
  
           
  
  
  1. -a : 顯示全部信息 
  2. -b : 顯示系統最後一次重啓的時間 
  3. -d : 顯示已失效的保存 
  4. -H : 顯示標題欄    
  5. -i : 顯示系統閒置時間 
  6. -l : 只顯示行數 
  7. -m : 只顯示本身登錄的相關信息 
  8. -q : 只顯示登陸系統的用戶名稱與總人數 
  9. -r : 顯示當前的執行等級 
  10. -t : 顯示最後一次修改時鐘的時間  
  11. -h : 不要顯示標題列 
  12. -u : 顯示用戶已閒置的時間 
 
  
  
           
  
  
  1. wc做用: 字數計算 
  2. wc語法:wc [選項] [文件] 
  3. -c : 統計字節數。   
  4. -l : 統計行數。   
  5. -w : 統計字數。   
煮酒品茶,who百度無果谷哥無果,本身敲的,累死,至於原做者爲何要拿who和wc放一塊兒講,應該是覺着都是w吧,並且wc不能單獨使用,因此就組合咯。做用在於啥呢,
 
好比說:咱們要顯示當前用戶的行數,那麼就構造 
#who -a | wc -l  
還有不少,基本上按表就能夠一一寫出。who這個命令着重於安全一點。而wc則是側重於查詢文件的一點信息。如字節數啊,行數啊,字數啊,等等,如何利用就看你的咯
 
總結:咱們總了,SHell的格式,Shell識別的命令,變量以及變量的規則。還講了兩個命令who與wc,如今回想一下還記得多少?
相關文章
相關標籤/搜索