今天,我們就來學習下如何利用轉義功能轉義功能來管理Unix操作系統元字符的問題。在Unix操作系統中有一類特殊的字符,叫做元字符。他們在系統中表示特殊的含義。如*號與?號,操作系統認為這些元字符是通配符。
如果在路經、文件名或者命令參數中有這些元字符的話,就會引起Unix操作系統的誤解。為此在系統中要采用一些方法,能夠讓操作系統將這些元字符當作普通字符來對待。
轉義功能的應用
其實轉義機制不僅僅在Unix操作系統上有,在其他的編程語言中也有類似的處理機制。如果各位讀者有程序開發經驗的話,那麼可能更加容易了解這個轉義功能。
簡單的說,轉義功能就是指在一些具有特殊含義的元字符前面加上一個轉義字符\,目的是告訴操作系統這是一個普通的字符,取消元字符的特殊意義。如*本來代表通配符,如ls *則表示所有的文件與目錄。而\*就是將*號當作一個普通的字符來對待,系統不會再認為其是一個通配符。
這個轉義功能的普通應用是比較簡單的,只需要在元字符前面加上\即可。不過筆者這裡還需要強調轉義字符的幾個特殊的應用。這些應用雖然比較特殊,普通用戶平時不怎麼用的到。但是對於系統工程師來說,這些功能可能就特別的有用。
一是需要在文件名中插入空格。如在微軟操作系統中有一個My Documents文件夾,其中間就有一個空格。這個空格在Unix系統中也屬於一個特殊的原字符。如果在建立文件或者目錄時,直接加入空格,則Unix操作系統會提示錯誤信息。
此時往往需要轉移字符的幫助。如使用命令mkdir My \ Documents,就可以建立中間帶有空格的目錄名。如要建立帶有空格的文件名,也是如此。不過需要注意是,如果在文件或者目錄中包含了元字符的話,那麼在使用刪除命令或者目錄定位命令的時候,也需要采用轉移字符來定義這些特殊的元字符,否則的話可能會出現一些莫名其妙的問題。
二是利用轉義字符對命令進行換行。在Unix操作系統中有些命令特別復雜,特別是那些部屬在Unix操作系統上的命令。如expdp是Oracle數據庫中的一個數據庫對象導出命令。雖然這個命令的功能很強大,但是可惜的是只有通過復雜的參數才能夠完成一些特定的功能。有時候一個命令需要好幾行才能夠寫完。雖然Unix操作系統提供了命令自動換行的方法。
但是這個自動換行的功能比較薄弱,如不會在Unix操作系統工程想要換行地方進行換行。為此采用這個自動換行的話,會造成代碼閱讀的困難。所以不少系統工程師還是希望能夠自己手工進行分行,在某些關鍵參數後面進行分行,以增加命令的可閱讀性。但是,如果直接使用回車鍵分行的話,系統是不認可的。因為這個回車鍵系統認為是一個執行命令的鍵。
即當系統工程師點擊回車鍵的時候,Unix操作系統會認為用戶已經將命令輸入完畢。鍵入回車鍵後系統就會自動運行這個命令。所以直接鍵入回車鍵往往不能夠完成命令分行的需求。此時就需要轉義字符的幫助。如現有一個命令比較長,工程師希望能夠將其分為兩行,主要是將參數-name後面的內容另起一行。
此時就可以在這個參數前面加入一個轉義字符\,然後再按回車鍵即可。由於有了這個轉義字符,Unix操作系統就會取消回車鍵的換行作用。如此操作之後,系統會出現一個次級提示符,這個次級提示符表示命令還沒有結束,下一行繼續。這個功能對於系統工程師來說,可能是非常實用的。因為此時系統工程師可以輕松的將一長串的命令根據自己的需要來進行分行,從而提高命令的可讀性。
另外需要注意的是,\這個轉義字符本身就是一個比較特殊的元字符。如果用戶想在命令或者文件名中使用這個\符號的話,也需要采用轉移字符。如用戶想利用echo或者printf命令顯示網址。在網址中就有很多\符號,此時就需要采用轉義字符來讓Unix操作系統將\符號當作普通字符來對待。
這樣,我們就學習了Unix操作系統中利用轉義功能來管理元字符的知識要點,希望大家可以好好的學習下。