一篇文章帶你快速弄清楚什麼是終端

来源:https://www.cnblogs.com/jfzhu/archive/2020/06/04/13040942.html
-Advertisement-
Play Games

Linux的使用者可能每天都會接觸到 Bash、Shell、控制台、終端。它們之間有什麼不同嗎?本文為你快速解釋這些概念以及它們的區別。 什麼是終端 首先我們來弄清楚什麼是終端(terminal)。按照百度百科的解釋是:“經由通信設施向電腦輸入程式和數據或接收電腦輸出處理結果的設備。” 聽起來似 ...


Linux的使用者可能每天都會接觸到 Bash、Shell、控制台、終端。它們之間有什麼不同嗎?本文為你快速解釋這些概念以及它們的區別。

  

什麼是終端

 

首先我們來弄清楚什麼是終端(terminal)。按照百度百科的解釋是:“經由通信設施向電腦輸入程式和數據或接收電腦輸出處理結果的設備。” 聽起來似乎有點晦澀,其實用台式PC機來舉例就很容易理解了。一臺台式機是由主機(機箱)和很多外圍設備組成的。主機裡邊包括主板、CPU、記憶體、硬碟、和其他晶元等等。外圍設備包括顯示器、滑鼠、鍵盤、耳機、麥克風、和攝像頭等等。這些外圍設備就被稱為終端,負責向主機輸入數據的就叫輸入終端,比如滑鼠、鍵盤、麥克風、攝像頭,負責接收主機輸出數據的設備就被稱作輸出終端,比如顯示器、耳機。

 

 

所以有兩個概念我們這裡就清楚了:

電腦 = 主機 + 終端

終端 = 輸入終端 + 輸出終端

  

終端的類型

 

終端,除了可以分為輸入終端與輸出終端外,還可以按照與主機的距離可以本地終端和遠程終端,或者按照與主機的連接方式分成物理終端和虛擬終端。

 

舉個例子,比如我們在杭州的某個機房裡有一臺伺服器,用VGA線接了一臺顯示器,用USB連接了鍵盤,那麼這台顯示器和這個鍵盤就是伺服器的本地終端。假如我們在隔壁機房用串口線又接了一個顯示器和鍵盤,那它們就可以稱為遠程終端。不管是在本地機房還是隔壁機房,因為這幾個終端和伺服器都是通過物理設備直接連接的,所以它們都被稱為物理終端。物理終端在 Linux中被標識為 tty。它是teletype的縮寫,因為在電腦早期的時候,Ken Thompson 和 Dennis Ritchie用電傳印表機作為他們  Unix 伺服器的終端(參考《Linux,Unix,GNU 到底有什麼樣的淵源?》),所以這個名字就這樣被沿用了下來。

 

假如我們在上海的家裡通過 ssh 遠程登陸杭州的伺服器,那麼我們在家中用的設備就是伺服器的遠程終端,也是一個虛擬終端(因為沒有與伺服器在本地用物理設備連接)。虛擬終端在 Linux 中用 pts (pseudo termial slave)來標識。用 who 命令可以查看當前登陸系統的用戶,以及他們所使用的終端類型。

 

 

什麼是控制台

 

控制台(console)與終端現在已經幾乎表示同一個意思了,但是在電腦發展的早期它們還是有本質區別的。最初,大型電腦(可能有幾間屋子那麼大)只有一個終端,被稱為”控制台“,而它真的是一個控制台,就像下麵這張圖這樣,有很多的儀錶和開關,技術人員就是通過它來對電腦發出指令。那個時候電腦雖然很大,但每次只能有一個人來操作,並且一次也只能運行一個程式。後來Ken Thompson 和 Dennis Ritchie發明瞭Unix,於是操作系統可以同時運行多個程式,並且支持多個用戶同時登陸。這樣一來,僅有一個控制台就顯得不夠了。因為控制台又很貴,所以 Ken Thompson 和 Dennis Ritchie就用了相對便宜的電傳打字機作為新增加的終端連接到他們的電腦上。雖然一臺電腦可以連接很多個終端,但這裡邊只能有一個控制台,並且控制台的許可權要遠大於其他的終端,比如當系統發生啟動錯誤時,只有控制台會顯示錯誤消息,而其他終端不會;或者當系統進入單用戶登陸模式時,只有通過控制台才能進行登陸,而通過其他終端沒有辦法登陸。所以如果用一句話來總結控制台與終端的區別,可以說控制台是電腦最早的以及許可權最大的一個終端。

 

  

