
Introduction to Linux
By 小黑
目錄
- What's Linux?
- Linux Distros
- Virtual Machine
- Linux Commands
What's Linux
作業系統
什麼是作業系統 (OS) ?
- 使用者跟電腦的橋樑,也是電腦最重要的軟體
- 負責管理電腦的資源(e.g. 記憶體、CPU)
- 使用者發送指令給 OS,OS 再讓電腦執行
常見的作業系統
Windows


macOS

iOS

Android
還有今天的主角

Linux
Linux 簡介
Linux
- 全稱 GNU/Linux
- 開發者為 Linus Torvalds (記住這名字)
- Windows 和 macOS 以外最多人用的 OS
- Open Source

(吉祥物 Tux)

Linus Torvalds
- 芬蘭程式設計師
- Linux 創世神
為什麼學 Linux
- 77% 的 server 使用 Linux
所以如果你未來走資訊這條路,一定得學 Linux
- 對程式開發工具的支援
多數工具都會原生支援 Linux ,因此速度會比 Windows 快
- 完全免費
Windows 11 Pro 要快七千塊,該換 Linux 了ㄅ
- 更安全
Windows 跟 macOS 都閉源,你無法知道他們偷偷塞了啥
何況 Microsoft 跟 Apple 都有前科
還有,Linux 可以改的真的很帥!




(這真的不是 Windows 7,這 Linux 改的)

(阿?)
Linux Distros
講明之前忽略的事
- Linux 不是一個作業系統
- Linux 只是一個 Kernel (內核)
- Kernel 好比是大腦,負責分配記憶體、CPU 等資源給作業 系統(人)的其他組件(比如手、腿)
- 只有 Kernel (大腦)是完全不夠的,所以才需要其他組件
Linux Distros
- 剛剛提到,Linux 的 Source Code 可以隨意更改
- 因此出現了很多人(或公司)將 Linux Kernel 加上雜七雜 八的組件,設計出新的作業系統
- 這些作業系統統稱為 Linux Distros (Linux 發行版)
- 各個發行版的程式理論上都是通用的(因為用的 Kernel 都 是 Linux)
Distros 之間的區別
- 套件管理器
- 設計哲學
- 內建程式
- 更新模式(Stable/Rolling)
- 自由度
- 用途(Desktop/Server)
常見 Distros




Ubuntu
Debian
Linux Mint
Fedora
Arch Linux
EndeavourOS
Ubuntu
- 最多人用的 Distro,預設 App 不少
- Stable release
- 由 Debian 魔改而來,界面算友善
- 很多人罵但還是不少人用
- 套件管理器 為 apt

Debian
- 老但好用,穩定的選擇
- Stable release(可以五年不大更新)
- 偏難裝,但裝好可以很久不動
- 套件管理器 為 apt


Linux Mint
- 新手的好選擇,使用者體驗比 Ubuntu 好
- 由 Ubuntu 魔改而來,坑應該少很多
- Stable Release
- 套件管理器 為 apt


Fedora
- 背後有公司支援,相對坑少
- Rolling Release
- 界面好看,安裝很方便
- 套件管理器 為 dnf


Arch Linux
- 超級大坑,不要碰
- Rolling Release
- 上下限很高,由使用者決定
- 超級難裝,但自訂度超高
- 套件管理器 為 pacman
(這東西很神)

EndeavourOS
- 我推的發行版
- Rolling Release
- 由 Arch 改過來,省掉了麻煩的安裝
- 享有 Arch 的爽度和 Ubuntu 的易用
- 套件管理器 為 pacman


還有這堂要教的 Kali Linux!
Kali Linux
- 資安界神器,駭客挺愛用
- Stable Release
- 由 Debian 改過來,加了很多資安工具
- 裝了就可以自稱駭客
- 套件管理器 為 apt


Virtual Machine
Virtual Machine (VM)
- 一種讓你可以「在作業系統裡再裝一個作業系統」的軟體
- 使用上跟一般電腦差不多,有獨立的網路、硬碟、作業系統
- VM 裡的資料跟作業系統完全隔絕,即使 VM 中毒也沒差
- 一台電腦可以開多個 VM ,甚至可以在 VM 裡開 VM
為什麼需要 VM
- 測試軟體需要不同系統,拿實體電腦太麻煩又太貴
- 想嘗試不同系統,但直接灌太麻煩
- 直接開危險的檔案很危險,所以拿 VM 開
- VM 匿名性高,要搞事比較不容易被抓
常見 VM



VirtualBox
Parallels Desktop
VMWare
- 要錢
- 免費
- 要錢
- 據說有人拿來在 Mac 上裝 Windows
講師沒錢,所以教 VirtualBox
安裝 VirtualBox
- 去 VirtualBox 官網 載你作業系統支援的安裝檔
- 下載完打開無腦按下一步就裝好了
- 如果你遇到比如 Oracle VirtualBox 需要先安裝 Visual C++ 之類的問題,去這裡裝 Visual C++ (選 x64 的版本)
裝好打開會是這個界面:

裝 Kali
- 點 這裡 下載 Kali 做好的 VirtualBox 版
- 下載完後用 7-zip 解壓縮
- 然後直接開啟裡面的 .vbox 檔,會彈出 VirtualBox
- 接著點擊 Start 就可以開始用 Kali 了
- 預設帳號:Kali
- 預設密碼:Kali
打開之後長這樣

