課程一:Terminal
2022年下學期,明新科技大學資管系
講師:胡嘉璽
課程重點
- 作業系統中的重要元件
- 什麼是UI,GUI
- 什麼是Terminal
- 什麼是shell,CLI
- 你為什麼要學CLI Shell
- 常見的Terminal
課程重點
- 作業系統中的重要元件
- 什麼是UI,GUI
- 什麼是Terminal
- 什麼是shell,CLI
- 你為什麼要學CLI Shell
- 常見的Terminal
常見的作業系統

你熟悉的作業系統

大部分的電腦是沒有UI的

作業系統的組成

作業系統中的元件說明
- 電腦的目的只是讓機器工作
- 人類和電腦溝通沒有必要性
- 大部分電腦都能「自洽」,不需要和人溝通
- 包括交通工具、衛星、家電、零組件、微電腦
- 在製造時已燒錄「控制」硬體的軟體
課程重點
- 作業系統中的重要元件
- 什麼是UI,GUI
- 什麼是Terminal
- 什麼是shell,CLI
- 你為什麼要學CLI Shell
- 常見的Terminal
什麼是UI
- 即使用者介面(User Interface)
- 必須有人類感官與之產生輸出、輸入與運作內容三方互動
- 雙向的資訊傳遞成為可能
- 輸入:允許使用者操作執行一套系統
- 輸出:允許系統向使用者傳達操作效果
- 感官式:和人類感官直接互動,如眼手互動,如GUI
- 邏輯式:需了解機器提供的邏輯,如語言式,DOS指令
什麼是UI

早期的UI

早期的UI

不一樣的UI

什麼是GUI
- 即圖形使用者介面(Grapic User Interface)
- 主要利用視窗對作業系統進行操作
- 1968年Douglas Carl Engelbart發明,使用滑鼠
- 1973年PARC正式推出
- 是目前所有電腦、手機GUI的始祖,之後50年也無太大變化
- 只需眼手協調,不需要了解OS的運作原理
- 包括Windows、MAC、Linux、iOS、Android
標準的視窗型使用者介面(NeXTSTEP)

擁有各種元件的UI

課程重點
- 作業系統中的重要元件
- 什麼是UI,GUI
- 什麼是Terminal
- 什麼是shell,CLI
- 你為什麼要學CLI Shell
- 常見的Terminal
什麼是Terminal
- 就是終端機,用於連線回主機操作的設備
- 本身只要有UI即可,不需有任何資源
- 早期大型系統時,多人可同時用終端機連回主機
- 提供多人多工使用
- 主機同時可有多人多用途
- 必須有UI,不見得有GUI
- 可透過鍵盤滑鼠、USB、網路、序列/串列埠連回主機
- 操作主機本身也是Terminal的一種,只是是透過鍵盤/螢幕連接而已
- 一般我們從本機操作的Terminal稱之為Terminal Emulator,就是在本機上模擬一個終端機
Terminal架構圖

GUI的Terminal

使用PC作為Terminal連入主機

課程重點
- 作業系統中的重要元件
- 什麼是UI,GUI
- 什麼是Terminal
- 什麼是shell,CLI
- 你為什麼要學CLI Shell
- 常見的Terminal
什麼是Shell

什麼是Shell
- 作業系統包括了許多核心功能
- 將這些核心功能提供給「其外」的應用,如人類,機器、軟體
- 由於他是整個OS的最外層,因此命名為Shell(殼)
- 代表核心裏面被Shell堅固地保護著
- UI是由Shell所提供的,GUI當然也是Shell提供
- 例如在Windows下,shell提供了文字介面的command prompt、PowerShell以及圖形介面的explorer.exe
什麼是CLI
- 全程為Command Line Interface,是UI的一種
- 用「邏輯式」的方法提供UI給使用者
- 由各式各樣的command(指令)所組成
- 使用者必須了解指令的使用文法,稱之為語法(Syntax)
- 相對於GUI,也稱之為CUI
- 必須對作業系統的運作有較深入的了解
- 一般的OS都會提供一個文字介面的shell給終端機使用
CLI的特點
- 比GUI難學,上手困難並不易操作
- 不同CLI的指令語法不見得一致,不同系統要學習不同的CLI,如Linux下的sh和Windows下的PowerShell就完全不同
- 不適用於多媒體及互動式操作
- 功能超級強大,速度比GUI快5-100倍
- 提供指令串接功能,可以把不同指令串接使用
- 大部分的OS都提供,不受硬體資源限制
- 可以自動化所有電腦操作
課程重點
- 作業系統中的重要元件
- 什麼是UI,GUI
- 什麼是Terminal
- 什麼是shell,CLI
- 你為什麼要學CLI Shell
- 常見的Terminal
你為什麼要學CLI Shell
- 省時、簡單、快速、強大、優雅、省功、掌控、安全、自動、穩定、直接
- 主機/伺服器管理中,95%的工作無法用GUI完成
- 大到建立雲端主機,小到執行一個單一程式
- 既然已經學程式語言,多學相對簡單的「程式」
- DevOps的興起,你必須什麼都會
- 自動化所有的事情
重新開機
- Windows:在桌面上按 alt-F4,用上下箭頭選擇「重新啟動」再按Enter
- 使用CLI:輸入
sudo reboot
然後Enter
開啟一個1000萬行的文字檔
- Windows:應該是沒辦法…

- 一般CLI:
vi <文字檔名>
照降冪排序一個1000萬行的文字檔
- Windows:用notepad++中應該有辦法

- 一般CLI:
sort -r < <文字檔名> > > <輸出檔名>
將一個1000萬行的文字檔去除重複行
- Windows:用notepad++中應該有辦法

- 一般CLI:
sort <文字檔名> | uniq > <輸出檔名>
常見的Terminal
- Linux的termnial:Terminal
- MacOS的terminal:iTerm, iTerm2、PowerShell
- Windows 10/11的terminal:Windows終端機
Ubuntu Linux Terminal

MacOS iTerm2

Windows 終端機(強烈推薦好用!)

終端機和Shell別弄混
- 終端機是一個UI,用來連上主機
- 可能是GUI、可能是CLI,也可能是VR,就是用來連上主機
- 連線方式都可以網路、USB、螢幕鍵盤、無線電、光波…
- 自己連到自己也可以用終端機
終端機和Shell別弄混
- Shell是作業系統的一個功能

- 可以從本機用UI或GUI透過Shell使用OS功能

- 也可以從終端機連上主機,再從Shell使用主機功能

- 「遠端連上主機的終端機」這句話是錯誤的描述。:X:
課程一:Terminal 2022年下學期,明新科技大學資管系 講師:胡嘉璽
{"metaMigratedAt":"2023-06-17T12:30:24.612Z","metaMigratedFrom":"YAML","title":"明新科大2022年ansible-1","breaks":true,"slideOptions":"{\"theme\":\"sky\",\"transition\":\"fade\"}","description":"作業系統中的重要元件","contributors":"[{\"id\":\"33d47e04-0bab-4c19-9d2f-fbbbae0b7706\",\"add\":6647,\"del\":1625}]"}