什麼是 Shell 和 Bash

 

終端和主機雖然連接起來了,但是電腦還是需要一個程式才能明白我們輸入的命令,這個程式就是 Shell。我們的命令就是通過終端輸入到 Shell 里,再由 Shell 轉換成電腦明白的指令,然後電腦才能運行。

 Shell 有很多種,我們最常用的是 Bash,另外還有Csh, Ksh, Zsh等等。對於Bash,Linux的用戶應該每天都在使用,這裡就不再展開介紹了。

  

最後

 

控制台、終端、Shell、Bash 這些名詞經常被大家混淆,雖然今天在很多場合它們經常被替換使用,大家也都明白,不過希望通過本文大家可以弄清楚它們之間的區別和聯繫。

 

 

推薦閱讀:

《一篇文章看清楚 Linux 的職業發展方向》

《2020年你最需要掌握的11種編程語言》

《微軟:懸賞10萬美金破解 Linux 系統》

《安卓到底是不是Linux》

《在 Linux 系統中如何管理 systemd 服務》

《Linux的運行級別與目標》

《軟鏈接 vs. 硬鏈接》

 

 

 

掃碼關註公眾號獲取知識乾貨、增加面試經驗、瞭解程式人生


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 通過前面的學習我們應該熟練掌握了 QueryPage 查詢頁面模型 EditPage 編輯頁面模型 同時也掌握了,並不是一個頁面就只能是一個模型,可以是組合使用的情況 可以是 查詢+編輯的組合 也開是 查詢+查詢的組合 難道我們只有這兩種頁面模型嗎? 今天我們一起來學習我們開發中遇到的第三種頁面模型 ...
  • 敏捷開發框架初識組件式開發 可能這個叫法一定非常準確,但是的確實現了組件式的開發 那好吧,姑且就這麼叫吧 下麵講講這個頁面的由來: 首先我們提供了一個功能檢索的頁面,用於查詢所有的功能菜單 這個頁面的實現,QueryPage 太拿手了 查詢列表的所有功能全部搞定 點擊【編輯】或者雙擊進入編輯畫面 這 ...
  • 在複雜的頁面看看清問題的本質: 下麵的頁面,我說其實一部分是編輯頁面 好吧,我們一起來找到這個編輯頁面 我們通過實例來進一步分析 這個頁面是,用戶列表或者用戶編輯畫中點擊用戶【設置角色】彈出來的功能頁面 左側是待選擇的角色信息,右側是已經分配給 用戶的 角色信息 界面效果如下: 前面我們瞭解了兩個非 ...
  • 我們再次來一起研究下 QueryPage 查詢頁面模型 一般情況下我們遇到的比較多的,查詢模型就形如下圖的 查詢條件+查詢表格+分頁 的組合 圖一 下麵我們看下圖 圖二 我們先來找不同,非常明顯,就是一個是表格,一個是圖表 總的來講就是完全不同的內容 接著我們來找相同,都有一個查詢按鈕、都有清空 都 ...
  • 敏捷開發框架:編輯頁面模型 編輯頁面的開發: 下麵以用戶管理為例子,進行分析 如上圖,就是我們典型的編輯畫面 特點是:上面一排功能按鈕 中間是:表單 主要實現數據的編輯、載入、查看、保存、新增 等功能 頁面DOM結構如下: 從上到下依次看 eci-page-edit 表示當前頁面是編輯頁面 head ...
  • http://oa.ecidh.com/KMS/AppKMS/Article/article.aspx?id=KMS202000090&strToken=6d1dd74cb51040a2af69745595f326a7 敏捷開發框架:查詢頁面模型 查詢頁面的開發: 下麵以用戶管理為例子 打開效果如下 ...
  • 0. 前言 在上一篇文章中,我們初步介紹了asp.net core,以及如何創建一個mvc項目。從這一篇開始,我將為大家展示asp.net core 的各種內容,並且嘗試帶領大家來挖掘其中的內在邏輯。 當然,那是以後的事情。這一篇將通過自定義一個控制器來為大家介紹asp.net core mvc 中 ...
  • 用CMD或RUN指令運行命令時,如果直接在CMD或RUN指令後面接命令,這種方式通常會被解釋為啟動一個shell子進程運行命令,RUN指令表現形式就是後面的命令可以使用shell特性的語法格式的命令,比如大括弧展開等等;而CMD指令表現形式就是啟動為容器後,它預設會把我們指定運行的命令當作參數傳給... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...