天天看點

Linux之Bash基礎特性(1)

架構:

    bash的引用:指令引用、變量引用

    bash指令曆史

    bash中的通配符

    bash中的管道

    I/O重定向

    指令補全

    路徑補全

    bash的快捷鍵

    指令的别名

    指令行的展開

1)指令的執行結果與指令的執行狀态結果

     指令的執行結果:

使用者輸入指令+Enter後,指令如何執行

    1)使用者接口(bash程式)解析使用者輸入的指令

        先在hash中查找,然後在PATH中查找,路徑下是否有此指令?

    2)對指令詞法分析和文法分析:

         選項,參數是否正确?

    3)以上确認無誤後,将指令所處的路徑,送出給核心,核心将核心配置設定給指令CPU時間片、記憶體資源,将其運作為程序

        3.1)核心将此路徑下的程式從磁盤中加載至記憶體中,(程式=指令+資料,是以記憶體的程序位址空間指令和資料,對應的實體記憶體中的指令和資料可能是不連續的幾段記憶體頁)

        3.2)核心将指令到CPU上運作,指令自動調用CPU的針腳指令(普通指令)完成某些功能,如果需要特權指令,将向核心發起syscall,完成相應的功能,并将生成的結果儲存至記憶體中。

    指令的執行狀态結果:

        成功:0,代表有執行過程順利完成

        失敗:1-255,代表執行過程中有錯誤發生,詞法、文法分析出現問題?

    引用執行狀态結果:$?

*什麼是變量?

    某一事物運動過程中,數值可以變化的量。如炮彈飛行的速度就是變量。    

    變量:單個命名的記憶體位址空間

    變量名:記憶體空間的位址

    變量指派:指派符号後面的資料存儲于變量名指向的記憶體空間

    變量的類型:本地變量、環境變量、特殊變量、局部變量    

    申明變量:    

        本地變量:var=value

        環境變量: export var=value,declare -i var=value

        特殊變量: $0,$1,..$#,$*,$@, \1,\2,\3

        局部變量: local var=value

    引用變量:既是引用變量名對應的記憶體空間中存儲的資料

2)bash中的引用

    linux中的引用不用考慮指令執行的過程以及指令如何實作,直接調用指令引用接口能完成一系列複雜的轉換進而得到指令的執行結果和變量中存儲的值。

  變量引用的方法: $VAR,${VAR}

  引用的類型:

        強引用:引用變量時,變量不會替換為變量中存儲的值。

1

2

<code>[root@izpo45bh60h6bsz ~]</code><code># echo '${PATH}'</code>

<code>${PATH}</code>

        弱引用:引用變量時,會替換。 

<code>[root@izpo45bh60h6bsz ~]</code><code># echo "${PATH}"</code>

<code>/usr/local/nginx/sbin</code><code>:</code><code>/usr/local/sbin</code><code>:</code><code>/usr/local/bin</code><code>:</code><code>/usr/sbin</code><code>:</code><code>/usr/bin</code><code>:</code><code>/root/bin</code>

    指令執行結果的引用方法:

        `COMMAND`,$(COMMAND)

3

4

5

6

<code>[root@izpo45bh60h6bsz ~]</code><code># pwd</code>

<code>/root</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># echo `pwd`</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># echo $(pwd)</code>

3)bash的指令曆史

    history指令

<code>[root@izpo45bh60h6bsz ~]</code><code># type history</code>

<code>history</code> <code>is a shell </code><code>builtin</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># help history</code>

<code>history</code><code>: </code><code>history</code> <code>[-c] [-d offset] [n] or </code><code>history</code> <code>-anrw [filename] or </code><code>history</code> <code>-</code><code>ps</code> <code>arg [arg...]</code>

<code>    </code><code>Display or manipulate the </code><code>history</code> <code>list.</code>

使用示例

1)顯示指令曆史

<code>[root@izpo45bh60h6bsz ~]</code><code># history</code>

