2010-09-15 157 views
3

我是UNIX新手,在閱讀關於UNIX的書時,遇到以下兩個我不明白的問題。我將衷心感謝您的幫助。UNIX tty命令和文件命令?

1)查找文件命令的手冊頁,然後將其用於/ dev目錄中的所有文件。你可以將這些文件分爲兩類嗎?

2)運行tty命令,並記下終端的設備名稱。現在在命令cp/etc/passwd/dev/pts/6中使用此設備名稱(/ dev/pst/6)。你觀察到什麼?

+0

你能解釋一下你的DID和DID不理解這些問題嗎? – 2010-09-15 11:36:38

+0

這個問題有答案。只需按照上述步驟操作。 – codaddict 2010-09-15 11:38:37

+1

感謝您的快速回復。關於第一個問題,我甚至不知道問題在問什麼,我應該分成兩類。關於第二個問題,當我按照其提到的步驟進行操作時,它會輸出許多我不瞭解的信息。 – 2010-09-15 11:50:46

回答

10

公平的問題真的......對我們來說這很容易讓人理所當然。

要閱讀手冊頁稱爲file,只需鍵入命令

man file 

...這將呈現大量的信息可能會相當混亂,但你會習慣如果你堅持的話,這件事情會很快。重要的是,file是一個程序,它試圖對你要求的文件進行分類。如果您鍵入......

file /dev/* 

...,會做什麼提出這樣的問題,並調用文件,在/ dev /子目錄中的文件列表。該列表實際上是由您輸入的「shell」程序準備的,然後執行文件程序並將它傳遞給列表。然後file輸出文件的一些描述。在我的電腦,並在[SHELL-PROMPT]將不同計算機上,我輸入文件/ dev/*和輸出的部分看起來像:

[SHELL-PROMPT] file /dev/* 
...lots of stuff... 
/dev/cevt:  character special (255/176) 
/dev/console: character special (5/1) 
/dev/core:  symbolic link to `/proc/kcore' 
/dev/cpqci:  character special (10/209) 
/dev/cpqhealth: directory 
/dev/crom:  character special (255/180) 
...lots of stuff... 
/dev/md8:  block special (9/8) 
/dev/md9:  block special (9/9) 
/dev/mem:  character special (1/1) 
/dev/mice:  character special (13/63) 
/dev/mouse0: character special (13/32) 
/dev/mptctl: character special (10/220) 
/dev/net:  directory 
/dev/nflog:  character special (36/5) 
/dev/null:  character special (1/3) 
/dev/parport0: character special (99/0) 
...lots of stuff... 

有每個目錄/文件組合的文件系統條目(被稱爲路徑),文件正在描述右側的內容。這些描述可能沒有多大意義,但是您可以看到一些模式:某些條目是「特殊塊」,其他條目是「特殊字符」,其他條目是指您可能在其下找到更多文件的目錄(即ls /dev/net/*)。 「特殊」文件後面的數字就是操作系統標識符,用於區分上述文件。這樣的輸入是使得連接到計算機的一些設備的輸入和輸出成爲可能,就好像該設備是文件系統中的文件一樣。這個「文件」抽象被用作輸入和輸出的一般模型。因此,例如/ dev/tty是tty - 或終端設備。您嘗試從那裏讀取的任何數據實際上都會從您用來鍵入shell的鍵盤上取得(在簡單的情況下),並且您在其中輸入的任何內容都會在您輸入的同一終端中顯示。/dev/null是另一個有趣的特性:你可以讀寫數據,但它實際上從來沒有提供數據(只是表示和文件結束條件,並拋出寫入其中的任何數據)。您可以繼續閱讀/ dev/random,每次都會產生隨機值...如果您需要隨機數或文件內容進行加密或進行某種統計工作,那麼可以這麼做。

2)運行tty命令,並注意終端的設備名稱爲 。現在在 命令cp/etc/passwd/dev/pts/6中使用 這個設備名稱(/ dev/pst/6)。 你觀察到什麼?

通過輸入「tty」,您可以請求代表終端的設備...

[SHELL-PROMPT] tty 
/dev/pts/11 

但是,我剛纔說的/ dev/tty的是同一件事的另一個名字,所以通常沒有必要使用「TTY」節目找到這個更具體的名稱。但是,如果您爲主機創建了一對終端窗口,並在每個窗口中鍵入tty,您將看到每個shell都連接到了不同的僞終端設備。儘管如此,每個shell和從shell運行的程序都可以在默認情況下將其自己的終端輸入和輸出設備稱爲/ dev/tty ...這是一個方便的上下文相關名稱。其中可以使用任何你TTY程序確實報告(如在我的情況11)更換6命令

cp /etc/passwd /dev/pts/6 

...,做同樣的事情......

cp /etc/passwd /dev/tty 

。 ..它只是讀取文件/ etc/passwd的內容並將它們寫在屏幕上。現在,問題在於,/ etc/password看起來像是一般人無法理解的垃圾 - 難怪你無法理解發生了什麼。試試這個...

echo "i said hello" > /tmp/hello.file 
cp /tmp/hello.file /dev/tty 

...你將看到如何將一些特定的,可識別的內容到一個新文件(在這種情況下,把它在TMP「臨時」目錄(該文件將在你重新啓動你的電腦時消失),然後將該文件的內容複製回你的屏幕上

(如果你在兩個終端窗口中登錄,你甚至可以進入一個shell並將文件複製到/ dev/pts/NN設備報告,有效地發送消息到另一個窗口,你甚至可以繞過文件和echo 'boo' > /dev/tty/NN。如果同一個用戶標識登錄到兩個窗口,你將只有這樣做的權限。)

+0

非常感謝你的完美解釋和你的時間。這非常有幫助。謝謝。 – 2010-09-15 16:26:24

+0

不客氣......祝你好運。 – 2010-09-15 17:56:18