天天看點

vim、bash等

使用vim編輯多個檔案

  vim file1 file2 file3 ...

  :next檢視或編輯後一個文檔的内容

  :prev檢視或編輯前一個文檔的内容

  :first檢視或編輯第一個文檔的内容

  :last檢視或編輯最後一個文檔的内容

 vim -o|-O file1 file2 file3 

  -o:水準顯示多個檔案

  -O:垂直顯示多個檔案

 Ctrl+w arrow(箭頭) 光标移動

 Ctrl+w,s講一個檔案水準分屏顯示

 Ctrl+w,v将一個檔案垂直分屏顯示

 :qa 全部退出

 :wa 全部儲存

将其他檔案中的内容填充到目前檔案中

 :r (/PATH/TO/SOMEFILE)這是解釋

跟shell互動

 :!指令(command)

部分另存為

 :w(全部儲存)

 :m,nw(從第m行到第n行)

 :m,+n

 :.,$w

預設系統中所支援的shell

 cat /etc/shells

bash特性

指令别名:自定義指令

  alias:可以用來定義和設定指令的别名  

注意:使用alias指令定義的别名其生命周期僅限于目前shell的生命期;如果修改.bashrc配置檔案,其中儲存的别名并不會立即生效,隻有在重新加載該檔案内容之後才會生效且永久生效;為了能夠保證設定别名有效,通常兩種操作都做

撤銷别名:unalias

. .bashrc:将.bashrc的指令讀取

指令曆史:

  bash程序會儲存其會話中使用者曾經執行的指令,以友善使用者重複執行某個指令通過bash提供的曆史指令檔案來持久儲存此前執行過的指令,使用者由私有曆史檔案 登陸shell的時候,bash會自動讀取~/.bash_history檔案中所記錄的所有指令

history指令:

  -c:清空曆史緩沖區中的曆史指令;

  -d OFFSET:删除特定曆史指令條目;

重複執行前一個指令的方法:

  使用上方向箭頭,回車執行

  Ctrl+p

  !-1

  !!

重複執行曆史緩沖區的指令

 !#(#=數字):重複執行曆史指令中的編号為#的指令

 !(string)字元串:從曆史緩沖區中查找最近一次執行過的以string開頭的指令并執行

 !?string:從曆史緩沖區中查找最近一次包含string的指令并執行

 !- number:執行曆史緩沖區中倒數第number個指令

 Ctrl+r:在曆史緩沖區中實施搜尋,回車執行即可:

重複使用曆史指令中的一部分:

 !$ 、ESC .、ALT+:表示最後一次指令中最後一個參數;

 !^:第一個位置的參數

 !:number:最後一次指令中第number個位置的參數

 !number1:number2在曆史緩沖區中第number1個指令的第number2個參數

快捷鍵

  C-->Ctrl

  M-->Alt

  E-->Esc

  DEL-->Backspace

 C-l:clear 清屏

 C-a:将光标跳至指令行行首

 C-e:将光标跳至指令行行尾

 C-k:删除光标所在位置至行尾的指令行資訊

 C-u:删除光标所在位置至行首的指令行資訊

 C-c:結束前台程序。取消指令的運作

指令補全機制:

 指令本身字元串的補全

  參數的補全

使用TAB鍵可以完成指令補全:

  如果給出的字元串不能作為唯一辨別,則bash不予補全;再次敲擊TAB鍵,bash會給出參考清單;如果參考清單中的内容過多,bash會詢問是否顯示該清單;根據提供的參數路徑來進行補全,如果參數沒有任何提示資訊,則預設從工作目錄進行查找;

指令行展開:

  ~:bash會自動将其展開為目前登陸使用者的家目錄

  ~STRING:bash會自動将其展開為以STRING為使用者名為使用者的家目錄

  ~+:調用shell變量pwd的值

  ~-:調用shell變量oldpwd的值

{}:在花括号中可以填充一個以","分隔的路徑清單,bash會将其展開為多個獨立的路徑;