<code>    </code><code>8  </code><code>history</code>

<code>    </code><code>9  </code><code>cat</code> <code>/etc/fstab</code>

<code>   </code><code>10  </code><code>cat</code> <code>/etc/issue</code>

<code>   </code><code>11  </code><code>history</code>

2)删除指定曆史

7

<code>[root@izpo45bh60h6bsz ~]</code><code># history -d 8</code>

<code>    </code><code>8  </code><code>cat</code> <code>/etc/fstab</code>

<code>    </code><code>9  </code><code>cat</code> <code>/etc/issue</code>

<code>   </code><code>10  </code><code>history</code>

<code>   </code><code>11  </code><code>history</code> <code>-d 8</code>

<code>   </code><code>12  </code><code>history</code>

3)清空所有曆史

<code>[root@izpo45bh60h6bsz ~]</code><code># history -c</code>

4)将新記錄的曆史寫入磁盤

8

9

10

11

12

13

14

15

16

17

18

19

20

<code>[root@izpo45bh60h6bsz ~]</code><code># tail -1 .bash_history </code>

<code>history</code> <code>| </code><code>head</code> <code>10</code>

<code>    </code><code>9  </code><code>tail</code> <code>-1 .bash_history </code>

<code>[root@izpo45bh60h6bsz ~]</code><code># history -a</code>

<code>history</code> <code>-a</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># tail  .bash_history </code>

<code>history</code>

<code>cat</code> <code>.bash_history </code>

<code>cat</code> <code>.bash_history | </code><code>wc</code> <code>-l</code>

<code>tail</code> <code>-1 .bash_history </code>

    指令曆史的原理:

    登陸終端時,.bash_history中的曆史條目會被自動加載至記憶體中。

    退出終端時,記憶體中的新生成的曆史條目會被寫入至磁盤中。

    HISTCONTROL變量控制指令記錄的方式

    ignoredups  執行重複的指令,隻會顯示一次

<code>[root@izpo45bh60h6bsz ~]</code><code># echo $HISTCONTROL</code>

<code>ignoredups               </code><code>#重複的曆史隻顯示一次</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># 1</code>

<code>-</code><code>bash</code><code>: 1: </code><code>command</code> <code>not found</code>

<code>   </code><code>14  </code><code>echo</code> <code>$HISTCONTROL</code>

<code>   </code><code>15  1</code>

<code>   </code><code>16  </code><code>history</code>

 ignorespaces:空白起始的指令不會記錄至緩存指令中

21

22

<code>[root@izpo45bh60h6bsz ~]</code><code>#  hello</code>

<code>-</code><code>bash</code><code>: </code><code>/root/bin/hello</code><code>: Permission denied</code>

<code>   </code><code>17   hello       </code><code>#空白行開始的行</code>

<code>   </code><code>18  </code><code>history</code>

<code>   </code> 

<code>ignorespace                </code><code>#空白起始的指令不會記錄</code>

<code> </code><code>[root@izpo45bh60h6bsz ~]</code><code>#   hello</code>

<code>[root@izpo45bh60h6bsz ~]</code><code>#     hello</code>

<code>    </code><code>19 </code><code>echo</code> <code>$HISTCONTROL</code>

<code>    </code><code>20 </code><code>history</code>

ignoreboth:同時滿足以上兩者

<code>[root@izpo45bh60h6bsz ~]</code><code># export HISTCONTROL=ignoreboth</code>

<code>ignoreboth</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># cat /etc/fstab</code>

<code>    </code><code>8  </code><code>export</code> <code>HISTCONTROL=ignoreboth</code>

<code>    </code><code>9  </code><code>echo</code> <code>$HISTCONTROL</code>

<code>   </code><code>10  </code><code>cat</code> <code>/etc/fstab</code>

<code> </code><code>[root@izpo45bh60h6bsz ~]</code><code>#   cat /etc/fstab</code>

<code> </code><code>[root@izpo45bh60h6bsz ~]</code><code>#    cat /etc/fstab</code>

