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