bash及其特性

weixin_33766168發表於2018-06-26

shell:外殼

GUI:GNOME,KDE,Xfce
CLI:sh,csh,ksh,bash,tcsh,zsh

程式,程式

允許一個使用者登入多次
程式:在每一個程式看來,當前主機上只存在核心和當前程式
程式是程式的副本,程式是程式執行的例項

bash自身是外部命令 但是它帶有自身命令

使用者的工作環境:

bash:
shell,子shell

bash---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] :刪除指定位置的命令
history -d 500 3 從500
-w :儲存命令歷史到檔案中去

環境變數

PATH:命令搜尋路徑
HISTSIZE:命令歷史緩衝區大小

命令歷史的使用技巧:

!n :執行命令歷史中的第n條命令
!-n:執行命令歷史中的倒數第n條命令
!!:執行上一條命令
!string:執行命令歷史中最近一次匹配的命令
引用前一個命令的最後引數
!$:引用前一個命令的最後引數
ESC,. 上一次命令
ALT+.

命令補全:

PATH:
TAB:自動補全
連敲兩次TAB鍵
路徑補全:(檔案,目錄補全)在給定的打頭的路徑下查詢

命令別名:

alias CMDalias=command [option] 注意:如果有空格必須要單引號。
在shell定義的別名僅在當前生命週期中有效;別名的有效範圍為當前shell程式。
alias 可以顯示系統上所有的別名
ualias cmdalias

命令替換$(command) `command`

把命令中某個子命令替換為其執行結果的過程
file-2013-02-28-53-31.txt
touch ./file-$(date +%F-%H-%M-%S).txt

bash支援的引號:

``:命令替換
"":弱引用,可以實現變數替換
'':強引用,不完成變數替換

檔名通配,gloobbing

*:可以匹配任意長度的任意字元
?:匹配任意單個字元
[]:匹配指定範圍內的單個字元
   [abc]  [a-z]  [A-Z] [0-9] [a-zA-z]
[^]:匹配指定範圍內之外的任意單個字元
touch a b      touch 'a b'
[:space:]:空白字元  
[:punct:] :標點符號
[:lower:]:小寫字母
[:upper:]:大寫字母
[:digit:]:數字
[:alnum:]:數字和字母
man 7 glob
[[:alpha:]]*[[:space:]]*[[:alpha:]]
[^[:alpha:]]
ls [am]*
ls *[0-9]  ls *[[:digit:]]
ls  [^[:space:]]*[0-9]
ls    *[^[:alnum:]]*

相關文章