<code> </code><code>[root@izpo45bh60h6bsz ~]</code><code># history</code>

<code>   </code><code>11  histroy</code>

HISTSIZE 曆史的條目個數

<code>[root@izpo45bh60h6bsz ~]</code><code># echo $HISTSIZE</code>

<code>1000</code>

HISTFILE 目前使用者曆史記錄檔案

<code>[root@izpo45bh60h6bsz ~]</code><code># echo $HISTFILE</code>

<code>/root/</code><code>.bash_history</code>

HISTFILESIZE 曆史記錄檔案中的條目個數

<code>[root@izpo45bh60h6bsz ~]</code><code># echo $HISTFILESIZE</code>

HISTTIMEFORMAT 給曆史顯示時間

<code>[root@localhost ~]</code><code># history</code>

<code>  </code><code>437  mkswap -U `uuidgen` </code><code>/dev/sdb6</code>

<code>  </code><code>438  mkswap -U `uuidgen` -L </code><code>'MYDATA'</code> <code>/dev/sdb6</code>

<code>  </code><code>439  blkid </code><code>/dev/sdb6</code>

<code>  </code><code>440  hsitory</code>

<code>  </code><code>441  </code><code>history</code>

<code>  </code> 

<code>[root@localhost ~]</code><code># declare -x HISTTIMEFORMAT='%F %T ' ##</code>

<code>  </code><code>437  2017-08-08 00:27:58 mkswap -U `uuidgen` </code><code>/dev/sdb6</code>

<code>  </code><code>438  2017-08-08 00:28:18 mkswap -U `uuidgen` -L </code><code>'MYDATA'</code> <code>/dev/sdb6</code>

<code>  </code><code>439  2017-08-08 00:28:34 blkid </code><code>/dev/sdb6</code>

<code>  </code><code>440  2017-08-08 01:31:46 hsitory</code>

<code>  </code><code>441  2017-08-08 01:31:48 </code><code>history</code>

<code>  </code><code>442  2017-08-08 01:33:04 </code><code>declare</code> <code>-x HISTTIMEFORMAT=</code><code>'%F %T '</code>

<code>  </code><code>443  2017-08-08 01:33:05 </code><code>history</code>

調用指令曆史的方法

    !# 重複執行第#條指令

    !! 重複執行上一條指令

    !string 執行最近一個以string開頭的指令

    !$,ESC+. , ALT + . 僅調用上一次傳遞給指令的參數。 

4)bash中的通配符

    擷取使用通配符的幫助手冊

<code>[root@izpo45bh60h6bsz ~]</code><code># man 7 glob</code>

     通配符

    * 任意長度任意字元

<code>[root@izpo45bh60h6bsz ~]</code><code># ls /etc/*.conf</code>

<code>/etc/asound</code><code>.conf   </code><code>/etc/host</code><code>.conf    </code><code>/etc/lftp</code><code>.conf      ....</code>

       ? 任意單個字元,??任意兩個字元,????任意多個字元

<code>[root@izpo45bh60h6bsz ~]</code><code># ls /etc/???.conf</code>

<code>/etc/ntp</code><code>.conf  </code><code>/etc/yum</code><code>.conf</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># ls /etc/????.conf</code>

<code>/etc/host</code><code>.conf  </code><code>/etc/krb5</code><code>.conf  </code><code>/etc/lftp</code><code>.conf ...</code>

    [] 比對指定範圍内的任意單個字元

  範圍表示的方法:

    [pig] 表示p、i、g三個單詞,中任意一個單詞

<code>[root@izpo45bh60h6bsz ~]</code><code># ls /etc/[mnpr]*.conf</code>

<code>/etc/man_db</code><code>.conf  </code><code>/etc/named</code><code>.conf     </code><code>/etc/nscd</code><code>.conf      </code><code>/etc/ntp</code><code>.conf ...</code>

    [a-z] 表示從a-z的任意一個字母,其中也包括所有大寫字母

