本篇內(nèi)容介紹了“bash的基礎(chǔ)特性”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
創(chuàng)新互聯(lián)建站主營鄄城網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app開發(fā)定制,鄄城h5微信平臺(tái)小程序開發(fā)搭建,鄄城網(wǎng)站營銷推廣歡迎鄄城等地區(qū)企業(yè)咨詢
一、bash特性 1. 命令歷史: history .bash_history:用戶登出時(shí)保存命令歷史的文件(用戶家目錄下的隱藏文件) history #:顯示最近的#條命令; 調(diào)用命令歷史列表中的命令 !#:再一次執(zhí)行歷史列表中的第#條命令; !!:再一次執(zhí)行上一條命令; !STRING:再一次執(zhí)行命令歷史列表中最近一個(gè)以STRING開頭的命令; 調(diào)用上一條命令的最后一個(gè)參數(shù): 快捷鍵:ESC, . (ESC松開后再按.) 快捷鍵:Alt+. (按住Alt再按.) 字符串:!$ (直接輸入!$) [root@localhost local]# cat /tmp/script/idsum1.sh ...... [root@localhost local]# vi !$ vi /tmp/script/idsum1.sh
2.補(bǔ)全: 命令補(bǔ)全: 能唯一標(biāo)識(shí),則直接Tab補(bǔ)全,不能的話,再按一次Tab給出列表; 外部命令根據(jù)PATH環(huán)境變量中設(shè)定的目錄,自左而右逐個(gè)搜索目錄下的文件名 路徑補(bǔ)全: 唯一標(biāo)識(shí)Tab補(bǔ)全,不能的話,再按一次Tab給出列表; 3.命令行展開 ~:自動(dòng)展開為用戶的家目錄,或指定的用戶的家目錄; {}:可承載一個(gè)以逗號(hào)分隔的路徑列表,并能夠?qū)⑵湔归_為多個(gè)路徑;
[root@localhost tmp]# ls x_{y,z} x_y: afile1 afile2 x_z: afile3 afile4
4.命令的狀態(tài)執(zhí)行結(jié)果 成功: 返回0; 失敗: 1~255; 命令執(zhí)行完成后,執(zhí)行狀態(tài)保存在bash的特殊變量$?中;
[root@localhost x_z]# useradd yc [root@localhost x_z]# echo $? [root@localhost x_z]# useradd yc useradd: user 'yc' already exists [root@localhost x_z]# echo $? 9
命令正常執(zhí)行時(shí),有的還會(huì)有命令返回值,根據(jù)命令及其功能不同,結(jié)果各不相同。 引用命令的執(zhí)行結(jié)果:$(COMMAND)或~(COMMAND) 5.引用 強(qiáng)引用:單引號(hào),其中任何內(nèi)容直接顯示,不做替換。 弱引用:雙引號(hào),其中變量做變量替換,將出現(xiàn)變量的地方替換成變量的值。 命令引用:反單引號(hào),就是引用命令執(zhí)行結(jié)果,$(COMMAND)或~(COMMAND)。
[root@localhost x_z]# name="YC" [root@localhost x_z]# echo '$name' $name [root@localhost x_z]# echo "$name" YC [root@localhost x_z]# mkdir dir_`date +%h-%M-%S` [root@localhost x_z]# ls afiel3 afile4 dir_Jul-48-03
6.快捷鍵 ctrl+a : 跳至命令行首; ctrl+c : 跳至命令行尾; ctrl+u : 刪除從行首到光標(biāo); ctrl+k : 刪除從光標(biāo)到行尾; ctrl+l : clear;
7. 文件通配符 globbing 通配符實(shí)際上是一種shell實(shí)現(xiàn)的路徑擴(kuò)展功能,當(dāng)shell在“參數(shù)”中遇到通配符后, 會(huì)將其當(dāng)做路徑或文件名在磁盤上搜尋可能的匹配。 * : 匹配任意長度任意字符; ? : 匹配任意單個(gè)字符,如??pa,p?a?; []: 匹配指定范圍內(nèi)的任意單個(gè)字符; 有幾種特殊格式: [a-z];[A-Z];[0-9];[a-z0-9] [[:upper:]] : 所有大寫字母 [[:lower:]] : 所有小寫字母 [[:digit:]] : 所有數(shù)字 [[:alpha:]] : 所有字母 [[:alnum:]] : 所有字母和數(shù)字 [[:space:]] : 空格字符 [[:punct:]] : 所有標(biāo)點(diǎn)符號(hào) 不記得沒關(guān)系,man grep里面有:Their names are self explanatory, and they are [:alnum:], [:alpha:], [:cntrl:], [:digit:], [:graph:], [:lower:], [:print:], [:punct:], [:space:], [:upper:], and [:xdigit:]. For example, [[:alnum:]] means the character class of numbers and letters in the current locale. In the C locale and ASCII character set encoding, this is the same as [0-9A-Za-z] ^[]: 匹配指定范圍外的任意單個(gè)字符; [^[:upper:]] [^a-z] 示例:
[root@localhost x_z]# ls *[Ff]ile* ---含F(xiàn)ile或者file的文件名 afile4 myfile MyFile myfile_002 [root@localhost x_z]# find /tmp/x_z/ -name "*[^[:alpha:]]*" ---含非字母的文件名 /tmp/x_z/ /tmp/x_z/afile4 /tmp/x_z/afiel3 /tmp/x_z/dir_Jul-48-03 /tmp/x_z/1.txt /tmp/x_z/myfile_002 [root@localhost x_z]# find /tmp/x_z/ -name "*[^a-z]*" ---含非小寫字母的文件名 /tmp/x_z/ /tmp/x_z/afile4 /tmp/x_z/afiel3 /tmp/x_z/dir_Jul-48-03 /tmp/x_z/1.txt /tmp/x_z/myfile_002 /tmp/x_z/MyFile
二、正則表達(dá)式 由一類特殊字符集文本字符所編寫的模式,其中有些字符不表示其字面意義(要表示要用轉(zhuǎn)義字符/),而是用于表示控制或者統(tǒng)配的功能。 表達(dá)式組成:原義文本字符+元字符 元字符:指那些在正則表達(dá)式中具有特殊意義的專用字符,它使正則表達(dá)式具有處理能力。 grep:Global search Regular expression and print out the line 文本搜索工具,根據(jù)用戶指定的模式(過濾條件)對(duì)目標(biāo)文件逐行進(jìn)行匹配檢查,打印匹配的行; 正則表達(dá)式引擎:元字符及規(guī)則因引擎的不同略有不同。 grep [OPTIONS] PATTERN [FILE...] grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...] OPIONTS: -i : 不區(qū)分大小寫(ignore case); -o : 僅顯示匹配到的字符; -v : 顯示不能匹配到的行; -q : 不輸出任何信息(當(dāng)只需要執(zhí)行結(jié)果狀態(tài)時(shí)使用) -E : 支持?jǐn)U展正則表達(dá)式 -A #: after 匹配行的后#行 -B #: before匹配行的前#行 -C #: context 匹配行的前后#行 基本正則表達(dá)式元字符: 字符匹配 . : 匹配任意單個(gè)字符; []: 匹配指定范圍內(nèi)的任意單個(gè)字符; 有幾種特殊格式: [a-z];[A-Z];[0-9];[a-z0-9] [[:upper:]] : 所有大寫字母 [[:lower:]] : 所有小寫字母 [[:digit:]] : 所有數(shù)字 [[:alpha:]] : 所有字母 [[:alnum:]] : 所有字母和數(shù)字 [[:space:]] : 空格字符 [[:punct:]] : 所有標(biāo)點(diǎn)符號(hào) man grep里面:Their names are self explanatory, and they are [:alnum:], [:alpha:], [:cntrl:], [:digit:], [:graph:], [:lower:], [:print:], [:punct:], [:space:], [:upper:], and [:xdigit:]. For example, [[:alnum:]] means the character class of numbers and letters in the current locale. In the C locale and ASCII character set encoding, this is the same as [0-9A-Za-z] ^[]: 匹配指定范圍外的任意單個(gè)字符; [^[:upper:]] 次數(shù)匹配: 指定出現(xiàn)的次數(shù)的字符后面,限制前面字符出現(xiàn)的次數(shù),實(shí)行貪婪模式 貪婪模式:在整個(gè)表達(dá)式匹配成功的前提下,盡可能多的匹配; * : 匹配前面字符的任意次,0次,1次或者多次 .* : 匹配前面任意長度的任意字符; \? : 匹配前面字符0次或者1次,即可有可無; \+ : 匹配前面字符1次或者多次,即必存在; \{m\} : 匹配前面字符指定m次; \{m,n\} : 匹配前面字符至少m次,至多n次; \{0,n\} : 匹配前面字符至多n次; \{m,\} : 匹配前面字符至少m次; 位置錨定: ^ : 行首錨定 $ : 行尾錨定; ^PATTEERN$ : 用PATTERN來匹配整行; ^$ : 空白行; ^[[:space:]]*$ : 空行或者包含空白字符的行; 單詞錨定: \<或者\(yùn)b : 詞首錨定,放在詞的前面; \>或者\(yùn)b : 詞尾錨定,放在詞的后面; \<PATTEERN\> : 匹配完整單詞PATTERN; 分組及引用 \(\) :將一個(gè)或者多個(gè)字符捆綁在一起,作為一個(gè)整體處理;用括號(hào)括起來,表示括號(hào)時(shí)要用轉(zhuǎn)義字符; 注意:分組括號(hào)中的模式匹配到的內(nèi)容會(huì)被正則表達(dá)式引擎自動(dòng)記錄于內(nèi)部變量中,這些變量為: \1: 模式從左邊起,第一個(gè)左括號(hào)以及與之匹配的右括號(hào)之間的模式所匹配到的字符; \2: 模式從左邊起,第二個(gè)左括號(hào)以及與之匹配的右括號(hào)之間的模式所匹配到的字符; \3: 后項(xiàng)引用: 引用前面的分組括號(hào)中的模式所匹配的字符;
練習(xí):
2. 顯示/etc/passwd文件中不以/bin/bash結(jié)尾的行
[root@localhost x_z]# grep -v “/bin/bash$” /etc/passwd bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin ......
3. 找出/etc/passwd中包含二位數(shù)字或者三位數(shù)字的行
[root@localhost x_z]# grep "\<[[:digit:]]\{2,3\}\>" /etc/passwd mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ......
4. 顯示/porc/meminfo文件中大寫或者小寫S開頭的行
[root@localhost x_z]# grep "^[Ss]\+*" /proc/meminfo ----錯(cuò)誤示范,這個(gè)*可以是0次,沒有s也行; MemTotal: 3868768 kB MemFree: 2927360 kB .... [root@localhost x_z]# grep "^[Ss]\+" /proc/meminfo SwapCached: 0 kB SwapTotal: 2097148 kB SwapFree: 2097148 kB Shmem: 9368 kB Slab: 149628 kB SReclaimable: 85044 kB SUnreclaim: 64584 kB [root@localhost x_z]# grep -i "^[s]\+" /proc/meminfo SwapCached: 0 kB SwapTotal: 2097148 kB SwapFree: 2097148 kB Shmem: 9368 kB Slab: 149628 kB SReclaimable: 85044 kB SUnreclaim: 64584 kB [root@localhost x_z]# grep -E "^(s|S)+" /proc/meminfo SwapCached: 0 kB SwapTotal: 2097148 kB SwapFree: 2097148 kB Shmem: 9368 kB Slab: 149788 kB SReclaimable: 85028 kB SUnreclaim: 64760 kB
egrep 支持?jǐn)U展的正則表達(dá)式,實(shí)現(xiàn)grep文本過濾功能;grep -E -i;-o;-v;-q;-G(基本正則表達(dá)式) 支持?jǐn)U展正則表達(dá)式元字符: 字符匹配 . : 匹配任意單個(gè)字符; []: 匹配指定范圍內(nèi)的任意單個(gè)字符; ^[]: 匹配指定范圍外的任意單個(gè)字符; 次數(shù)匹配: 指定出現(xiàn)的次數(shù)的字符后面,限制前面字符出現(xiàn)的次數(shù),實(shí)行貪婪模式 貪婪模式:在整個(gè)表達(dá)式匹配成功的前提下,盡可能多的匹配; * : 匹配前面字符的任意次,0次,1次或者多次 .* : 匹配前面任意長度的任意字符; ? : 匹配前面字符0次或者1次,即可有可無; + : 匹配前面字符1次或者多次,即必存在; {m} : 匹配前面字符指定m次; {m,n} : 匹配前面字符至少m次,至多n次; {0,n} : 匹配前面字符至多n次; {m,} : 匹配前面字符至少m次; 位置錨定: ^ : 行首錨定 $ : 行尾錨定; ^PATTEERN$ : 用PATTERN來匹配整行; ^$ : 空白行; ^[[:space:]]*$ : 空行或者包含空白字符的行; 單詞錨定: \<或者\(yùn)b : 詞首錨定,放在詞的前面; \>或者\(yùn)b : 詞尾錨定,放在詞的后面; \<PATTEERN\> : 匹配完整單詞PATTERN; 分組及引用 ( ):將一個(gè)或者多個(gè)字符捆綁在一起,作為一個(gè)整體處理;用括號(hào)括起來,表示括號(hào)時(shí)要用轉(zhuǎn)義字符; 注意:分組括號(hào)中的模式匹配到的內(nèi)容會(huì)被正則表達(dá)式引擎自動(dòng)記錄于內(nèi)部變量中,這些變量為: \1: 模式從左邊起,第一個(gè)左括號(hào)以及與之匹配的右括號(hào)之間的模式所匹配到的字符; \2: 模式從左邊起,第二個(gè)左括號(hào)以及與之匹配的右括號(hào)之間的模式所匹配到的字符; \3: 后項(xiàng)引用: 引用前面的分組括號(hào)中的模式所匹配的字符; 或 a|b 如 C|cat 表示C或者cat; (C|c)at 表示Cat或者cat;
練習(xí):
5. 使用echo輸出一個(gè)絕對(duì)路徑,使用egrep取出路徑名,類似執(zhí)行dirname /etc/passwd的結(jié)果。
[root@localhost pp]# pwd /tmp/x_z/pp [root@localhost pp]# ls YC.sh [root@localhost pp]# dirname /tmp/x_z/pp/YC.sh /tmp/x_z/pp [root@localhost pp]# echo /tmp/x_z/pp/YC.sh | grep -E ".*/\<" ----顯示匹配的行全部 /tmp/x_z/pp/YC.sh [root@localhost pp]# echo /tmp/x_z/pp/YC.sh | grep -E -o ".*/\<" /tmp/x_z/pp/
6. 找出ifconfig的IP地址,要求結(jié)果中只顯示IP地址。
[root@localhost pp]# ifconfig | grep -Eo "(\<([0-9]|[0-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>.){3} \<([0-9]|[0-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>" 192.167.1.23 255.255.255.0 192.167.1.255 127.0.0.1 255.0.0.0
fgrep: 不支持正則表達(dá)式元字符,任何符號(hào)都是字符; 當(dāng)無需要用到元字符去編寫模式時(shí),使用fgrep會(huì)更好。
“bash的基礎(chǔ)特性”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
網(wǎng)站名稱:bash的基礎(chǔ)特性
標(biāo)題URL:http://aaarwkj.com/article18/gjgpdp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、品牌網(wǎng)站制作、網(wǎng)頁設(shè)計(jì)公司、云服務(wù)器、企業(yè)建站、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)