linux命令行學(xué)習(xí)(17):echo命令與通配符擴(kuò)展

echo是個(gè)常用命令,它的作用是在屏幕上顯示其操作對(duì)象。例如:

echo hello world!

會(huì)在屏幕上顯示hello world

但如果在字符串中寫(xiě)上通配符*或?,會(huì)怎么樣呢?

一般來(lái)說(shuō),它會(huì)擴(kuò)展,不會(huì)顯示通配符,而是顯示擴(kuò)展后的內(nèi)容。就是說(shuō),其顯示的,一般不是我們寫(xiě)在命令里的字符串。但特殊情況下,也可能是我們寫(xiě)的包含通配符的字符串,也就是說(shuō),沒(méi)有擴(kuò)展。

這是什么原因呢?

什么情況下擴(kuò)展,什么情況下不擴(kuò)展?擴(kuò)展后顯示的內(nèi)容是什么呢?

先說(shuō)擴(kuò)展后顯示的內(nèi)容是什么?

輸入命令:

echo *

就很容易看出顯示的內(nèi)容。這個(gè)命令將顯示當(dāng)前目錄中的文件名,如同ls命令一樣,兩個(gè)命令顯示的內(nèi)容完全一樣。

也就是說(shuō),加入通配符,會(huì)顯示文件名而不是命令中的那個(gè)字符串。

從這里也可以知道什么情況下不擴(kuò)展:如果沒(méi)有文件匹配,則仍然顯示命令中的字符串。

例如,命令echo *在當(dāng)前目錄下沒(méi)有文件時(shí),會(huì)顯示*。

由于/bin下總有文件,所以,命令

echo /bin/*

會(huì)顯示出/bin下的所有文件名。

擴(kuò)展的規(guī)則:如果有文件名匹配,就擴(kuò)展為文件名;否則按字符串原樣顯示。

在linux中,文件名第一個(gè)字符是圓點(diǎn)的,是隱藏文件,一般不會(huì)顯示。在ls命令中,需要加-a才能顯示出來(lái)。如果用通配符,使用echo命令能不能顯示呢?

echo .*

是可以的,但是多了兩個(gè).和..。在linux中,一個(gè)點(diǎn)指當(dāng)前目錄,兩個(gè)點(diǎn)指當(dāng)前目錄的上級(jí)目錄,它們兩個(gè)不是文件,是文件夾。所以需要記住這一點(diǎn),除了它們之外,就是隱藏文件。如果除了這兩個(gè)之外,沒(méi)有其它的,那指定目錄就沒(méi)有隱藏文件。

也可以用通配符將這兩個(gè)目錄排除:

echo .[!.]*

這個(gè)時(shí)候,如果有隱藏文件,會(huì)顯示隱藏文件名;沒(méi)有的話,就顯示這個(gè)字符串。

echo用于通配符擴(kuò)展的話,要顯示指定目錄的文件名,是將路徑寫(xiě)在字符串中。例如:

echo /root/.*

會(huì)顯示root目錄中所有隱藏文件名(包含路徑,也包含/root/.和/root/..)。

echo /root/.[!.]*

會(huì)顯示root中所有隱藏文件名,沒(méi)有/root/.和/root/..。

總結(jié):在有通配符的情況下,echo會(huì)顯示分區(qū)中所有匹配文件名,就是要擴(kuò)展。如果沒(méi)有匹配文件,則顯示原字符串(包含通配符的字符串),就是不擴(kuò)展。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容