<code>[root@izpo45bh60h6bsz ~]</code><code># ls p[a-z]*.conf</code>

<code>pabc.conf  pABC.conf  padc.conf  pADC.conf</code>

    [A-Z] 所有大寫字母

<code>[root@izpo45bh60h6bsz ~]</code><code># ls p[A-Z]*.conf</code>

<code>pABC.conf  pADC.conf</code>

    [0-9] 任意單個數字

<code>[root@izpo45bh60h6bsz ~]</code><code># ls p[0-9]*.conf</code>

<code>p1ab.conf  p1AD.conf</code>

    [^]比對指定範圍外的任意單個字元

<code>[root@izpo45bh60h6bsz ~]</code><code># ls /etc/[^a-x]*.conf</code>

<code>/etc/yum</code><code>.conf</code>

            非多個範圍時

<code>[root@izpo45bh60h6bsz ~]</code><code># ls p[^A-Z0-9]*.conf</code>

<code>pabc.conf  padc.conf</code>

字元集:

    [:digit:] 所有數字

    [:lower:] 所有小寶字母

    [:upper:] 所有大寫字母

    [:alpha:] 所有字母

    [:alnum:] 字母和數字

    [:space:] 所有空白

    [:punct:] 所有特殊符号

    [[:space:]] 任意單個空白

    [[:alpha:]] 任意單個字母,相當于 [a-z]

    [[:digit:]] 任意單個數字,相當于 [0-9]

5)指令補全

    指令補全機制

        對于bash内置指令:bash自帶

        外部指令: 先從hash表中查找,基于key鍵查找value,在緩存中查找的特性是查找所有緩存條目的時間是一緻的,如果沒有找到,再從目前使用者的環境變量PATH中的路徑從左而右的查找,第一次找到的即為本次要執行的指令,并且存入hash表中,以便下次查找。如果hash中緩存的條目失效了,即使PATH中變量能夠找到對應的指令,也不會自動查找PATH中的變量,而是直接傳回失效的結果,這時需要手動清空hash表。

<code>[root@izpo45bh60h6bsz ~]</code><code># echo $PATH</code>

<code>/sbin</code><code>:</code><code>/usr/local/nginx/sbin</code><code>:</code><code>/usr/local/sbin</code><code>:</code><code>/usr/local/bin</code><code>:</code><code>/usr/sbin</code><code>:</code><code>/usr/bin</code><code>:</code><code>/root/bin</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># ls /</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># ls /etc</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># hash</code>

<code>hits    </code><code>command</code>

<code>   </code><code>2 </code><code>/usr/bin/ls</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># mv /usr/bin/ls /sbin/ls</code>

<code>-</code><code>bash</code><code>: </code><code>/usr/bin/ls</code><code>: No such </code><code>file</code> <code>or directory</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># hash -r</code>

<code>   </code><code>1 </code><code>/sbin/ls</code>

    指令補全的方法:

<code>[root@izpo45bh60h6bsz ~]</code><code># cle + TAB鍵</code>

        直接補全:使用者給定的字元串隻有一條惟一對應指令

<code>[root@izpo45bh60h6bsz ~]</code><code># clear</code>

    給出清單:使用者給定的字元串有多個指令時,2次TAB給出指令清單

<code>[root@izpo45bh60h6bsz ~]</code><code># ls + 2次TAB鍵</code>

<code>ls</code>           <code>lsattr       lsblk        lsb_release  lscpu        lsdiff       lsinitrd     lslocks      lslogins     lsmod        lspci        lsscsi</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># ls</code>

6)路徑補全

    路徑補全機制:把使用者給出的字元串當做路徑開頭,并在給出的目錄的上級目錄下搜尋指定的字元串開頭的檔案名。  

<code>[root@izpo45bh60h6bsz ~]</code><code># ls /etc/sysconfig/netw + TAB鍵</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># ls /etc/sysconfig/network</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># ls /etc/sysconfig/net + 2次TAB鍵</code>

