在Linux作業系統上編譯測試指令碼檔案或者應用程式的時候,往往需要不滿足只是將結果輸出到螢幕上,而是希望能夠將運行結果、錯誤資訊、警告資訊等等儲存在一個檔案中,以方便系統管理員進行分析與調整。雖然這也可以通過螢幕截屏或者螢幕錄影來完成,但是這得到的結果處理起來很不方便。如不方便查詢、不能夠過濾等等。為瞭解決這個問題,在Linux系統中提供了一個重新導向的工具。在編程調試的過程中,可以利用重新導向操作來儲存可執行檔的輸出結果。
一、將輸入輸出分別重新導向到不同的檔案。
在程式調試時,螢幕上的資訊大致可以分為兩部分,分別為使用者的輸入與程式的輸出。有時候系統管理員在儲存指令碼程式輸出結果的同時,還是希望能夠儲存使用者的輸入。只有如此,事後才能夠將輸入與輸出進行比較,來判斷是否是使用者輸入來不合法的參數所導致問題的出現。要事先這個需求的話,就需要使用如下的命令:應用程式名稱字 >輸出檔案<輸入檔案。在使用這個這個命令的時候,主要需要注意以下幾點。
一是要注意重新導向的符號。重新導向符號方向不同,其代表的含義也是不同的。如>符號表示輸出,即會將指令碼程式的輸出內容儲存到其後面定義的檔案中。而符號<則表示輸入,即將使用者的輸入儲存到其後面指定的檔案中。如果這個符號寫錯的話,那麼其輸入輸出的內容儲存位置就會出現錯誤。不過這個文法沒有問題,只是儲存的地方相反了。
二是這些檔案如果事先不存在的話,那麼系統會自動建立這些檔案。但是如果存在的話,則系統會將原先的檔案覆蓋掉。為此如果管理員在測試指令碼程式的時候,如果需要儲存原先的結果,那麼就需要將其儲存在不同的檔案中。或者採用另外的符號,不覆蓋原有的記錄,而只是進行追加。如可以利用>>符號來代替>。利用兩個>>符號在Linux系統中表示檔案的追加。如此的話,即使原先的檔案存在,系統也不會把記錄覆蓋掉,而是把輸出結果儲存在原先的記錄下面。如此的話,系統管理員可以將前後的輸出結果進行對比,從而更有利於找出問題的原因。
不過無論採取覆蓋還是替換操作,都需要注意一個檔案。利用重新導向符號在記錄使用者輸出或者輸入內容的時候,需要注意一個問題,即如果應用程式輸出的是一些圖形介面,那麼這個重新導向符號將無法儲存這些資訊。此時只有用過螢幕截屏或者螢幕錄影等手段才能夠將這些圖形的介面。另外如果不指定檔案路徑的話,則系統會預設在目前的目錄下建立這些檔案並儲存資訊。如果系統管理員想在指定目錄下儲存資訊的話,則可以在上面的檔案名稱前面加上路徑。在這個命令中,即支援決定路徑也支援相對路徑。如可以使用$HOME/檔案名稱的方式,將輸出或者輸入結果儲存在使用者的主目錄下。