Bash及其特性

shell: 是系統的用戶界面,提供了用戶與內核進行交互操作的一種接口,分以下兩大類。  
  GUI:Gnome, KDE, Xfce    
  CLI: sh, csh, ksh, bash, tcsh, zsh
   
程序和進程

  進程:在每個進程看來,當前主機上只存在內核和當前進程||進程是程序的副本,進程是程序執行實例

用戶工作環境:      
 bash:    
    # 超級管理員 root    
    $ 普通用戶  tom, jerry….    
 shell,子shell

 bash--bash

bash特性:    
  1、命令歷史、命令補全      
  2、管道、重定向      
  3、命令別名      
  4、命令行編輯      
  5、命令行展開      
  6、文件名通配      
  7、變量      
  8、編程

命令行編輯:    
  光標跳轉:    
    Ctrl+a:跳到命令行首    
    Ctrl+e:跳到命令行尾    
    Ctrl+u: 刪除光標至命令行首的內容    
    Ctrl+k: 刪除光標至命令行尾的內容    
    Ctrl+l: 清屏  
    
命令歷史:    
  查看命令歷史:history    
    -c:清空命令歷史    
    -d OFFSET [n]: 刪除指定位置的命令    
    -w:保存命令歷史至歷史文件中  默認保存在/root/.bash_history中
   
環境變量    
  PATH:命令搜索路徑 

/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin    

HISTSIZE: 命令歷史緩衝區大小 

echo $HISTSIZE 默認爲緩衝1000條命令歷史

  命令歷史的使用技巧:    
   !n:執行命令歷史中的第n條命令;    
   !-n:執行命令歷史中的倒數第n條命令;    
   !!: 執行上一條命令;    
   !string:執行命令歷史中最近一個以指定字符串開頭的命令    
   !$:引用前一個命令的最後一個參數;    
   Esc 鬆開然後按 .    
   Alt+.   

命令補全,路徑補全:    

PATH:

搜索PATH環境變量所指定的每個路徑下以我們給出的字符串開頭的可執行文件,如果多於一個,兩次tab,可以給出列表;否則將直接補全;

路徑補全:    
打頭路徑下:搜索我們給出的起始路徑下的每個文件名,並試圖補全;

文本相關的命令    
  查看:cat, tac, more, less, head, tail    
  統計:wc    
  處理:tr, cut, join    
  排序:sort  uniq

命令別名:    
  alias CMDALIAS='COMMAND [options] [arguments]'    
  在shell中定義的別名僅在當前shell生命週期中有效;別名的有效範圍僅爲當前shell進程;

  ualias CMDALIAS 取消命令別名

  \CMD  可以使用命令本身的意義。轉義字符 \

命令替換:

  $(COMMAND), 反引號:`COMMAND`    
  把命令中某個子命令替換爲其執行結果的過程    
  file-2013-02-28-14-53-31.txt    date "+%F-%H-%M-%S"
 bash支持的引號:    
  反引號``: 命令替換    
  雙引號"": 弱引用,可以實現變量替換    
  單引號'': 強引用,不完成變量替換

文件名通配, globbing    
  *: 任意長度的任意字符    
  ?:任意單個字符    
 []:匹配指定範圍內的任意單個字符    
    [abc], [a-m], [a-z], [A-Z], [0-9], [a-zA-Z], [0-9a-zA-Z]    
    [:space:]:空白字符    
    [:punct:]:標點符號    
    [:lower:]:小寫字母    
    [:upper:]: 大寫字母    
    [:alpha:]: 大小寫字母    
    [:digit:]: 數字    
    [:alnum:]: 數字和大小寫字母    
   
 # man 7 glob    
 [^]: 匹配指定範圍之外的任意單個字符

eg1:創建a123, cd6, c78m, c1 my, m.z, k 67, 8yu,注意,以上文件是以逗號隔開的,其它符號都是文件名的組成部分

1、顯示所有以a或m開頭的文件;

[root@JustinWang test]# ls [am]*

a123  m.z

2、顯示所有文件名中包含了數字的文件;

ls *[0-9]* 或 ls *[[:digit:]]*

8yu  a123  c1 my  c78m  cd6  k 67

3、顯示所有以數字結尾且文件名中不包含空白的文件;

ls *[^[:space:]]*[0-9]   ?????????

4、顯示文件名中包含了非字母或數字的特殊符號的文件;

ls *[^[:alnum:]]*

c1 my  k 67  m.z

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章