<code>netconsole       network          network-scripts/</code>

7)指令行展開

    在指令執行的流程中,還有一個步驟:就是在指令 + Enter後,使用者接口(shell程式)首先将,bash獨有的特殊字元轉換為另一種字元。例如:cd ~,回到目前使用者的家目錄,執行時,shell首先将cd ~指令的"~" 轉換為目前使用者的家目錄"/home/username目錄或者是/root目錄"

    一些常用特殊字元的轉換:

        1)~ 目前使用者的家目錄

<code>[root@izpo45bh60h6bsz ~]</code><code># cd ~</code>

        2)~Username username所對應使用者的家目錄

<code>[root@izpo45bh60h6bsz ~]</code><code># cd ~tom</code>

<code>[root@izpo45bh60h6bsz tom]</code><code># pwd</code>

<code>/home/tom</code>

<code>[root@izpo45bh60h6bsz tom]</code><code># ls /etc/{fstab,issue}</code>

<code>/etc/fstab</code>  <code>/etc/issue</code>

<code>[root@izpo45bh60h6bsz tom]</code><code># mkdir {a,b}_{c,d}</code>

<code>[root@izpo45bh60h6bsz tom]</code><code># ls</code>

<code>a_c  a_d  b_c  b_d</code>

8)bash中的I/O重定向

    使用者鍵入指令的執行結果,都要輸出至螢幕之上,可linux的哲學思想是"一切皆檔案",是以螢幕也被抽象為一個檔案。linux中程序每打開一個檔案都會有一個檔案描述符(fd file description),跟蹤打開的檔案 

   程式的組成資料+指令或算法+資料結構,程式都有讀入資料的需求,執行結果輸出的需求。

  1)資料存放位置?

    變量、數組、檔案、清單

  2)輸入時,預設從檔案(鍵盤抽象的檔案),從檔案中讀取資料,就要打開檔案,其fd:0

    輸出時,預設從檔案(螢幕抽象的檔案),标準輸出為1,标準錯誤輸出為2

  标準輸出:執行狀态結果為0

  标準錯誤輸出:1-255,bash分析出文法錯誤,bash的結果

 重定向标準輸出: command &gt; position , command &gt;&gt; pos

    &gt; 覆寫重定向,目标檔案中的内容會被清除

<code>[root@izpo45bh60h6bsz tom]</code><code># cat a.txt</code>

<code>a pig.</code>

<code>[root@izpo45bh60h6bsz tom]</code><code># echo '1' &gt; a.txt </code>

<code>[root@izpo45bh60h6bsz tom]</code><code># cat a.txt </code>

<code>1</code>

    &gt;&gt; 追加重定向,新内容會追加至檔案尾部

<code>[root@izpo45bh60h6bsz tom]</code><code># echo '1' &gt;&gt; a.txt </code>

    覆寫重定向: 

    set -C 禁止将内容覆寫輸出至已有檔案,僅對目前shell有效

不存在可以覆寫:

<code>a_c  a_d  a.txt  b_c  b_d</code>

<code>[root@izpo45bh60h6bsz tom]</code><code># echo '1' &gt; b.txt</code>

<code>[root@izpo45bh60h6bsz tom]</code><code># cat b.txt</code>

存在覆寫會報錯:

<code>-</code><code>bash</code><code>: a.txt: cannot overwrite existing </code><code>file</code>

    set +C 允許将内容覆寫輸出至已有檔案,僅對目前shell有效

    強制覆寫輸出, COMAND &gt;| POS

<code>[root@izpo45bh60h6bsz tom]</code><code># set +C</code>

<code>[root@izpo45bh60h6bsz tom]</code><code># set -C </code>

<code>[root@izpo45bh60h6bsz tom]</code><code># echo '2' &gt; a.txt </code>

<code>[root@izpo45bh60h6bsz tom]</code><code># echo '2' &gt;| a.txt  強制覆寫輸出</code>