Linux Commands
Shell
Shell
OS
Hardware
常見 Shell

Bash
- 多數 Linux 預設 Shell
- 相容性最好

Zsh
- macOS 預設 Shell
- plugins 很多

Fish Shell
- 相對冷門的 Shell
- 但自動補全超好用
Commands
所有 command 的格式
ls -a ckeisc_44th
要執行的 command
選項(可選)
參數(由 command 決定)
常用指令 (1)
- whoami (顯示當前使用者)
- man (查看指令的幫助文檔)
- cd (切換資料夾)
- ls (顯示當前資料夾下的所有檔案和資料夾)
- pwd (印出當前路徑)
- mkdir (創建資料夾)
- rm (刪除檔案、資料夾)
- cp (複製檔案、資料夾)
- touch (確認一個檔案存不存在)
- mv (移動或重新命名檔案 or 資料夾)
- cat (輸出檔案內容)
- sudo (以 root 身份執行指令)
常用指令 (2)
- echo (輸出文字)
- grep (搜尋文件內的特定關鍵字)
- sort (輸出排序後的文字)
- vim (打開 vim 編輯器)
- apt (安裝程式)
whoami
whoami
作用:印出當前的使用者

man (manual)
man <command> # 查詢一個指令的用法
作用:查詢特定指令或程式的用法
男人,什麼罐頭我說,曼巴出去

pwd (print working directory)
pwd # 顯示當前路徑
作用:顯示當前路徑

ls (list)
ls # 列出當前路徑下的檔案和資料夾
參數
-a # 列出當前路徑下所有的檔案和資料夾(包含隱藏檔案)
-R # 列出當前路徑下所有的檔案和資料夾(包含資料夾內的)
-l # 列出詳細資訊
作用:列出當前路徑的資料夾和檔案

cd (change directory)
cd <dir> # 移動至目錄
cd .. # 移動到當前路徑上一層的資料夾
cd ~ # 移動到家目錄
作用:移動到特定路徑

mkdir (make directory)
mkdir <dir> # 創建資料夾
作用:創建資料夾

rm (remove)
rm <file> # 刪除檔案
參數
-i 刪除前確認,強烈建議每次用 rm 都加這個參數
-r 刪除資料夾和其中檔案
-f 刪除前一律不確認
作用:刪除檔案或資料夾

cp (copy)
cp <file1> <file2> # 將 file1 複製到 file2
參數
-r 複製資料夾和裡面的檔案
作用:複製檔案或資料夾

touch
touch <file> # 創建檔案或更改檔案被修改時間
作用:檢查檔案存不存在(不存在就創建檔案)

mv
mv <file> <folder> # 將檔案移到資料夾下
mv <file1> <file2> # 將 file1 改名成 file2
mv <dir1> <dir2> # 資料夾,同理
作用:重新命名 or 移動資料夾和檔案

cat (concatenate)
cat <file> # 印出檔案內容
作用:印出檔案內容

sudo (super user do)
sudo rm -rf <dir> # 強制刪除資料夾
作用:以管理員 (super user) 的身份執行指令
(謹慎使用!謹慎使用!謹慎使用!)

echo
echo "Hello World" # 輸出 Hello World
echo "Hello CKEISC" > hello.txt # 將 hello.txt 的內容改為 Hello CKEISC
echo "Hello FGISC" >> hello.txt # 在 hello.txt 的尾端加上 Hello FGISC
作用:輸出文字

grep
grep <text> <file> # 在 file 內尋找包含 text 的行
grep -r <text> <dir> # 在資料夾和其底下的資料夾和檔案內搜尋
作用:在文件裡搜尋特定關鍵字

sort
sort <file> # 將 file 內的文字排序後輸出
作用:輸出 (照 A - Z) 排序好的文字

Vim
vim <file>
作用:以 Vim 編輯器開啟檔案

Vim
- 編輯器之神
- 用習慣效率飛起,完全不用滑鼠
- 不知道為什麼建電很多學術愛用(?
模式
- Vim 最重要的概念
- 有點像開手排車,每個模式都能做的事不一樣
- 最重要的三個模式: Normal, Insert, Visual
- Normal Mode - 移動、基本操作
- Insert Mode - 寫東西
- Visual Mode - 選取模式
切換模式

(上屆建電學術長 807 做的圖,贊ㄟ)
按 v
按 i
按 esc
Normal Mode
- 一進來時的模式 (在 Visual or Insert Mode 下按 ESC 進入)
- 按 h/j/k/l (左/下/上/右)移動
- dd 刪除一行
- yy 複製一行
- p 貼上複製的內容
- :wq 存檔退出
- :q! 強制退出(! 代表強制)
Insert Mode
- Normal Mode 下按 i 進入
- 就,打字
Visual Mode
- Normal Mode 下按 v 進入
- 移動跟 Normal Mode 一樣
- 差別是每次移動都會選取文字
- y 複製
- d 刪除

2024 建中電研上學期大社課[4]——Linux
By Aaron Wu
2024 建中電研上學期大社課[4]——Linux
- 172