bash及其特性筆記

bash及其特性

shell: 外殼

GUI: Gnome,KDE,Xfce

CLI: sh, csh, ksb, bash, tcsh, ksh, zch

程序: 進程

允許同一個用戶登陸多次,互不相干,進程獨立

進程: 在每個進程看來,當前主機上只存在內核和當前進程

進程是程序的副本,進程是程序執行的實例


用戶工作環境:

#

$

shell, 子shell

bash:

1. 命令歷史

2. 管道、重定向

3. 命令別名

4. 命令行編輯

5. 命令行展開

6. 文件名通配

7. 變量

8. 編程


命令行編輯:

ctrl+a: 跳到命令行收

ctrl+e: 跳到命令行尾

ctrl+u: 刪除光標至命令行首的內容

ctrl+k: 刪除光標至命令行尾的內容

ctrl+l: 清屏


命令歷史:

查看命令歷史: history

-c: 清空命令歷史

-d: OFFSET【n】清除指定行號的命令條數 

eg: history 500 刪除1-500條記錄

eg: history 500 10 刪除從第500條到510條記錄

-w: 保存命令歷史至歷史文件中 ~/.bash_history

環境變量

PATH: 命令搜索路徑

HISTSIZE: 命令歷史緩衝區大小 eg:  echo $HISTSIZE


命令歷史的使用技巧:

!n : 執行history中的第n條命令

!-n: 執行history中倒數第n條命令

!!:   執行上一條命令

!string: 執行命令歷史中最近一個以指定字符串開頭的命令

!$: 引用前一個命令的最後一個參數 

ESC, . (按ESC鬆開,點按.) 就可以出現上一個命令的最後一個參數

eg: nano !$


命令補全

路徑補全


命令別名

alias CMEALIAS='COMMAND [options] [arguments]'

在shell中定義的別名僅在當前shell生命週期中有效,別名的有效範圍僅爲當前shell進程:

unalias


命令替換 $(COMMAND), 反引號: `COMMAND`

把命令中某個子命令替換爲其執行結果的過程

eg: echo "the current directory is $(pwd)"

創建一個 file-$(date +%F-%H-%M-%S).txt


bash支持的引號:

``: 命令替換

"": 弱引用,可以實現變量替換

'': 強引用,不完成變量替換


文件名通配, globbing

* 任意長度的任意字符

? 任意單個字符

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

eg: [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 可以查到上述的列表

調用[[:space:]] 所有的空格字符

檢測中間有空格的:

[[:alpha:]]*[[:space:]]*[[:alpha:]]

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

eg: 以爲非數字開頭的文件 [^0-9]


練習:

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

2. 顯示所有以a或m開頭的文件

ls [am]*

3. 顯示所有文件名中包含了數字的文件

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

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

*[^[:space:]]*[[:digit:]] 或者 *[[:space:]]*[^0-9]

5. 顯示文件名中包含了非字母或數字的特殊符號文件

*[^[:alnum:]]*



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