1. 程式人生 > >bash簡介以及bash應用和命令

bash簡介以及bash應用和命令

linux

bash及其特性:


shell:外殼


GUI:Gnome,KDE,xfce
CLI: sh,csh.ksh,bash,tcsh,zsh



程序:只有一個
進程:可以有多個

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


用戶工作環境:
bash:
#管理員
$一般用戶

shell,子shell



bash命令行編輯:
光標跳轉:
Ctrl+a:跳到命令行首
Ctrl+e:調到命令行尾
Ctrl+u:刪除光標至命令行首的內容
Ctrl+k:刪除光標至命令行尾的內容
Ctrl+l:清屏



命令歷史:
查看命令歷史:history

-c:清空命令歷史
-d OFFSET [n]:刪除指定位置的命令
例:
hsitory -d 500
刪除行號為500的
hsitory -d 510 3
刪除行號為510開始的3個

-w:保存命令歷史至歷史文件中


命令歷史的使用技巧:
!n:執行命令歷史中的第N條命令:
!-n:執行命令歷史中的倒數第n條命令
!!:執行上一條命令
!string(字符串):執行命令歷史中最近一個以指定字符串開頭的命令

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

!$:引用前一個命令的最後一個參數
ESC松開再按.
Alt+.



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

:否則將直接補全。


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

tab鍵補全命令
tab鍵兩下出現相關的命令




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

例如給clear起一個別名如下:
alias cls=clear

unalias CMDALIAS
unalias cls撤銷別名

例:unalia cls

這樣就可以撤銷別名


\CMD別名後使用命令本身


命令替換:$(COMMAND), 反引號(波浪線下面的那個符號):`COMMAND`
把命令中某個子命令替換為某執行結果的過程


例如:echo “The current directory is $(pwd).”


例:建立一個file-2013-02-28-14-53-31.txt

touch ./file-$(date+%F-%H-%M-%D).txt

bash支持的引號:
``: 命令替換
“”:弱引用,可以實現變量替換
‘’:強引用,不完成變量替換


文件名通配,globbing
*:任意長度的任意字符
?:任意單個字符
[]:匹配指定範圍內的任意單個字符
[abc],[a-m],[a-z],[A-Z],[0-9],[a-zA-Z],[0-9a-zA-Z]


*:例:touch a123 abc ab123 xyz x12 xyz123,找出a開頭的文件:

ls a*


以字母開頭,中間跟任意字符,以數字結尾

ls [a-zA-Z]*[0-9]

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

非數據開頭文件
ls [^0-9]*

以數字、小寫字母或大寫字母開頭的文件
ls [0-9a-zA-z]*

[[:space:]]
表示中間為空白字符的文件
[:punct:]:表示所有的標點符號
[:lower:]:小寫字母
[:upper:]:大寫字母
[:alpha:]:大小寫字母
[:digit:]:數字
[:alnum:]:數字和大小寫字母

# man 7 glob可以查詢以上集合的意思


ls [[:alpha:]]*[[:space:]]*[[:alpha:]]
字母開頭,字母結尾,中間為空白字符(*表示出了空白字符還有其他字符)
ls [[:alpha:]]*[[:space:]]*[^[:alpha:]]
字母開頭,非字母結尾,中間為空白字符(*表示出了空白字符還有其他字符)

顯示所有以a或m開頭的文件:
ls[am]*

顯示所有文件名中包含了數字的文件
ls *[0-9]*
ls *[[:digit:]]*

顯示所有以數字結尾且文件名中不包含空白的文件
ls *[^[:space:]]*[0-9]
ls *[^[:space:]]*[[:digit:]]


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

ls *[^[:alnum:]]*


練習題:


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

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


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

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

ls *[^[:space:]]*[[:digit:]]

此答案待定,有點不太確定


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

ls *[^[:alnum:]]*


本文出自 “My Redhat Study Record” 博客,請務必保留此出處http://xanxus21.blog.51cto.com/10829527/1950611

bash簡介以及bash應用和命令