隨筆

                    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
下一篇 2016-07-07

相關推薦

  • linux文件系統及文件操作

    1、Linux文件系統:    文件和目錄被組織成一個單根倒置樹結構,從根目錄”/”開始。    文件系統分層結構LSB (Linux Standard Base)如下: 2、主要目錄: /boot: 系統啟動相關的文件,如內核、initrd,以及grub(bootloader) /etc:配置文件 /home:用戶的…

    2017-07-23
  • Linux文本處理及用戶組管理命令練習

    一.文本處理基礎命令 (1).? 列出當前系統上所有已經登錄的用戶的用戶名。 ? ? ? ? ? 完成命令:who ?| ?cut ?-d’ ‘? -f1 ?| ?uniq ?-u 示例: (2).取出最后登錄到當前系統對的用戶的相關信息。 ? ? ? ? 完成命令:w ?|? tail -1 示例: (3).取出當前系統上被用戶當作…

    2018-03-11
  • M20 – 1- 第二周(1):課堂練習與作業

    課堂練習:  1、字符終端登錄時,顯示當前登錄終端號,主機名和當前時間 [root@centos6 ~]# tty             #顯示當前終端號 /dev/pts/0 [root@cent…

    Linux干貨 2016-08-02
  • Tomcat基于memcached會話共享

    安裝兩臺memcache,基于tomcat做會話同步;(只對動態內容緩存,用于追蹤用戶會話) 前提:兩個tomcat節點:172.16.100.7(tomcatA.magedu.com),172.16.100.8(tomcatB.magedu.com)兩個memcached節點:172.16.100.9, 172.16.100.10一個負載均衡節點:172.…

    2017-05-25
  • DNS 子域授權和高級應用

    DNS 基礎主從部分 http://www.www58058.com/12395 實驗環境:     系統環境:Centos 6.7     關閉SELINUX:setenforce 0 #立即生效   (實際是寬容模式)     配置防火墻:iptables…

    Linux干貨 2016-11-15
  • Linux中的軟鏈接/硬鏈接

    Linux鏈接概念Linux鏈接分兩種,一種被稱為硬鏈接(Hard Link),另一種被稱為符號鏈接(Symbolic Link)。默認情況下,ln命令產生硬鏈接。 【硬連接】硬連接指通過索引節點來進行連接。在Linux的文件系統中,保存在磁盤分區中的文件不管是什么類型都給它分配一個編號,稱為索引節點號(Inode Index)。在Linux中,多個文件名指…

    Linux干貨 2016-10-20

評論列表(1條)

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

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

欧美性久久久久