[TOC] # 基礎指令 ## ==套件管理工具 (apt)== ### update 更新套件管理工具的資料庫 ``` sudo apt update ``` ### upgrade 將資料庫中新的東西抓下來 ``` sudo apt upgrade ``` ## ==檔案與目錄操作== ### pwd:顯示當前目錄 ``` pwd ``` ### ls:列出當前目錄的內容 ``` ls ``` ### cd:切換目錄 ``` cd <directoryname> ``` ### mkdir:建立一個目錄 ``` mkdir <dictoryname> ``` ### touch:快速建立一個檔案 touch 的核心功能是其實是更新檔案的時間戳記(timestamp),但如果檔案不存在,就會自動建立一個新的檔案。 ``` touch <filename> ``` ### cp:複製 ``` cp <file> <目的地> ``` ### mv:移動 ``` mv <file> <目的地> ``` ### rm:刪除 - 檔案: ``` rm <filename> ``` - 目錄: ``` rmdir <directoryname> ``` 或 ``` rm -r <directoryname> ``` ### ln:連結 - 應用 - 硬連結:常見於備份與防誤刪除的情境 - 軟連結:可跨檔案系統或連結目錄,適用於簡化路徑、管理設定檔及方便存取複雜目錄結構 | 連結類型 | 硬連結 (Hard Link) | 軟連結 (Soft Link / Symbolic Link) | |--------------|----------------------|-------------------------| | **指令** | `ln 原始檔 目標檔` | `ln -s 原始檔 目標檔` | | **是否可連結目錄** | ❌ 否 | ✅ 是 (`ln -s`) | | **刪除原始檔後影響** | ✅ 不影響 (資料仍在) | ❌ 影響 (軟連結變無效) | | **`ls -li` 顯示** | 同一個 inode | `->` 指向原始檔 | ### find:根據不同條件來進行搜尋,並且可以在搜尋到的檔案上執行各種操作 搜尋所有 .txt 檔案 ``` find /path/to/directory -type f -name "*.txt" ``` 找出小於 1 GB 的檔案 ``` find /path/to/directory -type f -size -1G ``` 搜尋最近 7 天內修改過的檔案 ``` find /path/to/directory -type f -mtime -7 ``` 找到檔案後,執行刪除指令 ``` find /path/to/directory -type f -name "*.abc" -exec rm {} \; ``` ### file:查看檔案類型 ``` file <filename> ``` ## ==文字處理與編輯== ### cat:顯示檔案內容 ``` cat <filename> ``` ### 分頁顯示檔案或內容 (more & less) ``` more file.txt ``` ``` less file.txt ``` :::info **more VS less** | 功能 | `more` | `less` | 差異說明 | |------------------|--------|--------|----------------------------| | **向下滾動** | ✅ | ✅ | 兩者皆可使用 `Enter` 或 `Space` 向下滾動 | | **向上滾動** | ✅ | ✅ | 可以使用 `↑` 或 `b` 向上翻頁 | | **搜尋關鍵字** | ✅ | ✅ | 皆可使用 `/關鍵字` 向下搜尋,`less` 還可用 `?` 向上搜尋 | | **直接跳到行數** | ✅ | ✅ | `more +50 file.txt` 或 `less +50 file.txt` | | **即時讀取大檔案** | ❌ | ✅ | `less` 支援即時讀取,不用一次載入整個檔案 (用串流的方式)| | **開啟多個檔案** | ❌ | ✅ | `less` 可開啟多個檔案,用 `:n` 切換 | | **顯示行號** | ❌ | ✅ | `less -N file.txt` 可顯示行號 | | **編輯檔案** | ✅ | ✅ | 按 `v` 皆可進入編輯器 | | **離開指令** | `q` | `q` | 兩者皆用 `q` 離開 | ::: ### tail:顯示檔案最後幾行 預設是顯示 10 行 ``` tail file.txt ``` 調整顯示 20 行 ``` tail -n 20 file.txt ``` ### 文字編輯器 (nano & vim) - nano: ``` nano <filename> ``` - vim: ``` vim <filename> ``` `:q` :退出 :::info ### vim 用法懶人包 #### 模式切換 - `i` / `a`:進入插入模式(前方 / 後方) - `Esc`:回到一般模式 - `v`:進入可視模式(字元 / 行 / 區塊) #### 檔案操作 - `:w`:存檔 - `:wq` 或 `ZZ`:存檔並退出 - `:q!`:不存檔強制退出 #### 剪下、複製、貼上 - **剪下**:進可視模式 (`v`),選取區塊後按 `d` - **複製**:進可視模式 (`v`),選取區塊後按 `y` - **貼上**:回到一般模式 (`Esc`),選擇位置後按 `p` #### 搜尋 - `/關鍵字` → 按 `Enter` - **下一筆**:`n`,**上一筆**:`N` #### 復原 & 重做 - **復原**:`u` - **重做**:`Ctrl + r` ::: ### awk:用自己想要的格式印出輸出 假設 data.txt 內容為 ``` 1 aaa 25 2 bbb 30 3 ccc 22 ``` 下指令 ``` awk '{ print $2 }' data.txt ``` 輸出會是 ``` aaa bbb ccc ``` ### grep:篩選關鍵字 ### | (pipeline):將前一個指令的輸出傳給下一個指令 可以切換到家目錄下這個,應該可以看到 Document 跟 Download 被列出來 ``` ls | grep Do ``` ## ==權限與使用者管理== ### sudo:提升權限,讓使用者能以 root 身分執行指令 **sudo touch 出來的檔案擁有者會是 root!!!** ### chmod:修改權限 - 權限規則: - 4(讀取 r) - 2(寫入 w) - 1(執行 x) - 0(無權限 -)  以上面的例子來看,我要讓 other 有執行 (x) 的權限 ``` sudo chmod o+x <filename> ``` 或 ``` sudo chmod 755 <filename> ``` ### chgrp:更改群組 ``` sudo chgrp newgroup file.txt ``` ### passwd: ``` passwd ``` 執行後會要求輸入當前密碼,接著輸入並確認新密碼 ### 使用者相關 #### 新增使用者 - useradd ``` sudo useradd -m -s /bin/bash -g users -G sudo,docker -u 2001 -d /data/newuser newuser ``` - adduser ``` sudo adduser username ``` :::info | 指令 | useradd | adduser | |----------|---------------------|------------------| | **家目錄** | 預設不建立 (-m 才會) | 會自動建立 | | **互動性** | 無,需要手動加參數 | 會提示輸入密碼等資訊 | | **密碼設定** | 需要額外使用 passwd | 會在過程中詢問密碼 | ::: #### 切換使用者 - 切換成 root ``` su ``` - 切換成其他使用者 ``` su <使用者名稱> ``` ## ==程序管理== ### ps:顯示當前程序 ``` ps ``` ### jobs:查看在背景的工作 ``` jobs ``` ### ^z:暫停程式但不中斷 - `bg`:背景執行 - `fg`:前景執行 ### &:背景執行 ### kill:終止程序 ``` kill <PID> ``` ### ^c:中斷目前進行中的程式 ctrl + c ### top:能看到各個程序的使用狀況 ``` top ```  ## ==標準輸入輸出== ### > & >> & std1 & std2: 覆寫檔案 ``` ls > file.txt ``` 在檔案後加入內容 ``` ls >> file.txt ``` 這個是錯誤示範 ``` lss > file.txt ``` 記錄錯誤 ``` lss 2> file.txt ``` 但這樣只會記錄到錯誤的輸出,因此我們若要每次不論成功與否都要紀錄,我們可以將錯誤視為正常輸出,並執行下面兩個指令試試 ``` lss > file.txt 2>&1 ``` ``` ls > file.txt 2>&1 ``` ### tee:指令的輸出同時顯示在螢幕上並寫入檔案 ``` ls > file.txt cat file.txt ``` 等同於 ``` ls | tee file.txt ``` ## ==系統資訊 & 監控== ### date:顯示當前時間 ``` date ``` ### watch:反覆執行某個指令並即時顯示其輸出 每一秒監控一次 date ``` watch -n 1 date ``` ### df:顯示磁碟分區的使用情況 顯示當前目錄所在磁碟分區的可用空間 ``` df -h . ``` ### history:印出指令歷史紀錄 ``` history ``` ### man:列出指令的使用說明,manual 的意思 列出 ls 的用法 ``` man ls ``` ### exit & ^d:用來結束 Shell | 指令 | 行為描述 | |--------------|--------------------------------------------------| | `exit` | 明確結束 Shell | | `Ctrl + D` | 發送 EOF (End of File) 給 Shell,Shell 偵測到後退出 |
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up