---
# System prepended metadata

title: OS
tags: [2023 NISRA Enlightened]

---

OS by Salmon
===

:::danger
請愛惜共筆，勿進行惡意刪減
:::

:::info
【自己的電腦】
下載virtual box：https://www.virtualbox.org/wiki/Downloads
GUI介面(密碼 31197021)：
https://drive.google.com/file/d/1ahcHq6ftetiRv-1TX3Ko-vszy8hYwlh2/view?usp=drive_link

【學校電腦】
檔案在Z槽
因容量不夠只能用CLI
登入：
帳號：nisra
密碼：nisra
:::


## 甚麼是作業系統(OS)

作業系統運作原理圖
```mermaid
graph LR
U[user]--指令或動作-->S[shell]--syscall-->K[kernel]
K--回傳-->S--印出-->U
```

### 環境
Linux
VirtualBox
Ubuntu 22.04

### What is Linux
1. Linux：Open-source 類UNIX
2. 起初是為了存取大學內的大型UNIX伺服器而開發的

#### 類 UNIX？
UNIX：多人多工的作業系統
起計劃發展一個作業系統能成以下條件：
1. 多使用者(multi-user)
2. 多工(multo-processor)
3. 多層次(multi-level)

### Why Linux
1. 完全免費
2. 開放原始碼且更新快
3. 壞掉重新灌一次就好
4. 穩定性&高效性
5. 目錄結構明確固定

### Filesystem
1. 跟目錄為起初
2. 樹狀目錄

### 目錄結構
- `/`：根目錄
- `/bin`：系統必備執行檔
- `/home`：家目錄
    - 別稱：`~`
    - 成功登入後就直接在這裡
- `/tmp`：放暫存檔
- `/boot`
    - 核心目錄檔案
    - 跟開機有關的檔案
- `/usr`：系統程式資源
- `/var`：系統資訊、紀錄、暫存檔案

## 入門 Command
- `who`:查詢線上使用者
- `whoami`:查詢當前使用者

### 查看與移動
- `pwd`：顯示當前工作目錄

- `ls`: 列出目錄中的文件和子目錄(可以任意混搭)
    - `-l`：以長格式查看文件和目錄
    - `-a`：顯示隱藏的文件和目錄
    - `-R`：遇到目錄要進行遞迴展開
    - `-d`：只列出目錄，不列出其他內容
    - `-S` / `-t`：按大小/時間排序
    - `-r`：反向排序檔案

- `cd`：更換目錄 change directory
    - `cd <相對路徑>`
    - `cd <絕對路徑>`
    - `$cd .`：回到目前資料夾
    - `$cd ..`：回到上一個資料夾
        - `..`可以重複使用
    
    ！！路徑不要打大於小於！！
    
    #### 絕對路徑&相對路徑
    絕對路徑：門牌號碼
    相對路徑：鄰居關係

- `cat`：查看文件的內容
    - `cat [選項] [檔案]`
    - 選項：
        - `-b, --number-nonblank`：從1開始對每一行編號，空白行跳過
        - `-E, --show-ends`：在每一行末端加入$
        - `-n, --number`：從1開始對每一行編號

### 清空畫面
- `clear`：清空終端機屏幕上的內容

### 目錄 & 檔案相關
- `mkdir`：創建目錄
    - `mkdir <目錄名稱>`
- `rmdir`：刪除空目錄
    - `rmdir <目錄名稱>`
    - 僅限刪除空資料夾
- `touch`：創建一個空文件
    - `touch <filename>`
- `mv`：移動文件或重新命名文件
    - `mv <old filename> <new filename>`
        - 重命名
    - `mv <filename> <destination>`
        - 移動
- `rm`：刪除文件或目錄
    - `rm <filename>`
    - `rm -r <directory name>`
        - 刪除有東西的目錄
- `cp`：用於複製文件或目錄
    - `cp <source file> <destination>`
    - `cp -r <source file> <destination>`

### 權限相關
- `sudo`：以 root (最高權限使用者)權限執行指令
    - `sudo <command to run>`
- `chmod`(change mode)：變更檔案或目錄權限
    - `chmod <權限> <檔案(目錄)>`
- `chown`(change owner)：將檔案的所有權轉移給其他使用者
    - `chown <使用者名稱> <檔案名稱>`
- `apt`(advanced packaging tool)：用於管理系統的安裝、更新、卸載等
    - `sudo apt update`
    - `sudo apt upgrade`
    - `sudo apt install <軟體名稱>`
    
### Vim(文字編輯器)    
`$sudo apt install vim`：下載vim
`$vim <filename>`：開啟檔案並且編輯

#### vim模式
- 一般模式
    - 可以用來移動游標(j下 k上 h左 l右)
    - 刪除字元或整列(delete)
- 編輯模式
    - 輸入各種字元、insert mode
    - 進入編輯模式：在一般模式下輸入i, a, o其中一個
    - 跳出編輯模式：按esc
- 指令模式
    - 在一般模式下輸入:可切換到指令模式
    - `:q`：不儲存離開
    - `:q!`：強制退出
    - `:w`：存檔
    - `wq`：存檔 + 離開

### man
- `man <指令>`
- 用來查詢 "指令" 的 "指令"
- 不知道指令要如何使用的時候用man查就對了

## 總結
1. Linux非常之好用(免費+開源)
2. 各種玩法不受限(虛擬機壞掉頂多重灌)
    
    

    
    
    
    
    
