Terminal 和 Console 的區別是什麼?

這裡有老外的回復,不過我還是不明白
http://superuser.com/questions/144666/what-is-the-difference-between-shell-console-and-terminal


在古老的年代,一個機構可能只有一台主機,而機構的職員使用電傳印表機(Teletypewritter 又簡稱為tty)通過串口連接到主機。後來人們又在電傳印表機的基礎上進行了改進,程序的輸出不再是列印到紙帶上而是顯示在熒幕上,後來還支持彩色顯示,這樣的設備後來被稱為終端(Terminal)。一台主機可以有很多個終端,早期的主機只支持串口線的終端,對應的設備叫做串口終端(Serials Terminal),後來又發展出了偽終端,以便於支持GUI,後來串口終端漸漸被圖形界面的偽終端取代,也就是我們今天所說的終端。
但是在主機的系統啟動完成之前,終端是不能連接到主機上的。為了能記錄出主機開機過程的日誌,也便於在主機出故障無法啟動操作系統時進行檢修維護,有多了一個叫做控制台的設備。一台主機有且只能有一個控制台。文件主機的重要日誌,比如開機關機的日誌和記錄,重要應用程序的日誌,都會輸出到控制台來。


我是提問者,我對網上的這些答案很不滿意。終於找到了滿意的答案。
console:1. The operator"s station of a mainframe.
terminal:& An electronic or electromechanical device for entering data into a computer or a communications system and displaying data received. Early terminals were called teletypes, later ones VDUs.
現在用的都是引申義,所以基本可以混用。

參考資料:
http://dictionary.die.net/console
http://dictionary.die.net/terminal
http://en.wikipedia.org/wiki/Console
http://en.wikipedia.org/wiki/Computer_terminal#Text_terminals


記得一個例子:
拿控制電視機來說, console 相當於電視機機體上的控制面版,一般只有一個
terminal 相當於遙控器,可以有很多個


搞不懂那些深奧的理論 我就拿思科路由器來說……console 就是拿根console線插上去連電腦開軟體登錄打命令……而terminal就是先通過console連上設備後 配置好了的Telnet…只要連著網你就能遠程上去…… terminal 可以有很多個


專業知識不夠。僅從老外的這個回答中翻譯過來,理解理解,共同求大神給解答。
在這個老外的回答中,他指出:

1.SHELL就是計算機中那個執行指令、返回結果的程序。
2.一個TERMINAL是一個封裝程序,一個通過運行一個SHELL來擴充成一個具備SHELL的功能的程序。
3.而CONSOLE是一種特殊的TERMINAL。


我的理解是,PC上可以跑一個真正的terminal,但至多跑一個虛擬的console。
也就是說console是指一個真正的獨立設備,並且它可以起到terminal的作用。

而terminal是一個更抽象的概念。一副google眼睛、或者神經插管設備也可以是一個terminal。


以下是我的理解,如果有不對的地方,忘指出。

在早期,計算機由於比較昂貴,一個機構里的一台主機都是很多人共享的,前提是每個人都有一個鍵盤和顯示器,而這些鍵盤和顯示器就叫稱為終端。不過,有一種終端比較特殊,那就是主機自帶的鍵盤和顯示器,不需要連線的,它主要是給管理員管理系統的,它叫做控制台。

後來,每個人都有錢買得起自己的計算機了,沒有了共享,這兩個概念也不再有什麼區別,因為每個人都同時是系統管理員和用戶,當我們在管理系統的時候,鍵盤和顯示器是控制台,如果我們在使用系統,那它們就是終端。

所以慢慢地,終端和控制台也有原本的硬體概念演化成了軟體的概念。現在的終端和控制台指的是模擬軟體。我們可以把它們理解為可以輸入命令行並顯示程序運行過程中的信息以及程序運行結果的窗口。

可以參考這篇文章
你真的知道什麼是終端嗎? - Linux大神博客


首先,看一下兩者的翻譯:
console 控制台
terminal 終端
控制台是給管理員用的,終端是提供給用戶用的,當然管理員也可以使用終端來管理機器
一般來說,console只能有一個,通常是專門的console設備,或者顯示器,或者電腦用串口線連接也可以作為console
而terminal通常會有很多,這些概念源自於大型機(mainframe)所以我們現有的Linux以及Unix下所稱的console,terminal實際上都是虛擬大型機上的這兩個概念。


