国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Linux > 正文

Linux命令行自動(dòng)補(bǔ)全功能詳解(實(shí)例演示)

2024-08-27 23:57:11
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

 文件名(或者目錄名)是執(zhí)行 linux 命令中最常見(jiàn)的參數(shù),例如前面介紹的 cd、mkdir、cp 等命令,都涉及到了文件名。然而對(duì)初學(xué)者來(lái)說(shuō),輸入完整的文件名感覺(jué)很麻煩,尤其面臨文件名(目錄名)特別長(zhǎng)的時(shí)候。

考慮到這種情況,shell(Bash)提供了一種稱為“命令行自動(dòng)補(bǔ)全”的功能,即在輸入文件名的時(shí)候,只需要輸入該文件名的前幾個(gè)字符,然后按 Tab 鍵,Shell 就可以自動(dòng)將文件名補(bǔ)全。

舉個(gè)例子,在 /etc 目錄下,執(zhí)行如下命令:

[root@localhost ~]# cd /etc
[root@localhost etc]# cd fs <-- 按一次 Tab 鍵

當(dāng)按下 Tab 鍵時(shí),你會(huì)發(fā)現(xiàn) Shell 自動(dòng)將 "fs" 補(bǔ)全成了 "fatab",這是因?yàn)楫?dāng)前 /etc 目錄中只有 fstab 是以 "fs" 開(kāi)頭,因此 Shell 可以確定這里想要輸入的文件名稱為 fstab。

那么,如果當(dāng)前目錄中含有多個(gè)以指定字符(或字符串)開(kāi)頭的目錄或文件,Shell 還可以成功辨認(rèn)嗎?答案是否定的,但它會(huì)以列表的形式給出所有以指定字符或字符串開(kāi)頭的文件或目錄,供用戶選擇。

例如,還是在 /etc 目錄下,執(zhí)行如下命令:

[root@localhost etc]# cd b <-- 連續(xù)按兩次 Tab 鍵bash_completion.d/      blkid/          bonobo-activation/bashrc                  bluetooth

可以看到,當(dāng)按一次 Tab 鍵時(shí),Shell 沒(méi)有任何反映,原因就是當(dāng)前目錄下以 "b" 為開(kāi)頭的文件或目錄有多個(gè)(2 個(gè)以上),僅憑一個(gè)字符 "b" 無(wú)法精準(zhǔn)判斷出具體指的是哪個(gè)文件。而當(dāng)再一次按下 Tab 鍵時(shí),Shell 會(huì)列表的形式顯示給用戶當(dāng)前目錄下所有以 "b" 開(kāi)頭的文件或目錄。

事實(shí)上,Shell 提供的命令行補(bǔ)全功能不僅適用于補(bǔ)全文件名,也同樣適用于所有 Linux 命令。舉個(gè)例子,當(dāng)輸入 ca 并連續(xù)按下 2 次 Tab 鍵時(shí),Shell 會(huì)羅列出所有以 "ca" 開(kāi)頭的 Linux 命令,如下所示:

[root@localhost etc]# ca <--連續(xù)按兩次 Tab 鍵cacertdir_rehash    cache_restore       capsh       catchsegvcache_check         cal                 captoinfocache_dump          caller              casecache_repair        canberra-gtk-play   cat

另外,Shell 還有一套被稱作通配符的轉(zhuǎn)用符號(hào)(如表 1 所示),這些通配符可以搜索并匹配文件名的一部分,從而大大簡(jiǎn)化了文件名的輸入。

表 1 Shell 通配符及其作用
符號(hào) 作用
* 匹配任意數(shù)量的字符。
? 匹配任意一個(gè)字符。
[] 匹配括號(hào)內(nèi)的任意一個(gè)字符,甚至 [] 中還可以包含用 -(短橫線)連接的字符或數(shù)字,表示一定范圍內(nèi)的字符或數(shù)字。


為了學(xué)習(xí)這些通配符的用法,首先需要建立一個(gè)空目錄(如 test),并在該目錄中創(chuàng)建一些文件(供測(cè)試用),執(zhí)行命令如下:

[root@localhost etc]# makdir test
[root@localhost etc]# cd test
[root@localhost test]# touch apple banana grape grapefruit watermelon
[root@localhost test]# ls
apple banana grape grapefruit watermelon


在此基礎(chǔ)上,繼續(xù)執(zhí)行如下命令:

[root@localhost test]# ls a* <--匹配所有以 a 字符開(kāi)頭的文件名
apple
[root@localhost test]# ls g*t <--匹配所有以 g 字符開(kāi)頭,以 t 字符結(jié)尾的文件名
grapefruit
[root@localhost test]# ls *e* <--匹配所有包含 e 字符的文件名
apple grape grapefruit watermelon
[root@localhost test]# ls *n* <--匹配所有包含 n 字符的文件名
banana watermelon

結(jié)合以上實(shí)例,因?yàn)?* 可以匹配任何數(shù)量的字符,因此可以一一實(shí)現(xiàn)實(shí)例中標(biāo)注的功能。

接下來(lái),列舉一下使用 ? 匹配文件名的示例:

[root@localhost test]# ls ????e
apple grape
[root@localhost test]# ls g???e*
grape grapefruit

因?yàn)?1 個(gè) ? 只能匹配 1 個(gè)任意字符,因此該示例中第一個(gè)例子表示的是匹配任意包含 5 個(gè)字符但以 e 結(jié)尾的文件(apple 和 grape),第二例子表示匹配任何以 g 開(kāi)頭且第 5 個(gè)字符為 e 的文件(grape 和 grapefruit)。

最后,列舉一些使用括號(hào) [] 匹配文件名的示例:

[root@localhost test]# ls [abw]*
apple banana watermelon
[root@localhost test]# ls [agw]*[ne]
apple grape watermelon

此示例中,第一個(gè)例子表示匹配任何以 a、b 或 w 開(kāi)頭的文件;第二個(gè)例子中表示匹配任何以 a、g、w 開(kāi)頭,以 n 或 e 結(jié)尾的文件名。

不僅如此,[] 中還可以通過(guò) -(短橫線)表示一定范圍內(nèi)的任意字符(或數(shù)字),例如:

[root@localhost test]# ls [a-g]*
apple banana grape grapefruit

其中,[a-g]* 表示匹配以字母 a 到  g 之間任何一個(gè)字母開(kāi)頭的文件名。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 虞城县| 镇安县| 永清县| 宕昌县| 广东省| 磐石市| 宝鸡市| 宜丰县| 定安县| 桃园县| 桓台县| 东乌| 雅安市| 崇义县| 长阳| 泗洪县| 连云港市| 上思县| 周口市| 满城县| 桦川县| 三亚市| 余庆县| 河间市| 榆林市| 桂林市| 浮山县| 化州市| 周宁县| 崇明县| 盐津县| 额尔古纳市| 庄浪县| 黎城县| 弥勒县| 宁晋县| 涪陵区| 西盟| 嘉兴市| 内丘县| 霍州市|