隨筆

                    bash基礎特性整理以及shell編程的思路整理    


  在linux的學習中,目前就學習到第六課時半天的時候發現在bash基礎特性當中,使用不同的命令以及shell編程中,發現有很多的bash變量在不同的環境使用的方法都不一樣,下面就結合第一節課到第6節課的bash特性進行整理如下:

    1,什么是bash:

     bash是許多Linux平臺中內定的shell,bash腳本功能在處理自動循環或大的任務方面可以節省大量的時間

       以CentOS6為例:查看當前系統中有多少個bash:

        blob.png

   

     bash的分類:

        blob.png

    以上圖可以看出在Linux中的bash可以大致可以分成2種,下面就詳細介紹一下生效劃分的bash與功能劃分的bash的意義:

        生效劃分的bash:

        blob.png

    功能劃分的bash:

        blob.png


       bash中的變量的種類:

        根據變量的生效范圍等標準:

         本地變量:生效范圍為當前shell進程:對當前shell之外的其他shell進程,包括當前shell 的子shell不生效

         環境變量:當前shell進程及其子進程

         局部變量:生效范圍為當前shell進程中某代碼片段(通常指函數)

         位置變量:$1,$2,…來表示,用于讓腳本在腳本代碼中調用通過命令行傳遞給它的參數

       特殊變量:$?,$0,$*,$@,$#


    例1:history歷史命令查看:

    blob.png

    history是否對其他用戶進行生效呢?以wostop用戶登錄之后輸入history命令:發現2個不同的用戶登錄使用history命令顯示的結果是不同的

        blob.png

      按照bash所給的/etc/profile, /etc/porfile.d/*.sh ,~/.bashrc ,~/etc/bashrc,/etc/bash_profile查看發現 :在/etc/profile 下有關于histroy的配置變量:

        blob.png


       由于不同用戶登錄使用的命令是不一樣的,就可以判定存儲的histroy的bash存放在個人的bash中:

         blob.png

        上述解釋了bash中有個人個全局的區別:

    本地變量:

    變量賦值:name='value'

        可以使用引用:

            value:(1)可以是直接字串:name="username"

                (2)變量引用:

                name="$sername"

                (3)命令引用:name=`COMMAND`,name=$(COMMAND)

    

            變量引用:${name},$name

"":弱引用,其中的變量引用會被替換為變量值;

    ‘’:強引用,其中的變量引用不會被替換為變量值,而保持原字符串;


            

                bash中的算術運算:

+ – * / %(取余數)**

實現算術運算:

(1)let var=算數表達式

(2)var=$[算術表達式]

(3)var=$(())

(4)var=$(expr args1 arg2 arg3…)


 


      各個通配符已經在shell編程,正則表達式的使用法以及區別:

        glob:bash中用于事先文件名"通配"

        blob.png

    bash的快捷鍵:

Ctrl+l:清屏,相當于clear命令;

Ctrl+a:跳轉光標命令首部;

Ctrl+e:跳轉至命令尾部;

Ctrl+c:取消命令執行;

Ctrl+u:刪除命令行首至光標所在處的所有內容;

Ctrl+k:刪除光標所在處至命令行尾部的所有內容;

    

    grep正則表達式:文本過濾工具(默認處于貪婪模式)

        –color=auto:對匹配到的文本著色顯示:

   -v:反向顯示:顯示不能夠被pattern匹配到的行;

   -i:匹配時忽略字符的大小寫;

   -o:僅顯示匹配到字符串;

   -q:檢查匹配后不向屏幕輸出:靜默模式

   -A:after,后#行:-B:before,前#行;

   -C:context,前后各#行:

   -E:使用擴展的正則表達式

   -F:使用fegrp表達式

    GREP中的字符匹配,這里和glob的字符匹配有所不同:
        blob.png

       OK上述將grep與glob的相同且不同意義的字符做了對比:grep匹配次數的用法:

    .*:任意長度的任意字符:

    \?:匹配其前面的字符0次或1次,即前面的字符可有可無:

    \+:匹配其前面的字符至少1次:

    \{m\}:匹配前面的字符m次:

    \{m,n\}:匹配前面的字符至少m次,至多n次:

    \{0,n\}:匹配前面的字符至多n次:

    \{m,\}:匹配前面的字符至少m次:

  位置錨定:

    ^:行首錨定:例如^root

    $:行尾錨定:例如:root$

    ^$:空白行:

    ^[[ :space: ]]*$:空格字符

    \<或\b:詞首錨定:用于單詞模式的左側:\<root

    \<或\b:詞尾錨定:用于單詞模式的左側

    \<PATTERN\>:匹配整個單詞

    分組:\(\):將一個或多個字符捆綁在一期,當作一個整理進行處理:

    

原創文章,作者:wostop,如若轉載,請注明出處:http://www.www58058.com/21302

(0)
wostopwostop
上一篇 2016-07-07 10:48
下一篇 2016-07-07 10:48

相關推薦

  • Mozart的劍(文本處理工具)——叁劍(grep、正則表達式)

    之前的句子 煙鎖池塘柳 炮鎮海城樓 因荷而得藕 有杏不需梅 認識于小林寒風的一篇小說《鳳山遺夢》 grep grep是一種強大的文本搜索工具,它能使用正則表達式搜索文本,并把匹配的行打印出來。 作用:文本搜索工具,根據用戶指定的“模式”對目標文本逐行進行匹配檢查;打印匹配到的行。模式:由正則表達式字符及文本字符所編寫的過濾條件 用法: grep [OPTIO…

    2017-08-03
  • bash腳本編程實例

    bash腳本編程實例 1.寫一個腳本 能接受四個參數:start、stop、restart、status start:輸出“starting腳本名finished.” restart:輸出“restarting腳本名finished.” stop:輸出“stoping腳本名finished.” status:輸出“status腳本名finished.” 其他…

    Linux干貨 2017-09-04
  • 文件目錄介紹

    對于操作系統的目錄感覺總是記不住,今天結合上課筆記和自己的理解總結一下:/——-執行操作時總是要跳轉到不同的目錄,根是一個樹狀結構,下面介紹都是根下的目錄以及相關介紹├── bin 存放用戶使用的基本命令(可執行程序,二進制文件)、分區的時候不會單獨給它分區├── boot  跟內核有關的文件├── cgroup &nbsp…

    Linux干貨 2017-04-10
  • 用戶與權限管理

    用戶與權限管理      昨天學完了用戶與權限管理,講解了用戶的運行機制和權限的作用。 用戶的產生來源于3A機制:    認證(Authentication):就是驗證用戶身份的。    授權(Authorization) :驗證完身份后,…

    2017-07-27
  • LINUX 下正確關機方法

    Linux下正確關機方法 Table of Contents 1關機前 1.1觀察系統使用 1.2通知在線使用者關機 2關機 2.1 sy 2.2 shutdo 2.3 rebo 2.4 ha 2.5 powero 3執行 3.1等級 3.2等級 1關機前準備 1.1觀察系統使用狀態 誰在線:who 聯網狀態:netstat -a 后臺執行的程序:ps -a…

    Linux干貨 2017-08-21
  • 選擇排序 以及 set、dict、習題練習

    習題練習 僅作參考

    2017-10-10

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-07-07 11:18

    寫的很好,排版還可以在漂亮一點,可以多畫點圖加深印象,加油

欧美性久久久久