我不想貼這樣的答案,但是這答案的確比較清楚地回答了你的問題。
傳送門1:http://wenku.baidu.com/view/d0b4eeeb551810a6f52486b9.html
【Linux下的console和terminal】:Linux下控制台和終端的關係
傳送門2:http://wenku.baidu.com/view/44afc00b763231126edb1161.html
【linux下tty,控制台,虛擬終端,串口,console(控制台終端)詳解】
傳送門3:http://wenku.baidu.com/view/78b3702f7375a417866f8f8d.html
【關於終端和控制台的一些解釋】:linux.unix端和控制台的一些解釋


  我的理解哈!一台古老的電腦放在那裡,現在有七個TeleType(tty,我就叫它印表機吧),同時插到了這台古老的電腦上面,這七個印表機都是可以輸入東西,把數據傳到電腦,電腦再返回一些數據顯示到印表機的紙帶上面,只不過這個紙帶現在變成屏幕了。這幾個印表機就是真是存在的終端。

  而如今的一台筆記本,就假如它裝的是linux系統,默認它有且只有七個tty,也就是七個真的終端,也就是說可以把這台電腦想成只有七台真實存在的印表機連到了這台電腦上面。(linux將它虛擬化了),但事實上七個控制台並不夠,萬一八個人操作這個電腦呢?所以在七個真的終端(tty)下又有許多偽終端,也可以操作電腦。

  控制台一台電腦只有一個,就當他是物理真是存在的東西,在計算機內部。輸出到控制台,那就是指電腦返回了一段文字,這些文字輸出在控制台上面,只不過通過終端顯示給了用戶。

  shell的話,我覺得是用戶通過終端輸入一些命令,而這些命令計算機讀不懂,因此shell是一種解釋程序,它把用戶寫的命令,比如ls,翻譯成計算機能懂的二進位語言,計算機明白了就返迴文字,輸出到控制台,控制台再通過終端展現給用戶,這時終端就有了輸入輸出的功能。

  說的不對望大神指正


Terminal 終端,你可以把終端當作是普通的軟體操作頁面,比如Chrome瀏覽器的頁面,只是終端沒有圖形,是一堆文字的頁面。它從鍵盤接受輸入的信息,把shell處理過程的信息在輸出到屏幕。

但是你輸入信息後,具體應該如何處理呢?那麼這個就是shell的工作了,你可以把shell理解為程序。


跟樓主有同樣的疑問,因此特意看了Linux的實現。
Console是顯示printk列印信息的一種設備。
Terminal是一種字元設備,可以被當作Console用。

在《POSIX.1-2008》標準中有更準確的定義:

3.386 System Console

A device that receives messages sent by the syslog() function, and the fmtmsg() function when the MM_CONSOLE flag is set.
接收syslog和fmtmsg()函數發送的消息的設備。

3.395 Terminal (or Terminal Device)

A character special file that obeys the specifications of the general terminal interface.
一種符合general terminial介面規範的字元型特殊文件

Note: The General Terminal Interface is defined in detail in General Terminal Interface.
註:general terminal介面規範定義在《General Terminal Interface》章節


console是從應用程序的角度看的。terminal是從用戶的角度看的。

應用程序與console進行交互。用戶與terminal進行交互。

terminal可以不存在。


tty demystified 請搜索並深入閱讀。


其實我覺得吧,都是類似命令行的東西(至少從現在的角度看)
然後Unix/Linux(包括OS X)世界就習慣叫Terminal
至於Windows世界就習慣叫Console
就好比說,存放刪除的文件,Unix/Linux(包括OS X)叫Trash;Windows叫Recycle Bin


有一詞多義的考慮
console指的是遊戲機
為了不產生歧義,可以改用別的詞


大機時代的這些概念已經隨著設置本身性能和容量的發展而發生了改變,甚至是模糊了,再擺弄這些概念意義似乎已經不大了


terminal是終端,console是控制台


推薦閱讀:

如何讓我不再折騰 Linux?
為什麼 UNIX 下刪除一個目錄特別慢?
Windows 為什麼要有註冊表而 Unix 就不需要?
UNIX 文化中有哪些元素?

TAG:Linux | Ubuntu | Unix | Terminal軟體 |