---
# System prepended metadata

title: Week 02 (2025/09/18) FHS、基礎指令

---

# Week 02 (2025/09/18) FHS、基礎指令
[TOC]

## FHS

| Linux 萬物皆檔案！！

## 基礎指令
- process 程序過程
- `/` 根目錄
- linux為單一根目錄理念
    - 絕對路徑：/Users/jerry/repos
    - 如果你現在在/Users/jerry/ 上面的路徑轉換成相對路徑就是repos
- `/opt` 第三方的東西，某一些第三方套件軟體會裝在opt的資料夾裡面，例如mac Homebrew
- `sudo` 執行一些只有系統管理員才能完成的任務(非必要不使用，除非目的明確)
- system call 系統呼叫:請系統幫忙執行特定/更高階層的動作
- ls -l /dev/urandom : 網路想要生成隨基金鑰、密碼都是從這裡來的
- b：區塊裝置 (block device): 為甚麼可以一直跳? 因為在硬碟上可以一直轉
- 作業系統會把硬體的區塊作編號，但是在實體上不是連續的，但邏輯上是連續的，所以才會造成跳著讀取
- 檔案屬性: r 讀取權限(可讀) w 寫入權限(可寫) x 執行權限(可執行)
- /boot bootstrap: 放印象檔使開機加速
- /sys system、/dev device(虛擬檔案系統): 沒有真實的存在影碟裡面，這些檔案都是作業系統抽象出來的，用一些手段將裝置檔案顯現出來，但沒有實際存在
- 你的影碟裡，所以這樣就可以用system code 使用這些檔案
  > 概念似滑鼠本體(物理硬體)不存在硬碟，但鼠標（數位資料）存在電腦中。
- `/dev/shm`: shared memory ( 共享記憶體 ): 優點:程式可以很快被使用
- 設定檔通常在etc的部分
-  journal 檔案去做變更的紀錄
-  `/usr/bin`：放一些使用者程式(非必須)

- `softlink`：軟連結
    - 是一個指向其他檔案的檔案
    - 若原檔案被刪除則會變成死連結
    - 可跨檔案系統、跨程式分區
- `hardlink`：硬連結
    - 指向其他檔案的**位置**
- inode
- hardlink inode 是一樣的

- `man`：簡單來說就是說明書
- `/var`：程式執行可能留下的 cache(快取) 、紀錄、臨時檔案，儲存在真實硬碟
---

### 常用指令
#### 檔案與目錄操作
- `man`：查閱命令程式的手冊
    - 用法：
    ```
    man 你要查的指令
    ```
    - eg.
    ```
    man ls
    ```
- `info`：比`man`更詳細、更結構化的檔案說明
- `file`：確定檔案形態(在linux系統中，附檔名不太重要)
- `type`：查詢某個指令型態
- `uname`：顯示跟Linux系統有關的基本資料 
- `cat`:把東西抓出來（印出檔案內容）
- `rm`：remove 刪除
    - `rm -rf`：遞迴（recursive）且強制（force）刪除，不知道自己在幹嘛的不要亂用
    - `rm -i` ：再次確認是否要刪除
    - `rm -r` ：把資料夾和裡面的文件都刪除
- `cp`：copy 複製檔案
- `mv`：move 移動
- rm 與 rmdir 的差別
 
| rm   | rmdir |
| ---- | ----- |
| remove | remove directory  |
| 刪除檔案或目錄（搭配 `-r` 可遞迴刪除目錄） | 只能刪除空的目錄  |

- `ls`：list 列出
- `cd`：切換路徑
- `mkdir`：建立資料夾(目錄) 指令後面要放資料夾名
- `touch`：建立檔案
- `vim <檔案名稱>`：開啟檔案(能打開不存在的檔名，存檔後會出現新的檔)
- `nano`：edit file
- `head`：顯示檔案前幾行
- `tail`：顯示檔案後幾行
    - 兩者皆預設顯示十行，但可用 -n 選項指定行數，例如 head -n 5 file.txt 顯示前 5 行，用於快速檢視檔案開頭內容

- `top`: 類似系統管理員，主要功能顯示系統當前狀態
    - `kill` ： 加上PID就可以把process終止
- process：行進中的程式
- program 存在 disk，要 run 起來就需要存在 memory 裡成為 process
- `ps`:為靜態，不會更新目前狀態
     >額外推薦安裝btop及vtop

- `chmod`：權限授予
    - r:read
    - w:write
    - x:execute

- `adduser` ： 自動設定，建立新的使用者，要用sudo使用這個指令
- `useradd` ： 手動設定，

- `UID` ：每一個使用者唯一的ID

- awk 將輸出變成指定格式: 若之後遇到大量需要抓的資料時，非常需要使用