基礎命令學習目錄首頁html
原文連接:http://blog.chinaunix.net/uid-9525959-id-2001836.htmllinux
[功能] shell
打印鏈接到標準輸入的終端的文件名。 ubuntu
[描述] windows
命令項: 網絡
-s, --silent, --quiet: 什麼也不打印,只是返回退出狀態碼。 post
--help: 打印幫助信息。 學習
--version: 打印版本信息並退出。 ui
返回的狀態碼: spa
0 表示標準輸入是一個終端。
1 表示標準輸入不是一個終端。
2 表示給定的參數是不正確的參數。
3 表示發生了寫錯誤。
[舉例]
*查看當前的標準終端文件描述符號:
[quietheart@lv-k etc]$ tty
/dev/pts/6
這裏,輸入tty以後,輸出"/dev/pts/6"就是當前鏈接的終端對應的文件描述符號,咱們能夠經過向這個文件,這樣會看到當前終端會輸出咱們寫入的數據,例如:
[quietheart@lv-k etc]$ echo "mytest" >/dev/pts/6
mytest
可見,向/dev/pts/6文件寫入的內容,直接顯示到咱們的終端上面了。若是我在機器上面開了多個終端,而後我在別的終端中輸入上面的echo命令,那麼將會看到對應"/dev/pts/6"的終端上面會顯示相應的字符了。
*運行tty什麼也不輸出,而後查看其退出碼:
[quietheart@lv-k etc]$ tty -s
[quietheart@lv-k etc]$ echo $?
0
這裏,使用shell的命令"echo $?"來顯示上一條命令的退出狀態碼。狀態碼的含義以下:
0 表示標準輸入是一個終端。
1 表示標準輸入不是一個終端。
2 表示給定的參數是不正確的參數。
3 表示發生了寫錯誤。
[其它]
*基本概念:
1,tty(終端設備的統稱):
tty一詞源於Teletypes,或者teletypewriters,原來指的是電傳打字機,是經過串行線用打印機鍵盤經過閱讀和發送信息的東西,後來這東西被鍵盤與顯示器取代,因此如今叫終端比較合適。終端是一種字符型設備,它有多種類型,一般使用tty來簡稱各類類型的終端設備。
2,pty(虛擬終端):
若是咱們遠程telnet到主機或使用xterm時,也須要一個終端交互,這就是虛擬終端pty(pseudo-tty)
3,pts/ptmx(pts/ptmx結合使用,進而實現pty):
pts(pseudo-terminal slave)是pty的實現方法,與ptmx(pseudo-terminal master)配合使用實現pty。
*Linux終端:
在Linux系統的設備特殊文件目錄/dev/下,終端特殊設備文件通常有如下幾種:
1,串行端口終端(/dev/ttySn)
串行端口終端(Serial Port Terminal)是使用計算機串行端口鏈接的終端設備。計算機把每一個串行端口都看做是一個字符設備。有段時間這些串行端口設備一般被稱爲終端設備,由於那時它的最大用途就是用來鏈接終端。這些串行端口所對應的設備名稱是/dev/tts/0(或/dev/ttyS0), /dev/tts/1(或/dev/ttyS1)等,設備號分別是(4,0), (4,1)等,分別對應於DOS系統下的COM一、COM2等。若要向一個端口發送數據,能夠在命令行上把標準輸出重定向到這些特殊文件名上便可。例如,在命令行提示符下鍵入:echo test > /dev/ttyS1會把單詞」test」發送到鏈接在ttyS1(COM2)端口的設備上。可接串口來實驗。
2,僞終端(/dev/pty/)
僞終端(Pseudo Terminal)是成對的邏輯終端設備(即master和slave設備, 對master的操做會反映到slave上)。
例如/dev/ptyp3和/dev/ttyp3(或者在設備文件系統中分別是/dev/pty/m3和 /dev/pty/s3)。它們與實際物理設備並不直接相關。若是一個程序把ptyp3(master設備)看做是一個串行端口設備,則它對該端口的讀/ 寫操做會反映在該邏輯終端設備對應的另外一個ttyp3(slave設備)上面。而ttyp3則是另外一個程序用於讀寫操做的邏輯設備。
這樣,兩個程序就能夠經過這種邏輯設備進行互相交流,而其中一個使用ttyp3的程序則認爲本身正在與一個串行端口進行通訊。這很象是邏輯設備對之間的管道操做。對於ttyp3(s3),任何設計成使用一個串行端口設備的程序均可以使用該邏輯設備。但對於使用ptyp3的程序,則須要專門設計來使用 ptyp3(m3)邏輯設備。
例如,若是某人在網上使用telnet程序鏈接到你的計算機上,則telnet程序就可能會開始鏈接到設備 ptyp2(m2)上(一個僞終端端口上)。此時一個getty程序就應該運行在對應的ttyp2(s2)端口上。當telnet從遠端獲取了一個字符時,該字符就會經過m二、s2傳遞給 getty程序,而getty程序就會經過s二、m2和telnet程序往網絡上返回」login:」字符串信息。這樣,登陸程序與telnet程序就經過「僞終端」進行通訊。經過使用適當的軟件,就能夠把兩個甚至多個僞終端設備鏈接到同一個物理串行端口上。
在使用設備文件系統 (device filesystem)以前,爲了獲得大量的僞終端設備特殊文件,使用了比較複雜的文件名命名方式。由於只存在16個ttyp(ttyp0—ttypf) 的設備文件,爲了獲得更多的邏輯設備對,就使用了象q、r、s等字符來代替p。例如,ttys8和ptys8就是一個僞終端設備對。不過這種命名方式目前仍然在RedHat等Linux系統中使用着。
但Linux系統上的Unix98並不使用上述方法,而使用了」pty master」方式,例如/dev/ptm3。它的對應端則會被自動地建立成/dev/pts/3。這樣就能夠在須要時提供一個pty僞終端。目錄 /dev/pts是一個類型爲devpts的文件系統,而且能夠在被加載文件系統列表中看到。雖然「文件」/dev/pts/3看上去是設備文件系統中的一項,但其實它徹底是一種不一樣的文件系統。
即: TELNET ---> TTYP3(S3: slave) ---> PTYP3(M3: master) ---> GETTY
*實踐:
如下過程是在ubuntu上面的實踐結果。
1,虛擬終端/dev/tty*和僞終端/dev/pts/*:
假設5個xterm終端的話,會發現/dev下面有一個/dev/ptmx /和5個/dev/pts/*
而若是用"[Ctrl][Alt]F1"進入一個終端的話,就會發現/dev下面多出一個/dev/tty1
2,查看終端的方法:
使用命令"tty"能夠查看當前對應的終端,命令"ps -ax"能夠查看全部程序以及對應的終端。經過這個命令,發現若是多開一個screen程序,或者用telnet登錄以後,那麼機器上面就會多一個/dev/pts/*。可知,通常僞終端用戶模擬終端程序。
3,向指定終端發送信息:
若是運行"echo hello >/dev/tty2",
那麼"[Ctrl][Alt]F2"打開"/dev/tty2"對應的終端,就會發現剛纔發送的hello了。
注意,若是發送"echo -n ls >/dev/tty2"那麼會顯示ls,可是回車以後,並無執行ls。可見:ttyN是表明linux的純命令行終端,而寫到這個終端的字符串只是作爲這個終端的輸出,並無當作終端的輸入處理。
若是運行"echo hello >/dev/pts/2",
那麼,就能夠在xterm的第二個窗口看到hello了。可知,/dev/pts/n是Xwindows模式下的僞終端.
參考資料:
http://blog.csdn.net/freeman1975/archive/2009/10/19/4696781.aspx
"info tty"
"man tty
[功能]
打印鏈接到標準輸入的終端的文件名。
[描述]
命令項:
-s, --silent, --quiet: 什麼也不打印,只是返回退出狀態碼。
--help: 打印幫助信息。
--version: 打印版本信息並退出。
返回的狀態碼:
0 表示標準輸入是一個終端。
1 表示標準輸入不是一個終端。
2 表示給定的參數是不正確的參數。
3 表示發生了寫錯誤。
[舉例]
*查看當前的標準終端文件描述符號:
[quietheart@lv-k etc]$ tty
/dev/pts/6
這裏,輸入tty以後,輸出"/dev/pts/6"就是當前鏈接的終端對應的文件描述符號,咱們能夠經過向這個文件,這樣會看到當前終端會輸出咱們寫入的數據,例如:
[quietheart@lv-k etc]$ echo "mytest" >/dev/pts/6
mytest
可見,向/dev/pts/6文件寫入的內容,直接顯示到咱們的終端上面了。若是我在機器上面開了多個終端,而後我在別的終端中輸入上面的echo命令,那麼將會看到對應"/dev/pts/6"的終端上面會顯示相應的字符了。
*運行tty什麼也不輸出,而後查看其退出碼:
[quietheart@lv-k etc]$ tty -s
[quietheart@lv-k etc]$ echo $?
0
這裏,使用shell的命令"echo $?"來顯示上一條命令的退出狀態碼。狀態碼的含義以下:
0 表示標準輸入是一個終端。
1 表示標準輸入不是一個終端。
2 表示給定的參數是不正確的參數。
3 表示發生了寫錯誤。
[其它]
*基本概念:
1,tty(終端設備的統稱):
tty一詞源於Teletypes,或者teletypewriters,原來指的是電傳打字機,是經過串行線用打印機鍵盤經過閱讀和發送信息的東西,後來這東西被鍵盤與顯示器取代,因此如今叫終端比較合適。終端是一種字符型設備,它有多種類型,一般使用tty來簡稱各類類型的終端設備。
2,pty(虛擬終端):
若是咱們遠程telnet到主機或使用xterm時,也須要一個終端交互,這就是虛擬終端pty(pseudo-tty)
3,pts/ptmx(pts/ptmx結合使用,進而實現pty):
pts(pseudo-terminal slave)是pty的實現方法,與ptmx(pseudo-terminal master)配合使用實現pty。
*Linux終端:
在Linux系統的設備特殊文件目錄/dev/下,終端特殊設備文件通常有如下幾種:
1,串行端口終端(/dev/ttySn)
串行端口終端(Serial Port Terminal)是使用計算機串行端口鏈接的終端設備。計算機把每一個串行端口都看做是一個字符設備。有段時間這些串行端口設備一般被稱爲終端設備,由於那時它的最大用途就是用來鏈接終端。這些串行端口所對應的設備名稱是/dev/tts/0(或/dev/ttyS0), /dev/tts/1(或/dev/ttyS1)等,設備號分別是(4,0), (4,1)等,分別對應於DOS系統下的COM一、COM2等。若要向一個端口發送數據,能夠在命令行上把標準輸出重定向到這些特殊文件名上便可。例如,在命令行提示符下鍵入:echo test > /dev/ttyS1會把單詞」test」發送到鏈接在ttyS1(COM2)端口的設備上。可接串口來實驗。
2,僞終端(/dev/pty/)
僞終端(Pseudo Terminal)是成對的邏輯終端設備(即master和slave設備, 對master的操做會反映到slave上)。
例如/dev/ptyp3和/dev/ttyp3(或者在設備文件系統中分別是/dev/pty/m3和 /dev/pty/s3)。它們與實際物理設備並不直接相關。若是一個程序把ptyp3(master設備)看做是一個串行端口設備,則它對該端口的讀/ 寫操做會反映在該邏輯終端設備對應的另外一個ttyp3(slave設備)上面。而ttyp3則是另外一個程序用於讀寫操做的邏輯設備。
這樣,兩個程序就能夠經過這種邏輯設備進行互相交流,而其中一個使用ttyp3的程序則認爲本身正在與一個串行端口進行通訊。這很象是邏輯設備對之間的管道操做。對於ttyp3(s3),任何設計成使用一個串行端口設備的程序均可以使用該邏輯設備。但對於使用ptyp3的程序,則須要專門設計來使用 ptyp3(m3)邏輯設備。
例如,若是某人在網上使用telnet程序鏈接到你的計算機上,則telnet程序就可能會開始鏈接到設備 ptyp2(m2)上(一個僞終端端口上)。此時一個getty程序就應該運行在對應的ttyp2(s2)端口上。當telnet從遠端獲取了一個字符時,該字符就會經過m二、s2傳遞給 getty程序,而getty程序就會經過s二、m2和telnet程序往網絡上返回」login:」字符串信息。這樣,登陸程序與telnet程序就經過「僞終端」進行通訊。經過使用適當的軟件,就能夠把兩個甚至多個僞終端設備鏈接到同一個物理串行端口上。
在使用設備文件系統 (device filesystem)以前,爲了獲得大量的僞終端設備特殊文件,使用了比較複雜的文件名命名方式。由於只存在16個ttyp(ttyp0—ttypf) 的設備文件,爲了獲得更多的邏輯設備對,就使用了象q、r、s等字符來代替p。例如,ttys8和ptys8就是一個僞終端設備對。不過這種命名方式目前仍然在RedHat等Linux系統中使用着。
但Linux系統上的Unix98並不使用上述方法,而使用了」pty master」方式,例如/dev/ptm3。它的對應端則會被自動地建立成/dev/pts/3。這樣就能夠在須要時提供一個pty僞終端。目錄 /dev/pts是一個類型爲devpts的文件系統,而且能夠在被加載文件系統列表中看到。雖然「文件」/dev/pts/3看上去是設備文件系統中的一項,但其實它徹底是一種不一樣的文件系統。
即: TELNET ---> TTYP3(S3: slave) ---> PTYP3(M3: master) ---> GETTY
*實踐:
如下過程是在ubuntu上面的實踐結果。
1,虛擬終端/dev/tty*和僞終端/dev/pts/*:
假設5個xterm終端的話,會發現/dev下面有一個/dev/ptmx /和5個/dev/pts/*
而若是用"[Ctrl][Alt]F1"進入一個終端的話,就會發現/dev下面多出一個/dev/tty1
2,查看終端的方法:
使用命令"tty"能夠查看當前對應的終端,命令"ps -ax"能夠查看全部程序以及對應的終端。經過這個命令,發現若是多開一個screen程序,或者用telnet登錄以後,那麼機器上面就會多一個/dev/pts/*。可知,通常僞終端用戶模擬終端程序。
3,向指定終端發送信息:
若是運行"echo hello >/dev/tty2",
那麼"[Ctrl][Alt]F2"打開"/dev/tty2"對應的終端,就會發現剛纔發送的hello了。
注意,若是發送"echo -n ls >/dev/tty2"那麼會顯示ls,可是回車以後,並無執行ls。可見:ttyN是表明linux的純命令行終端,而寫到這個終端的字符串只是作爲這個終端的輸出,並無當作終端的輸入處理。
若是運行"echo hello >/dev/pts/2",
那麼,就能夠在xterm的第二個窗口看到hello了。可知,/dev/pts/n是Xwindows模式下的僞終端.
參考資料:
http://blog.csdn.net/freeman1975/archive/2009/10/19/4696781.aspx
"info tty"
"man tty