<code>2</code>

 重定向标錯誤輸出: command 2&gt; position , command 2&gt;&gt; pos

 重定向标錯誤輸出和重定向标輸出的差異:

<code>[root@izpo45bh60h6bsz tom]</code><code># ls /var</code>

<code>[root@izpo45bh60h6bsz tom]</code><code># ls /var &gt; /tmp/var.out</code>

<code>[root@izpo45bh60h6bsz tom]</code><code># cat /tmp/var.out</code>

<code>[root@izpo45bh60h6bsz tom]</code><code># ls /varr &gt; /tmp/var.out #錯誤輸出流,預設在螢幕上,沒有重定向</code>

<code>ls</code><code>: cannot access </code><code>/varr</code><code>: No such </code><code>file</code> <code>or directory</code>

 &gt; 覆寫重定向,目标檔案中的内容會被清除

<code>[root@izpo45bh60h6bsz tom]</code><code># ls /varr 2&gt; /tmp/var.out</code>

<code>[root@izpo45bh60h6bsz tom]</code><code># cat /tmp/var.out </code>

 &gt;&gt; 追加重定向,新内容會追加至檔案尾部

<code>[root@izpo45bh60h6bsz tom]</code><code># ls /rooter 2&gt;&gt; /tmp/var.out</code>

<code>ls</code><code>: cannot access </code><code>/rooter</code><code>: No such </code><code>file</code> <code>or directory</code>

标準輸出和标準錯誤輸出分别定向至不同的檔案:

<code>[root@izpo45bh60h6bsz tom]</code><code># ls /root &gt; /tmp/var.out 2&gt; /tmp/var.err</code>

<code>[root@izpo45bh60h6bsz tom]</code><code># ls /root &gt;&gt; /tmp/var.out 2&gt;&gt; /tmp/var.err</code>

标準輸出和标準錯誤輸出分别定向至相同的檔案:

<code>[root@izpo45bh60h6bsz tom]</code><code># ls /root &gt; /tmp/var.out 2&gt; /tmp/var.out</code>

<code>[root@izpo45bh60h6bsz tom]</code><code># ls /root &gt; /tmp/var.out 2&gt;&amp;1</code>

<code>[root@izpo45bh60h6bsz tom]</code><code># ls /root &amp;&gt; /tmp/var.out</code>

輸入重定向:&lt;,&lt;&lt;

    一般用于不支援跟檔案的指令,從标準輸入讀入資料

    cat,tr指令

<code>[root@izpo45bh60h6bsz tom]</code><code># cat &lt; /etc/fstab</code>

<code>[root@izpo45bh60h6bsz tom]</code><code># tr 'a-z' 'A-Z' &lt;  /etc/fstab</code>

    &lt;&lt; 生成文檔

        cat &lt;&lt; EOF

        EOF

        cat &gt; /path/to/somefie &lt;&lt; EOF

23

24

25

<code>[root@izpo45bh60h6bsz ~]</code><code># cat &lt;&lt; EOF</code>

<code>&gt; hello</code>

<code>&gt; world</code>

<code>&gt; a</code>

<code>&gt; pig</code>

<code>&gt; .</code>

<code>&gt; EOF</code>

<code>hello</code>

<code>world</code>

<code>a</code>

<code>pig</code>

<code>.</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># cat &gt; /tmp/test.out &lt;&lt; EOF</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># cat /tmp/test.out</code>

9)bash的管道

    Linux的哲學思想之一 "組合衆多小程式,完成複雜任務"的實作。

  實作機制:

    将前一個指令的标準輸出作為後一個指令标準輸入資料流

  表現形式:

    COMMAND1 | COMMAND2 | COMMAND3 | ... ...

    注意:最後一個指令是在目前shell程序的子shell程序中執行的

    例如:上一篇所用到的"echo aaaaaaaaaabbbbbbbbbbbcccccccdddd" | tr -s 'adcb'

    此時,tr指令不用等待從标準輸入讀取資料,直接從前一個指令的标準輸出作為後一個指令的标準輸入