指令的執行結果

 任何以個Linux指令都有兩種執行結果:

 指令的正常輸出結果:跟使用者需求相關的傳回内容:

 ``:反向單引号,反引号

 $():标準的指令引用格式

wc:統計一個檔案中的行數、字數及位元組數

 -c:隻顯示位元組數

 -l:隻顯示行數

 -w:隻顯示字數

指令的執行狀态傳回值;跟指令執行成與否相關的傳回指令

引用功能:

 '':強引用

 凡是被單引号引用的内容,bash一律将其視為普通字元,即便本身有特殊功能和作用也是如此,但是單引号本身是個例外

 "":弱引用 被雙引号引用的内容有一些特殊字元仍然會保留器特殊含義 比如:$、\、""

轉義功能:

 \:bash中定義的轉義字元隻能使其後的一個字元失去特殊意義

Globbing檔案名通配,簡稱為glob;

元字元:

 *:比對任意長度的任意字元,某些特殊位置的“.”字元不能被比對

 ?:比對任意單個字元并且隻有一個字元被比對

 []:比對指定範圍内的任意單個字元,并且隻有一個字元被比對

     [a-z]:a,A,b,B,c,C,...y,Y,z

     [A-Z]:A,b,B,c,C,...y,Y,z,Z

字元集:

    [:lower:]所有的小寫字母

    [:upper:]所有的大寫字母

    [:alpha:]所有的大小寫字母

    [:digit:]所有的十進制數字

    [:alnum:]所有的大小寫字母以及十進制數字

    [:space:]表示空白字元

    [:punct:]所有的标點字元

輸入輸出重定向

    在使用計算機時實作某種功能的主體是:程式

    程式=指令+資料

    資料:檔案,io

   可以用來輸入的裝置:檔案

    鍵盤裝置,檔案系統中的正常檔案,網卡裝置,聲霸卡裝置等

   可以用來輸出的裝置:檔案

    顯示器,檔案系統中的正常檔案,網卡裝置,聲霸卡裝置等;

  每一種程式都會有三種形式的資料流  

    輸入資料流:為程式擷取資料的資料流   預設的輸入資料流的來源就是鍵盤

    輸出資料流:将程式處理的資料結果展示給使用者的資料流  預設的輸出資料流的終點是顯示器

    錯誤資料流:将程式無法處理或處理過程中出現問題的結果展示給使用者的資料流預設的錯誤資料流的終點是顯示器

    從鍵盤實作的輸入資料流稱為标準輸入

    到顯示器上的輸出資料流稱為标準輸出

    到顯示器上的錯誤資料流稱為标準錯誤輸出簡稱标準錯誤

檔案描述符:File Descriptor,FD

 0:标準輸入,stdin

 1:标準輸出,stdout

 2:标準錯誤,stderr

io重定向 采用非标準裝置檔案實作的io操作

   不是從鍵盤裝置完成的資料流輸入就可以稱為輸入重定向或重定向輸入

   不是到顯示器裝置的正确輸出資料流就可以被稱為輸出重定向或重定向輸出

   不是到顯示器裝置的錯誤輸出資料流就可以被稱為錯誤重定向或重定向錯誤

輸出重定向:

 >:覆寫輸出重定向

 set -C 開啟防誤覆寫開關">|"可以繼續覆寫重定向

 set +C關閉防誤覆寫開關

 >>:追加輸出重定向

錯誤重定向

2>:覆寫錯誤重定向

2>>:追加錯誤重定向

 合并标準輸入和标準輸出的重定向

 &>,&>>

  command>|>> /PATH/TO/SOMEFILE 2>&1

 /dev/null:黑洞BlackHole

輸入重定向:

   <:唯一字元

   <<:此處文檔

   <<<:此處字元串

 管道:

|:command1 |command2 |command3...

 注意:所有的用于管道連結的指令,都應該是能夠有标準輸出資料流的指令

      本文轉自Vincent一馬 51CTO部落格,原文連結:http://blog.51cto.com/mazhenbo/1908410,如需轉載請自行聯系原作者

繼續閱讀