bash脚本基础
1.bash特性之命令補全與路徑補全
命令補全:敲擊Tab按鍵
shell程序在接收到用戶執行命令的請求且分析完成后,最左側字符串將被當作命令去分析$PATH標量所指定的各路徑下去查找
查找機制:
1.查找內部命令
2.查找外部命令:去$PATH變量下所指定的各路徑下,自左而右逐個搜索各目錄下的文件名:打頭的字符串如果能唯一標識,則直接補全;不能唯一標識,在敲擊一次Tab按鍵,可給出列表;
3.錯誤:沒有任何命令被識別,則無響應
路徑補全:
在給定的起始路徑的上級目錄下,以對應路徑下的打頭字符串來逐一匹配上級目錄下的每個文件
2.bash特性之命令行展開
把命令行給定的特殊符號自動轉化為相應的字符串的機制
例:
“~”:自動切換為家目錄
“~ username”:切換到指定用戶的家目錄
“{}”:可承載一個以逗號分割的路徑列表,能夠將其展開為多個獨立的路徑
3.bash的特性:命令執行的狀態結果
命令的正常輸出結果,叫做命令的返回值
命令執行的狀態結果:成功,失敗
bash用一特殊變量來保存最接近一次的命令執行狀態結果:“$?”
顯示的結果中,0表示命令執行成功,1-255表示沒有成功
命令的輸出結果通過引用來保存下來或直接調用,例如:
結果是創建以相應數字為文件名的空文件夾
使用“ ”(反引號) >"''"(引號):強引用 >""""(雙引號):弱引用 >""(反引號):命令引用
4.bash的特性之glob通配符
glob:文件名通配符,能夠快速引用多個文件,只指文件名,不包括路徑
、文件名匹配度檢測
元字符:基于元字符可編寫匹配模式(pattern)
"*"(米字符):匹配任意長度的任意字符
例:
p* :以p開頭的任意字符串,文件名。。。
pa:以pa開頭的
p:以p結尾的
- p *a:中間有p,結尾為a的
"?"(問號):匹配任意單個字符
例:
p?a:代表三個字符,其中中間的為任意字符
p?兩個字符
p??,三個字符
“[ ]”(中括號):匹配指定集合內的任意單個字符
例:[a-z],[A-Z]:此時不區分大小寫
[0-9]:
[a-z0-9]:字母與數字
[[:upper:],[A-Z]]:所有大寫字母,只顯示大寫
[[:lower:]],只顯示小寫
[[:digit:]]
[[:alpha:]]
[[:alnum:]]
[[:space:]]
[[:punct:]]
[^]:匹配指定集合外的任意單個字符,如[^[:alpha:]]
5.bash特性之變量
程序=指令+數據
數據:文件、變量
變量:內存空間,有名稱,名稱即為變量
變量賦值:NAME=VALUE
=:為賦值符號,把VALUE存儲到NAME指向的內存空間中
變量命名:只能使用字母、數字和下劃線;而且不能以數字開頭;
變量引用:${NAME}, $NAME
變量替換:把變量引用符號出現的位置替換為其指向的內存空間中的數據;
bash變量種類:
1.本地變量:作用域為當前shell進程;不包括其子進程;
2.環境變量:使用域為當前shell進程及其子進程;
3.局部變量:作用域:生效范圍,也即可引用到的范圍;
4.位置參數變量
5.特殊變量
6.bash特性之IO重定向
1.輸出重定向:重定向程序正常執行的結果
COMMAND > /PATH/TO/SOMEFILE 覆蓋重定向:覆蓋目標文件中的原有內容; COMMAND >> /PATH/TO/SOMEFILE 追加重定向:追加新產生的內容至目標文件尾部;shell的一個功能開關:
set -C:禁止覆蓋輸出從定向至已存在的文件
注意:此時仍然可以使用“>|”至目標文件
set +C:關閉上述特性
2.錯誤重定向:重定向錯誤的執行結果
COMMAND 2> /PATH/TO/SOMEFILE 錯誤輸出覆蓋重定向; COMMAND 2>> /PATH/TO/SOMEFILE 錯誤輸出追加重定向;3.合并標準輸出與錯誤輸出流
1.&>,&>>
2.command > /path/to/somefile 2>&1
3.command >> /path/to/somefile 2>&1
4.特殊設備
1.特殊輸出目標:/dev/null,垃圾桶
2.特殊的輸出文件:/dev/zero
5.輸入重定向
COMMAND < /PATH/FROM/SOMEFILE7.bash特性之管道
COMMAND1 | COMMAND2 | COMMAND3 | ...練習:
1.把/etc/passwd文件最后三行信息中所有小寫字符改為大寫后輸出
2.取出/etc/fstab的第六行
head -n 6 /etc/fstab | tail 13.取出/etc目錄下所有以p開頭的文件或目錄,只顯示前5個
ls -a /etc/p* | head 5特殊命令:
1.tee命令:
tee [OPTION]... [FILE]...
-a:使用追加輸出,而非覆蓋
例:
ls -al /tmp | tee -a /tmp/bashrc 列出/tmp下的文件,并把結果追加導入到/tmp/bashrc文件中2.tr命令:
tr [option] set1 [set2]
把輸出的數據當中的字符,實現對位轉換,即把數據中的存在于字符集中的字符,統統轉換為字符幾種對未的字符;
轉載于:https://www.cnblogs.com/zhangpf/p/5657365.html
總結
- 上一篇: ebs 初始化登陆
- 下一篇: Python使用xlwt模块 操作Exc