歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> /dev/tty文件在Unix操作系統中的妙用

/dev/tty文件在Unix操作系統中的妙用

日期:2017/2/28 16:47:34   编辑:Linux教程

在Unix系統中,文件是其中最重要的資源。如標准輸出文件、標准輸入文件、標准錯誤文件等等。不過這些文件普通用戶與系統工程師都需要用到。而在實際工作中,對於系統工程師來說,還需要掌握/dev/tty這個文件。

  這個文件顧名思義,主要用來表示用戶的終端,但是它跟普通的終端又有差異。普通的終端是指一些硬件設備,如顯示器等等。通常情況下,標准輸出或者標准錯誤流的文件都會輸出到終端中。但是,這些標准的輸入輸出往往不能夠輸入到/dev/tty文件中。而是需要通過重定向功能,把一些命令的輸出重定向到這個文件中。另外需要說明的是,普通終端的話往往是每個用戶之間相互獨立的。也就是說,每個用戶的輸出彼此之間是互不干涉的。在用戶A的終端中不能夠看到用戶B的終端信息。但是/det/tty這個文件由其特殊性。這個終端文件可以由各個用戶共享。正是因為這個文件有這方面的特殊性,為此在實際工作中系統工程師經常需要用到這個文件。

  一、系統工程師常見需求描述及實現方案。

  利用這個特殊文件,可以幫助系統工程師解決很多實際問題。

  1、利用這個文件來屏蔽不需要的結果信息。通常情況下,為了提高與用戶溝通界面的友好性,往往會在腳本程序中,利用echo命令向用戶顯示一些提示信息。如一個簡單的計算器腳本程序,會提示用戶輸入相關的參數,如“Put one number”等等。有時候,還會在程序的開頭顯示一大堆的程序說明。這毋庸置疑,可以提高腳本程序的可讀性。即方便了用戶的使用,而且別的系統工程師借助這些說明也可以順利對其進行功能上的調整與擴展。不過這也會贊成一些工作上的困擾。如當系統工程師調試腳本程序的時候,這些顯示的提示信息反而會增加系統工程師的困擾,會增加他們的閱讀量。因為此時用戶終端上顯示的將士全部的信息,即包括對於應用程序沒有實際價值的提示信息,也包括一些應用程序執行過程中的錯誤信息。這顯然會給系統工程師閱讀錯誤信息帶來一定的麻煩。另外如筆者談過,系統工程師可以通過重定向符號把這個終端輸出的信息重定向到一個文件中。可是此時這個文件中也會顯示全部的信息。而這些信息大部分是系統工程師不需要看到的。系統工程師可能只需要一些相關的參數以及具體的執行結果。如10*10=100。就這麼簡單,而不需要看到一大堆的提示說明。而且如果這個文件中帶有這麼多的無用信息,對於其他腳本程序來調用這個文件也不是很方便。遇到這種情況時該如何處理呢?其實系統工程師可以輕松的通過/dev/tty文件來過濾這些無用的提示信息。如只需要把腳本程序的運行結果通過重定向服務重定向到/dev/tty文件中。在這個重定向的過程中,Unix系統的shell會采取一定的內部處理機制,會忽略掉echo等命令。也就是說,只要把命令的標准輸出重定向到這個文件中,則利用echo命令設置的一些提示信息都會被忽略掉。此時在這個文件中,存儲的只有一些必要的運行信息,如錯誤或者警告信息等等。

  2、當作其他命令的參數。/dev/tty文件不僅可以用作終端設備來管理,而且這個文件還可以被用來當作其他命令的參數。因為一個終端就相當於一個文件,為此在一些命令中如tee命令就可以拿這個文件當作參數。Tee命令是一個分流命令,其主要用途就是把一個輸入流的一個副本保存到另外一個文件中。有時候這個特性非常有用。如現在系統工程師需要利用who命令來顯示Unix系統的當前登錄用戶。同時希望把這個顯示結果保存到一個特定的文件中。如果沒有tee這個命令的話,則需要通過兩個步驟才能夠完成。首先需要利用who命令在當前終端中顯示相關的結果。然後再利用who >重定向符號把這個命令的顯示結果保存到一個特定的文件中。如果一開始就采用who >進行重定向的話,則在用戶終端將不會顯示任何信息。因為其直接把結果保存到了一個文件中。而現在系統工程師即希望把命令的結果輸出到終端中,同時保存到一個文件中,就需要利用tee命令,如who | tee userinfo.txt。(注意,如果利用了tee命令的話,在可以不再使用重定向符號)。到這裡為止沒有涉及到/dev/tty這個文件。who | tee userinfo.txt這個命令的顯示結果,只會顯示當前登錄的用戶明細,而不會顯示當前有多少個用戶登錄到系統中。可能或許有人回說只要數一下就可以了呀。確實數數的話可以實現,但是計算機不會自己數呀。如果其他腳本程序需要用到當前登錄用戶的總數而不需要明細,那麼該如何處理呢?此時就需要利用/dev/tty文件作為參數了。如可以使用who | tee /dev/tty |wc –l 命令。這個命令可以把當前用戶的明細以及總共的用戶數量顯示出來。以上這個命令其實我們可以分為四個步驟。第一步系統先執行who命令;第二步tee命令把who命令執行對結果保存到/dev/tty文件中;第三步wc命令會統計/dev/tty文件中的行數。由於一個終端對相當於一個文件,故利用wc命令可以統計出當前系統登錄用戶的數量。第四步再把這個統計的結果顯示在終端上。所以說,把/dev/tty文件當作其他命令的一個參數,一個一起組合以實現一些比較復雜的功能。

Copyright © Linux教程網 All Rights Reserved