bash特性總結

1、命令歷史git

history 命令主要用於顯示歷史指令記錄內容, 下達歷史紀錄中的指令 。bash

命令歷史保存的條數:ide

   環境變量:HISTSIZEspa

   1

用戶退出時命令歷史的持久保存位置:命令行

   環境變量:HISTFILE,一般默認爲用戶家目錄下的.bash_history3d

   2

      此文件中可保存的最大數目:指針

      環境變量:HISTFILESIZEblog

      圖片3

HISTCONTROL: 控制命令歷史中的輸入內容索引

    ignoredups: 忽略重複的命令(連續的相同命令纔會被視爲重複)(如果重複的 命令,命令歷史中只記錄一條命令)進程

    ignorespace: 忽略以空白字符打頭的命令

    ignoreboth: 以上兩者同行生效;

    圖片9

    圖片10

history命令用法:

  history N: 顯示最近的N條,包括當前命令自身;

  圖片4

  history -c: 清空命令歷史

  history -d offset: 刪除指定的偏移處的命令條目

  history -a [/path/to/some_history_file]: 將當前會話中的命令歷史寫入指定文件(命令歷史通常在用戶退出時纔會保存,也可用-a手動保存)

bash調用命令歷史列表中的命令:

  !#: 執行命令歷史中的第#條命令(#表示數字)

  !!: 執行上一條命令

  !string: 執行命令歷史中最近一次以string開頭的命令;

  !$: 調用上一條命令的最後一個參數

  ESC, . :功能同上(按ESC鍵後按’.’鍵)(調用上一條命令的最後一個參數)

圖片5

圖片6    

2、命令補全

根據內建命令或外部命令的查找方式查找以用戶指定的字符串開頭的命令

    若是用戶指定的開頭字符串能唯一標識某命令,則按tab鍵可補全此命令

    不然,則按兩次tab鍵可顯示全部以指定字串開頭的命令

    圖片7

    圖片8 

3、路徑補全

以用戶指定的起始路徑進行文件名補全查找(敲tab鍵,用法同命令補全。)

每一個絕對路徑均可以切割爲兩部分

   基名

      basename  /path/to/somewhere

      結果爲somewhere

   目錄名

      dirname /path/to/somewhere

      結果爲/path/to

圖片11

4、命令行展開

~: 用戶家目錄

~USERNAME: 指定用戶的家目錄

{}: 花括號展開

例如:

    /tmp/{x,y}

        /tmp/x, /tmp/y

    /tmp/{x,y}/z

        /tmp/x/z, /tmp/y/z

練習1:建立/tmp/x/z, /tmp/y/z, /tmp/x/m, /tmp/y/m

    /tmp/{x,y}/{z,m}

練習2:建立/tmp/ a_b, c_b, a_d, c_d

mkdir -pv /tmp/{a,c}_{b,d}

5、命令別名和命令引用

alias :查看和設置命令別名

    alias : 查看全部的命令別名

    alias ALIAS=COMMAND :設置命令別名

生效範圍:命令行定義的別名,其生效範圍爲當前會話;(要命令別名長期有效,可在配置文件中設置。在當前回話中設置命令別名,起效快,但不能長期有效)

圖片12

 圖片13

別名與命令同名時,要使用命令,有兩種方法:

(1)使用命令的絕對路徑

(2)\COMMAND

圖片14

unalias [ALIAS] :撤銷命令別名

    -a: 撤消全部別名

圖片15

bash支持的引用:

    '' :單引號

    "" :雙引號(要引用變量時不能使用單引號,要使用雙引號)

    ``:引用一個命令的執行結果

    $() :引用一個命令的執行結果(推薦用這種方式)

    圖片16

6、文件名通配(globbing)

*: 任意長度的任意字符(任意長度:長度可爲0)

    p*d, pad, pbd, pd

    *ab*c :以‘c’結尾,中間包含’ab’

?: 匹配任意單字符

[]: 匹配指定範圍內的任意單字符

    [abc]  :字母集{a,b,c}

    [a-z] :全部字母的集合(不區分大小寫)

    [0-9] :全部數字的集合(10個數字)

    [0-9a-z] :全部數字和字母的集合

    字符集合:

    [:space:] : 全部空白字符

    [:punct:] : 全部標點符號

    [:lower:] :全部小寫字母

    [:upper:] :全部大寫字母

    [:digit:] :全部數字

    [:alnum:] :全部字母和數字

    [:alpha:] :全部字母

[^]:匹配指定範圍之外的任意單字符

    [^0-9a-z]

7、輸入、輸出重定向和管道

程序輸入:標準輸入

程序數據輸出:標準輸出 和 標準錯誤輸出

因爲計算機處理數字的速度遠遠大於處理字符的速度,因此經常使用一個數字來描述文件,這個數字被稱爲文件描述符。

FD(file descriptor):文件描述符在形式上是一個非負整數。實際上,它是一個索引值, 指向內核爲每個進程所維護的該進程打開文件的記錄表。當程序打開一個現有文件或者建立一個新文件時,內核分配一個文件描述符並返回給用戶程序,該文件描述符表項中的指針指向新打開的文件。

文件:文件系統(內核)

    標準輸入:FD爲0 (計算機歷來都是從0開始計數)

        鍵盤(默認)

    標準輸出:FD爲1

        監視器(默認)

    錯誤輸出:FD爲2

        監視器(默認)

重定向意味着:改變其標準位置

輸出重定向:

    COMMAND > POSITION:覆蓋輸出

    COMMAND >> POSITION: 追加輸出

    圖片18

錯誤重定向:

    COMMAND 2> POSITION:覆蓋輸出

    COMMAND 2>> POSITION: 追加輸出

    圖片20

合併重定向:

    COMMAND &> POSITION :合併重定向(覆蓋)

    COMMAND &>> POSITION :合併重定向(追加)

    COMMAND > POSITION 2>&1 :(覆蓋)(&表示引用文件描述符)

    圖片21

分別重定向

    COMMAND > POSTIION 2> POSTION2

輸入重定向:

     COMMAND < POSITION

     <<:Here Document(此處文檔)

    圖片22

   (EOF做爲輸入結束符,也可使用END做爲輸入結束符,輸入結束符是自定義的。)(cat命令特有的用法)

管道:|

    管道是Linux中很重要的一種通訊方式,是把一個程序的輸出直接鏈接到另外一個程序的輸入

多道輸出:

    COMMAND | tee POSITION

    圖片23 

   (同時輸出到顯示器和a.txt文件中,多道輸出)

8、快捷鍵的使用

Ctrl+a: 跳轉至命令行首

Ctrl+e: 跳轉至命令行尾

Ctrl+u: 刪除命令行首至當前光標所在處以前的全部內容

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

Ctrl+l: 清屏

Ctrl+c: 停止或取消

Ctrl+z: 把當命令送至後臺

bash還有不少特性,如今就不繼續說下去,之後補充!

相關文章
相關標籤/搜索