天天看點

shell體驗二

shell指令一般分為内置(自帶)和外來(除了自帶的都是包括後來yum 安裝的)

如何産看内置指令呢:$ man  bash 1  (這裡為什麼加個 1是因為man手冊的格式)

    man 手冊的組成

    MANUAL SECTIONS

       The standard sections of the manual include:

       1      User Commands   ##使用者指令

       2      System Calls    ## 系統調用

       3      C Library Functions  #C函數庫

       4      Devices and Special Files   #裝置和特殊檔案

       5      File Formats and Conventions  # 檔案的格式和慣例

       6      Games et. Al.   #遊戲

       7      Miscellanea   雜項

       8      System Administration tools and Deamons   #系統管理工具

       Distributions customize the manual section to their specifics, which often include additional sections.

一般區分内置的技巧:用 help   一般情況下  help  command  如果是内置指令一般會給出簡化的文法格式,足以應用。

    $ help cd

    常見指令解析:

    echo (在螢幕上輸出資訊)  選項 -n (檔案不換行顯示) -e (可以識别\開頭的特殊字元)  

    $ echo -n hello

    hello[swallow@swallow ~]$   (由于不換行,是以和指令環境變量一起顯示)

    對比一下加不加 -e 的差別;

    $ echo "a\nb\nc"

    a\nb\nc

    $ echo -e "a\nb\nc"

    a

    b

    c

    一般常見的特殊字元:\n  換行 \r 回車 \t 制表符(相當于按下tab按鍵)

shell變量的應用:(這裡的實驗是先定義一個變量var=abcABC123ABCabc)

    1.傳回變量的内容 ($var   ${var})

        $ echo $var

        abcABC123ABCabc

        $ echo ${var}

    2.傳回長度  (${#var}) 就是在輸入var前加入#

        1. $ echo ${#var}

            15

        2. 檢視長度也可以用用 wc -l (這裡是大寫的L,不要用c)

            $ echo $var |wc -L

            $ wc -c (這裡的會多出一位。\n)

            $ echo $var |wc -c

            16

            下面我們通過od 指令來看下 $ echo $var 都做了些什麼?

            od指令用于輸出檔案的八進制、十六進制或其它格式編碼的位元組,通常用于顯示或檢視檔案中不能直接顯示在終端的字元。

            $ echo `echo $var|od -c`

            0000000 a b c A B C 1 2 3 A B C a b c \n 0000020

            這裡多了一個\n 。是以wc 在統計字元的時候多了個一字元。

            溫習下:wc 的指令提示

            -c, --bytes

                  print the byte counts

            -L, --max-line-length

                  print the length of the longest line、

        3. 用expr 自帶的length方法

            $ echo `expr length $var`

    3.使用變量${}删除

        比對規則;

            # 表示開頭比對最短

            ## 表示開頭比對最長(比較貪婪)

            % 表示從結尾比對最短

            %% 表示從結尾比對最長(比較貪婪)

        舉例;

        $ echo ${var#a*c}

        ABC123ABCabc

        $ echo ${var##a*c}

        $ echo ${var%a*c}

        abcABC123ABC

        $ echo ${var%%a*c}

        [swallow@swallow ~]$ 

        這裡3和5是有差別的要注意。##從前面比對的而%%是從和面比對的。

    4.使用變量${}替換

        $ var=ABABAB

        ABABAB

        $ echo ${var/A/a}

        aBABAB

        $ echo ${var//A/a}

        aBaBaB

        這裡需要注意的是差別: / 是替換第一個字元。  //替換所有的字元

此外:在讀系統腳本的時候有個困惑的地方:

    例如:/etc/init.d/httpd 裡面有幾句類似的

        httpd=${HTTPD-/usr/sbin/httpd}

    檢視手冊:

    ${parameter:-word}

              Use Default Values.  If parameter is unset or null, the expansion of word is substituted.  Otherwise, the

              value of parameter is substituted.

    此用法的意思是:如果變量沒有指派或為空,會傳回word字元串并代替變量的值。

    防止變量缺失導緻異常,如果變量未定義則傳回被用值(word)

本文轉自 swallow_zys  51CTO部落格,原文連結:http://blog.51cto.com/12042068/1893840,如需轉載請自行聯系原作者