利用引用管理Unix操作系統(tǒng)
經(jīng)過(guò)長(zhǎng)時(shí)間的學(xué)習(xí)Unix操作系統(tǒng)后,這次我們就來(lái)學(xué)習(xí)下如何利用引用來(lái)解決Unix操作系統(tǒng)元字符的問(wèn)題。在Unix操作系統(tǒng)中有一類特殊的字符,叫做元字符。他們?cè)谙到y(tǒng)中表示特殊的含義。如*號(hào)與?號(hào),操作系統(tǒng)認(rèn)為這些元字符是通配符。
如果在路經(jīng)、文件名或者命令參數(shù)中有這些元字符的話,就會(huì)引起Unix操作系統(tǒng)的誤解。為此在系統(tǒng)中要采用一些方法,能夠讓操作系統(tǒng)將這些元字符當(dāng)作普通字符來(lái)對(duì)待。
利用引用來(lái)解決Unix操作系統(tǒng)元字符的問(wèn)題
可以采用引用這個(gè)功能來(lái)解決。簡(jiǎn)單的說(shuō),就是將一個(gè)命令參數(shù)放置在一對(duì)引號(hào)之內(nèi),則這個(gè)引號(hào)之內(nèi)內(nèi)容如果有元字符的話,則這些元字符將不起作用。
那么既然轉(zhuǎn)義功能已經(jīng)可以解決元字符的問(wèn)題,Unix操作系統(tǒng)還提出了一個(gè)引用的解決方案,是否多次一舉呢?其實(shí)不然。當(dāng)一個(gè)命令行中含有多個(gè)元字符的時(shí)候,需要在每個(gè)元字符前面加一個(gè)轉(zhuǎn)移字符。
為此此時(shí)如果采用轉(zhuǎn)義字符來(lái)解決這個(gè)元字符的問(wèn)題時(shí),會(huì)非常的繁瑣。此時(shí)如果采用引用機(jī)制來(lái)解決元字符的問(wèn)題時(shí),可能會(huì)更加的理想。如現(xiàn)在Unix操作系統(tǒng)工程師希望能夠在屏幕上打出如下信息(這是一個(gè)共享文件的路徑):192.128.11.3\share\IT\software\pdf。
如果采用轉(zhuǎn)移字符的話,該如何寫呢?由于這個(gè)輸出結(jié)果中有四個(gè)元字符(轉(zhuǎn)義字符\),為此管理員不得不用四個(gè)轉(zhuǎn)移字符來(lái)處理。即要寫成echo 192.128.11.3\\share\\IT\\software\\pdf。這顯然非常的麻煩。
遇到這種情況時(shí),如果采用引用的話,顯然會(huì)更加的合適。如采用引用機(jī)制,只需要將這個(gè)命令寫為即可:
echo ‘192.128.11.3\share\IT\software\pdf’
將一大串命令采用單引號(hào)因起來(lái)。則Unix操作系統(tǒng)會(huì)將命令行中的一些元字符都當(dāng)作普通字符來(lái)對(duì)待。即不需要為每一個(gè)元字符采用轉(zhuǎn)移字符。顯然這個(gè)引用解決方案要比采用轉(zhuǎn)義字符來(lái)解決要方便的多。
在采用引用機(jī)制來(lái)處理元字符時(shí),需要注意跟雙引號(hào)的區(qū)別。
如現(xiàn)在有如下三個(gè)命令echo $JAVA_HOME、echo ‘$JAVA_HOME’、 “echo $JAVA_HOME”。其中$JAVA_HOME表示應(yīng)用程序Java的環(huán)境變量。
此時(shí)如果Unix操作系統(tǒng)工程師依次運(yùn)行上面這三個(gè)命令,會(huì)有什么結(jié)果呢?第一個(gè)命令會(huì)正常顯示Java的環(huán)境變量;第二個(gè)命令直接顯示$JAVA_HOME,即已經(jīng)將元字符$當(dāng)作普通字符來(lái)對(duì)待。第三個(gè)命令的話仍然顯示Java的環(huán)境變量??梢?jiàn)雙引號(hào)與單引號(hào)在引用機(jī)制上,還是有所不同的。
那么他們到底有什么差異呢?總的來(lái)說(shuō),Unix操作系統(tǒng)工程師需要注意如下內(nèi)容。單引號(hào)會(huì)保護(hù)里面所有的元字符,即遇到元字符時(shí)會(huì)告訴系統(tǒng)當(dāng)作普通字符來(lái)對(duì)待。但是如果采用了雙引號(hào),則系統(tǒng)會(huì)將單引號(hào)之間的內(nèi)容解釋為命令行。如會(huì)將$當(dāng)作環(huán)境變量的前綴等等。其實(shí)單引號(hào)與雙引號(hào)還有一種相互保護(hù)的作用。
即雙引號(hào)保護(hù)其中的單引號(hào),而單引號(hào)保護(hù)其中的雙引號(hào)。因?yàn)闊o(wú)論是雙引號(hào)還是單引號(hào)本身就都是元字符,可以通過(guò)引用機(jī)制來(lái)進(jìn)行保護(hù)。不過(guò)在遇到單引號(hào)與雙引號(hào)(都當(dāng)作普通字符)都存在的情況下,筆者建議還是采用轉(zhuǎn)移字符來(lái)保護(hù)單引號(hào)或者雙引號(hào)為好。
這可以避免誤解,也容易提高代碼的可讀性。同理,如果要將轉(zhuǎn)移字符\ 當(dāng)作普通字符來(lái)實(shí)用的話,那么最好也是利用單引號(hào)來(lái)保護(hù)這個(gè)轉(zhuǎn)移字符,而不是利用轉(zhuǎn)移字符來(lái)保護(hù)轉(zhuǎn)移字符。這些雖然不影響實(shí)際的應(yīng)用,但是卻是提高代碼可讀性的有效手段。
在以上內(nèi)容中我們就學(xué)習(xí)了Unix操作系統(tǒng)中利用引用來(lái)解決元字符的問(wèn)題的知識(shí)要點(diǎn),希望大家可以好好的學(xué)習(xí)下。
【編輯推薦】