--- title: 'Linux 目錄、指令基礎' disqus: kyleAlien --- Linux 目錄、令基礎 === ## OverView of Content 如有引用參考請詳註出處,感謝 :smile_cat: [TOC] ## Linux 介紹 Linux 為類 Unix 操作系統,其實 **Linux 為一個內核**,而它的拓展才是系統 (Ubuntu / red hat... 等等),但大部份人會直接稱為 Linux 為系統 ### Unbuntu * [**Ubuntu Download**](http://www.ubuntu-tw.org/modules/tinyd0/) > ![](https://i.imgur.com/hLKirKV.png) * Ubuntu 取名規則 `ubuntu- 18.0404-desktop-amd64.iso` > 18 年 0404 月份日期 版本有分為桌面板(desktop) / 服務企版本(Server) 版本發布頻率,一年兩次 > 主版本號(年份),**單數年號為短期支援版本,雙數年號為長期支援版本 (LTS)** > > 父版本號(月份),**++xx.04 為該年度穩定板++,xx.10 為年度測試板** ## 基礎指令 ### 超級用戶 * 功能像是 window 中,++**以系統管理員執行**++,提高使用權限 * 目前權限可經由符號判,`$`(使者)`#`(管理者) | 指令 | 功能 | | -------- | -------- | | sudo + 指令 | 提權一次(其實是 ++固定時間內++ 的提權) | | sudo su | ++持續提權++至退出 | | exit | 退出超級用戶 | | whoami | 查看當前登錄的用戶名稱 | :::info * su root 指令? **++Ubuntu Root 如果沒有設置時是隨機的++**(每次開機都有新的密碼),可就由 sudo passwd 設定密碼,**之後就可以使用 su root 指令** ::: ### 輸入常用指令 * 由於在**輸入指令時手很少離開鍵盤**(停留在字母區,不包括數字、上下左右鍵),以下以 **輸入指令** 時常用的命令來做介紹 | 指令 | 功能 | 記憶方法 | | -------- | -------- | -------- | | ctrl + p | 上一個指令 | previous | | ctrl + n | 下一個指令 | next | | ctrl + b | 光標退回(向左) | backward | | ctrl + f | 光標向前(向右) | forward | | ctrl + a | 光標移至頭部 | head | | ctrl + e | 光標移至尾端 | end | | ctrl + d | **刪除**光標**後** | delete | | ctrl + h | **刪除**光標**前** (不包括當前光標) | Backspace | | ctrl + u | **刪除**光標**前==所有==** | | | ctrl + j | **輸入指令** | Enter | ### 操控常用指令 * 當指令不知如何使用時,可用 `man + 指令`,查詢出該命令如何使用 | 指令 | 功能 | 補充 | 範例 | | -------- | -------- | -------- | -------- | | tree | 以樹狀顯示目錄,Window 中也有 | **該指令不包含於原本的功能中**,必須透過 apt install tree | tree /bin | | ls | 查詢指定目錄下的所有文件 & 目錄訊息,常用 -a(all) | **就算是空目錄也有,當前目錄`.`、父目錄`..`**、**==隱藏文件以 `.` 開頭==,如果沒指定代表當前目錄** | 指定 \bin 目錄 ls -la \bin | | cd | 同 window,**進入指定目錄,可指定相對路進、絕對路徑** | 以`.`代表當前目錄、`..`代表上層目錄,cd \ 進入根目錄、cd ~ 進入使用者目錄 | cd \home -> cd .\aliens | | pwd | 顯示當前目錄 | | cd \home\aliens -> pwd | | mkdir | 創見目錄,**-p 可創建++巢狀目錄++** | 該目錄若已有不會創建 | make -p ./aa/bb/cc | | rmdir | **移除 ++空目錄++** | **只能移出空目錄,很少使用**| rmdir ./aa/bb/cc | | touch | **==創建文件==** | | touch ./aa/bb/cc.txt | | cp | 複製文件 & 目錄 | **文件不存在則創建,文件存在則覆蓋,如果++巢狀目錄要用 -r 複製++** | cp aa.txt ff.txt | | mv | 移動檔案 | | mv xxv.txt ./aa/bb | | history | 指令輸入歷史 | | history | | which | 查詢指令集位置,**在 PATH 變量環境中** | **cd 是 bash 內建,所以查不到** | history | | clear | 清除螢幕上的指令 | | clear | ### 查看文件 * 有四種查看方式,各有特色 | 指令 | 功能 | 補充 | | -------- | -------- | -------- | | cat + 文件名 | 將文件一次行輸出的螢幕 | 文件**太長則無法全部輸出** | | more + 文件名 | 一次一個螢幕輸出,Enter 換下一行,空格下一頁,q 退出 | **只能往下閱讀** | | less + 文件名 | 操作如 more,**但是可上 (ctrl+p) 下 (ctrl+n) 閱讀**| less cc.txt | | head + 文件名 | 從頭查看至第幾行,-(行數) | head -10 cc.txt | | tail + 文件名 | 與 head 相反,從尾查看至前幾行,-(行數) | tail -10 cc.txt | > ![](https://i.imgur.com/PfxxUMn.png) ### R/W 文件 -vim 指令 * vim 指令可以直接對文件做出編譯,[**詳細可參考**](http://www.vixual.net/blog/archives/234) | 指令 | 功能 | | -------- | -------- | | i | 從頭開始輸入 | * 以下在對 vim 輸入完文檔後,**按下 Esc 就可以到指令操作,這時下面的指令就是對這個文件的==保存方式==** | 指令 | 功能 | | -------- | -------- | | :q | **沒修改文件 & 不儲存**的離開 | | :q! | **++有++修改文件 & 不儲存**的離開 | | :w | 只儲存 | | :wq | 儲存 & 離開 | | :w + 檔案名稱 | 令存新檔 | | :x | 功能如同 :wq,儲存 & 離開 | ### echo 指令 | 指令 | 功能 | | -------- | -------- | | echo | 輸出指令在螢幕上,也可輸出檔案 | | > | 輸出檔案 | | >> | 接續輸出檔案,類似 append,但是會換行 | | | | 1. echo 可以 **輸出\覆蓋** 檔案 (**==>==**),也可以繼續 **編譯檔**案 內容 (**==>>==**) ```shell= // 創建檔案 echo "Hi, Linux!" > hi.txt // 覆蓋檔案 echo "Hi, Linux! I'm Kyle" > hi.txt // 換行,新增檔案內容 echo "Hi, Linux! I'm Alien" >> hi.txt ``` > ![](https://i.imgur.com/9ncO97M.png) ### 軟/硬連結 * 類似於一種**捷徑的概念** | 連接類型 | 說明 | 大小 | 注意 | 其他 | | -------- | -------- | -------- | -------- | -------- | | 軟 (Symbolic) | 可創造目錄軟連結 | 副本的形式 | 有主從關係,若主被刪除,從也無法訪問到 | 代表的**就像是 window 中的捷徑** (類似指標,指向該目標檔案,本身就是指針的大小) | | 硬 | ++不可++創造目錄軟連結,**並且同步原文件更新** | 原文件大小 + 路徑的總字節數 | **原文件必須是++絕對路徑++** | 在同一系統中才能創建 | 1. 初始化檔案,並創建軟、硬連結 ```shell= # 創建一個檔案 touch file1 # 預設 ++強連結++ ln flie1 file2 # -s 就是 symbolic (軟連結) ln -s file1 file3 # 查看目錄屬性 ls -lai ``` > ![](https://i.imgur.com/o56n0W8.png) 2. 對 file1 寫入數據,查看 file2、file3 的檔案大小 > ![](https://i.imgur.com/217yZB4.png) 3. 刪除 file1,查看 file2、file3 的檔案,會發現軟連結失敗 > ![](https://i.imgur.com/NLDqnpG.png) ## Linux 目錄 & 文件 目錄詳細並標準的要查詢 [**Filesystem Hierarchy Stander(FHS) for Linux**](https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard) 這有 Linux 目錄下所有的檔案介紹 ### 文件顏色 * 在指令輸入時常常可以看到不同顏色的指令,而不同顏色代表了不同的文件意義 | 顏色 | 意義 | 其他 | | -------- | -------- | -------- | | <font color="#fff">==白色==</font> | 普通文件 | | | <font color="#00f">籃色</font> | **目錄** | | | <font color="#0f0">綠色</font> | **可執行文件** | | | <font color="#f00">紅色</font> | **++壓縮文件++** | | | <font color="#00FFFF">青色</font> | **連結文件** | | | <font color="#ff0">==黃色==</font> | **設備文件** | 在目錄 dev 下有很多 | | <font color="#808080">灰色</font> | **其他** | | ### 目錄判斷 | 目錄 | 意義 | 其他 | | -------- | -------- | -------- | | 絕對路徑 | 需要全路徑名,從根目錄開始 `/../..` | | | 相對路徑 | `.` 代表目前路徑,`..` 代表上層路徑,切換兩個目錄時可以使用 `cd -` | cd - 切換 ![](https://i.imgur.com/AqG1e1b.png) | :::info 指令行解釋 : `aliens@aliens-B4-WIFI:/$` 1. aliens:用戶名 2. @:在 / at 的意思 3. aliens-B4-WIFI:主機名稱 4. ~:當前所在的路徑,可使用 pwd 命令查詢 5. #/$:當前用戶權限 ::: ### 資料夾介紹 * 了解 Linux 目錄對於整體來說很有幫助,詳細可 [**參考**](http://linux-wiki.cn/wiki/zh-tw/Linux%E7%9B%AE%E5%BD%95%E7%BB%93%E6%9E%84) > 此圖為 Ubuntu 路徑 > ![](https://i.imgur.com/PkspiIL.png) | 路徑 | 功能 | 其他 | | -------- | -------- | -------- | | / | **==根目錄==** | 如同 window 使用 c:\ | | /bin | ++全名為 **binary 目錄**++,這個目錄下**存放著常用的指令集** | Ex: dir/cp/ls...等等基礎指令| | /boot | Linux 啟動時使用的核心文件 | | | /dev | ++全名為 **device 目錄**++,Linux 的外部設,**其他硬碟也存在這**| 在 Linux 中訪問設備的方式如同訪問文件的方式 | | /etc | 該目錄中包含 **系統和應用軟體的配置文件** | **像是 ++環境變量++ 就會配置在這** | | /home | 用戶主目錄 | 一般該目錄是以用戶的帳號命名 | | /lib | 存放系統基本 **動態連結共享庫**,幾乎所有的應用都會使用到 | 作用如同 window 中的 dell 文件 | | /lost+found | 一般為空,當系統**非法關機就會在這裡產生紀錄文件** | 訪問該目錄需要權限 | | /media | Linux 會自動識別一些設備,識別後會掛載到 media 目錄下 | **像是 usb 等等...** | | /mnt | 系統提供該目錄是為了讓用戶++臨時++掛載 | mount 常會使用到 | | /opt | 默認為空目錄,給主機而外安裝軟體所擺放的目錄 | | | ==**/proc**== | **==虛擬目錄,用於系統內存的映射==,可通過直接訪問該目錄獲取系統訊息**,**該目錄的內容不存在於硬碟中,==存在內存中(Memory)==**| 可直接修改內部文件 | | /root | 該目錄為系統管理員,也是用戶的主目錄 | | | /sbin | ++全名為 **super Binary 目錄**++,存放系統管理員使用的系統管理程式| | | /selinux | **RedHat/CentOS 等付費系統專有目錄,功能類似於防火牆** | | | /srv | 系統啟動時需要的數據 | | | /temp | 存放臨時文件 | | | /sys | 與 /proc 類似,但主要針對硬體相關參數 | **在 linux2.6 內核中出現 sysfs,它集成了 3 種系統文件訊息**,1.++針對進程訊息的 proc 文件系統++,2.++針對設備的 devfs 文件系統++,3.++針對偽終端 devpts 文件系統++,這些文件是系統內部直接的映射,當內核對象被創建時對應的件系統也會被創建 | | **==/usr==** | 用戶的安裝應用存放的地方 | 相當於 **window 中的 Program File 檔案** | | /var | 放置 log 文件,或是其他**經常需要修改的文件** | apt-get clean 實際清理 /var/cache/apt/archives .deb 暫存文件 | | /run | 系統運行時需要的文件 | | ### usr 路徑 * **注意※usr 並不是 user,而是 Unix System Resoure**,如上面介紹他是 **==用戶所對應的實體程序 and 應用程序==** | 目錄 | 功能 | 範例 | | - | - | - | | /usr/bin | 系統該用戶使用的指令檔案 | | | /usr/sbin | 管理員(root)所使用的應用程序 | | | /usr/local/bin | 當前用戶自己的執行程序 | **在下載 Android 源碼中要使用到 python,python 就會放置在這** | | /usr/src | 內核 code 所放置的目錄 | | | /usr/lib | 存放 jvm 的位子 | 要安裝 sudo apt-get install openjdk-8-jdk | :::danger 1. Android source 下載的時候使用 repo 發現沒辦法使用 python > ![](https://i.imgur.com/ZELhMiM.png) 2. 因為目前使用 Ubuntu 18.0.4 (LTS)版本,內部就有內建 python3 (可用 whereis python3 查尋),它放置在 /usr/bin 目錄下,屬於系統指令 > ![](https://i.imgur.com/BhgQXCq.png) 3. 使用 repo 不成功的原因在 repo 它不能調用系統指令,**repo 只能調用用戶指令**,所以**使用強連結連接到 /usr/local/bin 目錄下**,就可以成功調用 ```shell= sudo ln -s /usr/bin/python3 /usr/local/bin/python ``` ::: ## 環境變量 * Linux 環境下有 2 種方式操作環境變量 profile & bashrc,在設定時**使用關鍵字 export**,**如果沒有針對文件寫入就是針對目前的終端機** ```shell= // 在目前的終端機使用,跳到令一個終端就無法使用了 export CLASS_PATH=./JAVA_HOME/lib // 對當前終端機設定環境變量 PATH=~/bin:$PATH ``` ### profile 文件 * 一般不建議在 /etc/profile 文件中新增環境變量,**在該文件下新增變數是每個使用者都會用到的**,設定後必須,**++強制生效++ 或是 ++重新登入++ 才能有效** * 在添加變量時可以使用 `;`,也可以不使用,如果有多個就必須使用 `:` 區分開\ | 檔案 | 位置 | 功能 | 特色 | | -------- | -------- | -------- | - | | profile | /ect/profile | **在這設定的變量對所有用戶生效** | **當用戶 login (登錄時),該文件會被執行,並從 profile.d 目錄的配置文件尋找 shell 設定** | | /ect/profile.d | /ect/profile.d | 這是個目錄,存放啟動登入時的 shell 文件 | | ```shell= // vim 編譯文件 vim /etc/profile // 串接 PATH 變數 export PATH=/home/aliens/<文件>:$PATH // 強制生效 sourcr /etc/profile // 測試環境,PATH 只是個變數,要呼叫必須使用 $ echo $PATH // 或是 env env ``` **--profile.d 文件--** > 啟動 profile 後會找查 shell 設定 > ![](https://i.imgur.com/vozDJLi.png) ### bashrc 文件 * bashrc 文件只會對指定的 shell 類型有作用,並且只會被 bash shell 調用 | 檔案 | 位置 | 功能 | 特色 | | -------- | -------- | -------- | - | | bash.bashrc | /etc/bash.bashrc | 設定環境變量 | **對所有用戶有效** | | .bashrc | ~/.bashrc | 設定環境變量 | **針對當前用戶設定** | | .bash_profile | ~/.bash_profile | 設定環境變量 | **針對當前用戶設定** | ```shell= // 以下修改 .bashrc 當前用戶環境變量 vim ~/.bashrc // 進入 vim 編譯,在最底下加入 export PATH export PATH=${PATH}:/home/aliens/Flutter_sdk/flutter/bin // 打印路徑 echo $PATH ``` **--實做結果--** > ![](https://i.imgur.com/lcU6EHR.png) ### 載入順序 使用者載入過程 1. /etc/profile -> /etc/profile.d/*.sh (所有 shell 檔案) 2. ~/.bash_profile -> ~/.bashrc -> /etc/bashrc 3. 載入完成 > ![](https://i.imgur.com/2HCfFUq.png) ## 文件相關 * 有分為查看**屬性、權限**等等 ### 文件屬性 | 指令 | 說明 | 範例 | | -------- | -------- | -------- | | wc | **文件行數,字數**,大部分用來查看文字文件的屬性 | wc cc.txt | | od | **文件以 ++8進位++ 格式輸出在螢幕中**,++-c ASCII++,++-d 10進位++,++-f float++,++-o 8進位++,++-s 10進位++,++-u 有號 16進位++, | od cc.txt (預設 4 byte為一組輸出 8進制) | | du | **disk use,估計檔案佔用的大小** | du cc.txt / du -hs <資料夾> | | df | **disk free**,硬碟使用狀況 | df | > ![](https://i.imgur.com/aM2My37.png) ### 文件權限-ch * 以下來看最常使用到的 **chmod 改變屬性**,全名 change mode,查看文件權限可用 ls -l * chmod 有兩種方式可以操作,**文字設定、數字設定,兩者最大的差別在於==文字設定可以針對不同群組做設定== (中間不可有空白)** | 修改方式 | 操作符號 | 範例 | | -------- | -------- | -------- | | 文字設定 | **u/g/o/a (user/group/other/all)**,+/-/= (添加/刪除/指定),r/w/x(讀/寫/執行)| chmod +rwx cc.txt \ chmod u-xw cc.txt | | 數字設定 | **+/-/= (添加/刪除/指定),4/2/1/0 由前到後代表了 rwx,最後一個是無權限** | chmod 777 cc.txt,**針對每一個群組做出設定** | * **修改所有者 chown**,sudo chown <user> <文件>,**若非持有用戶要改變必須提權** > ![](https://i.imgur.com/LL2WKHz.png) * **修改所有者 chgrp**,sudo chgrp <group> <文件>,**若非持有群組要改變必須提權** ## 搜索 ### 指令 find * 可**使用正規表達式的方式搜索,必且搜索++包括副檔名在內++** :::info 基礎正規表達式:`*` **多個**任意字元、`?`**單個**任意字元 ::: | 找尋方式 | 操作 | 範例 | | -------- | -------- | -------- | | 名稱 | find <路徑> -name <名稱> | find . *.txt / find .. *.txt / find . aa.txt | | 大小 | find <路徑> <-size> < **==+/-==** 大小>,+ 代表大於,- 代表小於,恰好等於則不須符號 | find ~ -size +10k / find ~ -size -100k| | 類型 | find <路徑> -type <類型> | f(普通文件)、d(目錄)、l(連結)、b(塊設備)、c(字符設備)、s(socket 文件)、p(管道) | 1. 依照名稱 > ![](https://i.imgur.com/cIUIBNv.png) 2. 依照大小 > ![](https://i.imgur.com/KZ0wJlE.png) 3. 依照類型 > ![](https://i.imgur.com/SD3Rrx2.png) ### 指令 grep * grep 指令並不包含在基礎指令之內,所以**必須透過 sudo apt install grap 下載** * 使用關鍵字尋找 grap -r "關鍵字" 路徑 > ## 安裝指令 安裝指令大部分要 ==**超級用戶 ++sudo++ 的權限**== 下使用,主要有分為三種 1. apt-get 2. deb 3. 源碼安裝 ### 安裝/更新 package apt | 功能 | 指令 | 功能 | 範例 | | -------- | -------- | -------- | -------- | | 安裝 | apt-get **install** <package>| 手動安裝 package | sudo **apt-get** install tree | | 安裝 | apt **install** <package> | 安裝界面,功能同 apt-get | sudo **apt** install grep | | 更新包 | apt-get **update** | 更新 package list | sudo apt-get update | | 更新套件 | apt-get **upgrade** | 更新系統套件 | sudo apt-get upgrade | | 清理 | apt-get **clean** | 清理**所有**安裝包 | sudo apt-get clean | :::info apt-get clean 實際上清理的是 apt-get clean 實際清理 /var/cache/apt/archives **.deb 暫存文**件 > ![](https://i.imgur.com/My3kucT.png) ::: ### aptitude * **才能 aptitude**,它並不屬於內部功能,要使用前必須先使用 apt-get 安裝 aptitude,它的功能比 apt-get 更完善一些,**可針對 package 進行更多操作** | 功能 | 指令 | 功能 | 範例 | | -------- | -------- | -------- | -------- | | 安裝 | aptitude **install** <package> | 手動安裝指定 package | sudo aptitude install tree | | 重新安裝 | aptitude **reinstall** <package> | 重新安裝包 | sudo aptitude reinstall tree | | 更新 | aptitude **update** | 更新包 | | | 移除 | aptitude **remove** <package> | 移除包 | | | 顯示狀態 | aptitude **show** <package> | 可顯示 package Name、版本、狀態、大小...等等 | sudo aptitude show tree | > aptitude show 的訊細 > ![](https://i.imgur.com/u1tkHet.png) * 其他詳細使用 aptitude --help > ![](https://i.imgur.com/fLw3xot.png) ### deb 包安裝 * [**Debian**](https://zh.wikipedia.org/wiki/Debian) 完全**由自由軟體組成的類UNIX作業系統**,其包含的多數軟體使用GNU通用公共許可協定授權,並由Debian計劃的參與者組成團隊對其進行打包、開發與維護 * **操作指令使用 dpkg,可記憶成 debian package** | 功能 | 指令 | 功能 | 範例 | | -------- | -------- | -------- | -------- | | 安裝 | sudo dpkg -i <package> | 安裝指定 package,-i 為 install | sudo dpkg -i xxx.deb | | 刪除 | sudo dpkg -r <package> | 安裝指定 package,-r 為 remove | sudo dpkg -r xxx | ### 源碼安裝 * 主要使用 make 指令安裝,安裝 GUN utility 維護的程式,該指令要下載 * 主要分為幾個重點步驟,**主要還要要看 ++readme.txt 的步驟++** :::info 1. 解壓縮源碼包 2. cd 進入安裝目錄 3. 檢查文件是否缺失,創建 Makefile,檢測編譯環境 : ./configure 4. 編譯源碼,生成 Lib or 可執行文程式 : make 5. 把 Lib or 可執行文程式安裝到系統目錄下 : sudo make install 6. 刪除 : sudo male distclean ::: ## 掛載 mount 有分為系統掛載、手動掛載 ::: spoiler mount 的使用 ```cmake= Usage: mount [-lhV] mount -a [options] mount [options] [--source] <source> | [--target] <directory> mount [options] <source> <directory> mount <operation> <mountpoint> [<target>] Mount a filesystem. 選項: -a, --all mount all filesystems mentioned in fstab -c, --no-canonicalize don't canonicalize paths -f, --fake dry run; skip the mount(2) syscall -F, --fork fork off for each device (use with -a) -T, --fstab <path> alternative file to /etc/fstab -i, --internal-only don't call the mount.<type> helpers -l, --show-labels show also filesystem labels -n, --no-mtab don't write to /etc/mtab -o, --options <list> comma-separated list of mount options -O, --test-opts <list> limit the set of filesystems (use with -a) -r, --read-only mount the filesystem read-only (same as -o ro) -t, --types <list> limit the set of filesystem types --source <src> explicitly specifies source (path, label, uuid) --target <target> explicitly specifies mountpoint -v, --verbose say what is being done -w, --rw, --read-write mount the filesystem read-write (default) -h, --help display this help -V, --version display version Source: -L, --label <label> synonym for LABEL=<label> -U, --uuid <uuid> synonym for UUID=<uuid> LABEL=<label> specifies device by filesystem label UUID=<uuid> specifies device by filesystem UUID PARTLABEL=<label> specifies device by partition label PARTUUID=<uuid> specifies device by partition UUID <device> specifies device by path <directory> mountpoint for bind mounts (see --bind/rbind) <file> regular file for loopdev setup Operations: -B, --bind mount a subtree somewhere else (same as -o bind) -M, --move move a subtree to some other place -R, --rbind mount a subtree and all submounts somewhere else --make-shared mark a subtree as shared --make-slave mark a subtree as slave --make-private mark a subtree as private --make-unbindable mark a subtree as unbindable --make-rshared recursively mark a whole subtree as shared --make-rslave recursively mark a whole subtree as slave --make-rprivate recursively mark a whole subtree as private --make-runbindable recursively mark a whole subtree as unbindable For more details see mount(8). ``` ::: ### 系統掛載 /media & 手動掛載 /mnt * 基本上掛載的方式都一樣,只是存放於不同資料夾內,掛載時使用的 option 操作也相同,**對固定的 option 做一些說明** :::info 1. -o loop 正常掛載 2. -t iso9660 才能使用 iso 檔案 ::: --- * **系統主要掛載存在於根目錄的 ++/media 資料夾++** * 指令格式 mount <option> <掛載檔案> <掛載目錄> > 掛載目錄 /**media**/<mkdir dir name> ```cmake= // 加載 media iso sudo mount -t iso9660 -o loop xxx.iso /media/iso // 卸載 media iso sudo unmount /media/iso ``` --- * **手動掛載通常存放於 ++/mnt 資料夾++**,可以用來掛載 iso 檔案、cdrom 檔案 * 指令格式 mount <option> <掛載檔案> <掛載目錄> > 掛載目錄 /**mnt**/<mkdir dir name> > > 掛載到 /mnt 以外的目錄:掛載成功後會遮蔽調目錄中原來的檔案,卸載後才可以看到目錄中原來的數據 ```cmake= // 加載 mnt iso sudo mount -t iso9660 -o loop xxx.iso /mnt/iso // 卸載 mnt iso sudo unmount /mnt/iso ``` ### fuseiso 掛載 * 使用 Ubuntu 的 fuseiso 可以直接掛載檔案,而不用作多的 option 設定,但是這必須要透過 apt-get 下載 * **++不需要 sudo 提權++就可以掛載** * 指令格式 fuseiso <iso 檔案> <掛載目錄> ```cmake= sudo apt-get install fuseiso fuseiso arthurtoday0103.iso /home/arthuryu/iso ``` ## 壓縮管理 ### 打包-tar * **預設僅打包 tar ++無壓縮++,所以打包後檔案大小同打包前** * **可以透過++設置參數(option)來壓縮 & 解壓縮++**,以下會介紹幾個常用的,至於全部 option 可以透過 `man` or `tar -?` 查尋 | Option | 功能 | | -------- | -------- | | z | 用 gzip 來壓縮 / 解壓文件 | | j | 用 bzip2 來壓縮 / 解壓文件 | | c | **create 創建新的壓縮文件**,如果要備份一個檔案 or 目錄就可以使用 | | x | 從封存中解開檔案 | | v | 詳細列出處理過程 (輸出資訊) | | f | **==封存==,指定壓縮文件名稱** | 1. 壓縮選項 > ![](https://i.imgur.com/Ja1c01d.png) 2. 主要操作模式 > ![](https://i.imgur.com/sfpZhKS.png) ```cmake= // 純 tar 文件 tar + <參數(cvf)> + <名稱.tar> + <目錄 or 文件> // 壓縮範例 1 gz tar + <參數(zcvf)> + <壓縮名稱.tar.gz> + <目錄 or 文件> // 壓縮範例 2 bz2 tar + <參數(jcvf)> + <壓縮名稱.tar.bz2> + <目錄 or 文件> ``` **--壓縮 實際操作--** > ![](https://i.imgur.com/QpZoQgn.png) ```cmake= // 純 tar 文件 tar + <參數(xvf)> + <名稱.tar> // 解壓縮範例 2 bz2 tar + <參數(jxvf)> + <壓縮包.tar.bz2> // 指定解壓縮目錄 添加參數 C tar zxvf test.tar.gz -C <目標目錄> ``` **--解壓縮 實際操作--** > ![](https://i.imgur.com/L8u9WSo.png) ### 壓縮 * 壓縮有分多種格式,每個格式的特性也不相同,**壓縮過後的檔案是呈現==紅色==** | 格式 | 壓縮命令 | 解壓命令 | 其他 | | -------- | -------- | -------- | -------- | | .gz | gzip <文件> | gunzip / gzip -d <文件> | **壓縮過程++不保留文件++,++不對目錄進行壓縮++,++不能對多個文件進程打包++** | | .bz2 | bzip2 <文件> | bunzip2 / bzip2 -d <文件> | **可透過 -k (keep) 保存原文件,++不對目錄進行壓縮++,++不能對多個文件進程打包++** | | .zip | zip -r <壓縮包名稱.zip> <路徑> | unzip <目標包.zip> / unzip <目標包.zip> -d <指定目錄> | **專門用來打包目錄**,解壓時可以使用 -d 指定目錄 | | .7z | 7z a <壓縮包名稱.7z> <文件> -p | 7z x <目標包.7z> | **需要安裝套件 p7zip-full,可打包目錄 or 單個文件**,**==-p 可添加密碼==** | | .rar | rar a -r <壓縮包名稱.rar ==(可不用後綴.rar)== > <目錄> -p | rar x <目標包.rar> <目錄>| **需要安裝套件 rar,可打包目錄 or 單個文件**,**==-p 可添加密碼==** | 1. gz(不能保留) / bz2(-k 可保留) **只能壓縮檔案,不能壓縮資料夾** > ![](https://i.imgur.com/rFFRUHB.png) 2. zip 壓縮資料夾 (好像不能打包單文件) > ![](https://i.imgur.com/BiCQjUP.png) 3. 7z / rar 壓縮,都可加密 > ![](https://i.imgur.com/oejMIaM.png) ## 進程管理 | 命令 | 功能 | 補充 | | -------- | -------- |-------- | | who | 查看當前在線用戶的狀況 | <登錄用戶名> <使用設備終端 (pts)> <登入系統的時間> | | whoami | 查看目前登錄用戶名 | | | **ps** | 查看整個系統內部所運行的進程 | -a 當前系統所有用戶的進程,-u 查看進程所有者以及 cpu & mem 的使用率,-x 顯示不能與用戶互交的進程,可一起使用 ps aux | | kill | 殺死進程 | kill -l <PID (ps查看)> | | env | 當前的環境變量 | **類似於 window 的 PATH** | | top | 當前運行的所有進程,並即時顯示電腦使用的狀況 (自動更新) | **類似於 window 的工作管理員** | :::info 系統化觀看可以安裝 htop ```shell= // 安裝 sudo apt-get install htop // 呼叫 htop ``` > ![](https://i.imgur.com/3uifbhC.png) ::: ## 網路管理 * ifconfig 需要下載包 **sudo apt-get install net-tools** | 命令 | 功能 | 補充 | | -------- | -------- | -------- | | ifconfig | 獲取網路接口的配置訊息,並且可修改這些配置| | | **nslookup** | 查看 DNS 相對應的 ip 地址 | nslookup www.google.com | | ping | 測試網路連線,-c 固定次數,-i 發送頻率(預設 1s) | ping 127.0.0.53 (google ip) | ## 其他指令 | 功能 | 指令使用 | 補充 | | -------- | -------- | -------- | | 終端機翻頁 | Shift + (PageUp \ PageDown) | | | 終端機**創建** | 創建新頁面 `Ctrl + Alt + T`、創建標籤頁面`Ctrl + Shift + T` | 要先換頁面使用 Ctrl + (PageUp \ PageDown) | | 清屏 | clear、`Ctrl + l` | | | 在終端機顯示數據 | echo <數據> | echo 123、echo $PATH | ## 開關指令 | 命令 | 功能 | 補充 | | -------- | -------- | -------- | | poweroff / halt | 直接關機,不是否有程序在運作 | 不推薦這個方法不安全 :-1: | | reboot | 重新開機 | 功能同 shutdown -r now | | last | 查詢關機、重起紀錄 | last -x reboot、last-x shutdown | ### shutdown * shutdown 有多種操作方式 | 操作 | 功能 | | -------- | -------- | | -k | 發送警告訊息,模擬關機,**沒有真正 shutdown** | | -c | 取消以設定的關機動作 | | -h <+time\> | 關閉程序後關機,想要立即關機 +time 可以轉為 <now\>、<+0\>、<0\> | | -h <hh:mm\> | 在規定時間準時關機,shutdown 19:30 | | -f(關閉)/-F(啟動) | 在重新開機後是否啟動 fsck 檢查 | | -t<時間> | 延遲關機時間,shutdown -t3 -r (3分鐘後重新開機) | | -r <+time\> | 重新開機,可配合時間使用 | | -n | 不經過 init 就關機,不推間 :-1: | > ![](https://i.imgur.com/T3DwJih.png) ## Appendix & FAQ :::info ::: ###### tags: `Linux 基礎`