<code>[root@izpo45bh60h6bsz ~]</code><code># ls /varr | tr 'a-z' 'A-Z' #标準錯誤輸出不會被轉換</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># ls /var | tr 'a-z' 'A-Z'  #标準輸出會被轉換</code>

<code>ADM</code>

<code>CACHE</code>

<code>CRASH</code>

<code>DB</code>

<code>EMPTY</code>

10)指令的别名

    别名的作用: 友善記憶、簡化書寫

   gnu/linux中如何定義别名 alias [-p] [name[=value] ... ],定義即刻生效,僅對目前shell程序有效

<code>[root@izpo45bh60h6bsz ~]</code><code># alias grep='grep -q'</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># alias cdnet='cd /etc/sysconfig/network-scripts'</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># cdnet</code>

<code>[root@izpo45bh60h6bsz network-scripts]</code><code># pwd</code>

<code>/etc/sysconfig/network-scripts</code>

   顯示目前系統上的所有别名 alias

<code>[root@izpo45bh60h6bsz ~]</code><code># alias</code>

<code>alias</code> <code>cdweb=</code><code>'cd /etc/httpd'</code>

<code>alias</code> <code>cp</code><code>=</code><code>'cp -i'</code>

<code>alias</code> <code>docker-ip=</code><code>'sudo docker inspect --format '</code><code>\</code><code>''</code><code>{{ .NetworkSettings.IPAddress }}</code><code>'\''</code><code>'</code>

    撤銷别名 

<code>[root@izpo45bh60h6bsz network-scripts]</code><code># unalias cdnet</code>

<code>[root@izpo45bh60h6bsz network-scripts]</code><code># cdnet</code>

<code>-</code><code>bash</code><code>: cdnet: </code><code>command</code> <code>not found</code>

<code>##撤銷所有的别名</code>

<code>alias</code> <code>cdnet=</code><code>'cd /etc/sysconfig/network-scripts/'</code>

<code>alias</code> <code>docker-pid=</code><code>'sudo docker inspect --format '</code><code>\</code><code>''</code><code>``.`State`.`Pid`</code><code>'\''</code><code>'</code>

<code>alias</code> <code>egrep</code><code>=</code><code>'egrep --color=auto'</code>

<code>alias</code> <code>fgrep</code><code>=</code><code>'fgrep --color=auto'</code>

<code>alias</code> <code>grep</code><code>=</code><code>'grep --color=auto'</code>

<code>alias</code> <code>l.=</code><code>'ls -d .* --color=auto'</code>

<code>alias</code> <code>ll=</code><code>'ls -l --color=auto'</code>

<code>alias</code> <code>ls</code><code>=</code><code>'ls --color=auto'</code>

<code>alias</code> <code>mv</code><code>=</code><code>'mv -i'</code>

<code>alias</code> <code>rm</code><code>=</code><code>'rm -i'</code>

<code>alias</code> <code>which</code><code>=</code><code>'alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># unalias -a</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># alias ##沒有顯示任何别名了</code>

<code>[root@izpo45bh60h6bsz ~]</code><code>#</code>

  如果要想永久有效必須定義在配置檔案中

<code>[root@izpo45bh60h6bsz network-scripts]</code><code># vim ~/.bashrc</code>

<code>[root@izpo45bh60h6bsz network-scripts]</code><code># cdnet #定義後不會立即生效</code>

<code>[root@izpo45bh60h6bsz network-scripts]</code><code># . ~/.bashrc #重載配置檔案即可生效</code>

讓配置檔案生效的方式

1、重新開機終端

2、source /path/to/config_ifle

3、. /path/to/config_ifle

快捷鍵

^c  強制取消指令執行

^d  正常終止指令

^uk 

^ae 行首或行尾

^l 清屏

<code>&lt;br&gt;</code>

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

繼續閱讀