# Linux 基本指令介紹 雖然現代的電腦作業系統,已經具有非常完備的圖形介面可以進行各項操作,所以大多數人已經不再接觸指令操作。但是在熟悉指令後,在進行某些操作可以更簡潔有力,因此接下來將要介紹各式 Linux 的基本指令。 :::info **為何選擇 Linux?** 目前電腦作業系統主要可以分為三系:Windows、MacOS、Linux,而 MacOS 和 Linux 算是系出同門(Unix-like),所以兩者幾乎沒有差別。而 Windows 的指令承接 DOS 時代,到現在也沒有什麼改進,使用人數少,加上它的 Powershell 能夠相容 Linux 指令,所以在此將以 Linux 的指令為主。 ::: ## Linux 是什麼,能吃嗎? 在解釋 Linux 是什麼之前,得先了解什麼是作業系統。 ### Operating System (作業系統) 作業系統是電腦裡的**系統程式**,負責調度與分配硬體資源給需要的應用程式使用。 而常見的作業系統有 Windows、MacOS、Linux 三者。 #### Windows 最常見的作業系統,由微軟開發,以完全的圖形操作介面聞名。 #### MacOS 第二多人使用的作業系統,由蘋果開發,介面優雅簡潔。 #### Linux 由社群合力開發,雖然一般使用者最少,但卻是伺服器系統的首選,在伺服器領域遠遠超越 Windows Server 版本。 > ![image alt](https://upload.wikimedia.org/wikipedia/commons/b/b0/NewTux.svg =83x100) > Linux 吉祥物——Tux > *Photo credit: lewing@isc.tamu.edu Larry Ewing and The GIMP* ### Linux (Kernel) Linux 的本質是一個作業系統核心,意即只包含了最基本的功能。 而 Linux 的核心當初由 Linus Torvalds 開發出來,並且將所有原始碼開放,讓所有人皆能自由修改使用,這也造成了後來 Linux 有各種變化版本。 ### Linux Distribution (發行版) Linux 發行版就是將核心加上搭配其他程式打包起來,變成使用者能夠自行安裝進電腦的形式。 而各發行版的差別,最明顯的就是圖形介面。 :::success Android 就是一個為行動裝置設計的 Linux 發行版喔! ::: ## 學習詠唱咒語:Linux 指令的使用 * 與 Linux 溝通的第一步 接下來將要正式開始介紹 Linux 指令的使用。 ### Terminal(終端機) 終端機是一個純文字介面的程式,會提供 Shell(一個用來下指令,並且幫忙解析指令意圖的程式)跟系統進行互動。 而在三大系統裡面,開啟終端機的方式分別如下: #### Linux * Ctrl+Shift+T * 系統功能表->系統工具->終端機 #### MacOS * 在啟動器裡面尋找「Terminal.app」即可 #### Windows :::danger CMD 與 Linux 指令不相容,所以請注意開啟的終端機程式! ::: * 開啟 Powershell(預設是藍色背景) ### 常用的 Linux 指令 :::warning 雖然 Windows 的 Powershell 相容 Linux 指令,但在行為上可能與原生 Linux 或 MacOS 有較大差別,以下教學將在 Linux 系統裡操作為主。 ::: #### pwd * *print working directory* * 顯示目前你所在的位置 在終端機裡面通常會想做的第一件事,就是查詢目前所待的目錄位直,而透過 `pwd` 可以讓我們做到這一件事。 ![](https://i.imgur.com/LSF10En.png) #### ls * *list* * 列出資料夾裡的內容 * 預設列出你目前所在的資料夾 在知道自己身處的位置之後,接下來就是探索目前所在位置有哪些子資料夾和檔案,這時 `ls` 就可以做到這件事情。 ```shell ls ls <資料夾名稱> ls -a #列出隱藏內容 ls -l #列出詳細資料 ``` ![](https://i.imgur.com/8jU35Iq.png) #### cd * *change directory* * 切換資料夾 ```shell cd <資料夾位置> ``` ![](https://i.imgur.com/nzvkyq6.png) :::info ### 位置表示法 在表示位置的時候,我們習慣上會有兩種做法,分別為**絕對位置**和**相對位置**。 #### 絕對位置 * 宇宙銀河系太陽系地球臺灣桃園市龜山區德明路5號S棟 絕對位置是從最初的起點一路表示到所在位置,像是如果要用絕對位置來表示銘傳大學的資訊大樓,就會像上列例子所示。 而在 Linux 裡面,所有目錄的起點為 `/`,也稱為**根目錄**或是 **root**。 #### 相對位置 * 銘傳大學的AA棟隔壁那棟大樓 相對位置可以是用目前所在位置作為參考,進一步去延伸想要表示的位置,就像是以一個現成的建築物去對照資訊大樓的位置。 而在 Linux 裡面,這種比照方式就不是以 `/` 開頭,而會是 `.` 和 `..`: * `.` 開頭: 目前所在的位置 * `..` 開頭: 目前所在的位置的上一層 ::: 再以 `cd` 為例,如果我想要直接回到上一層的話,我可以用 `cd ..` 來達成: ![](https://i.imgur.com/8huEau3.png) ### mkdir * *make directory* * 建立資料夾 ```shell mkdir <新資料夾名稱> ``` ![](https://i.imgur.com/CrRd8kE.png) ### cp * *copy* * 複製檔案、資料夾 ```shell cp <檔案名稱> <新檔案名稱> cp -R <資料夾名稱> <新資料夾名稱> ``` ### cat * ~~貓~~ *concatenate* * 檢視檔案內容 * 可以輸入多個檔案一次顯示 如果需要在終端機檢視文字檔,則可以透過 `cat` 來達成。 ```shell cat <檔案名稱1> <檔案名稱2> ...... ``` --- :::danger ## 毀滅性法術:具有風險的指令們 接下來要介紹的指令具有一定危險性,請小心使用! ![image alt](https://media.giphy.com/media/XUFPGrX5Zis6Y/giphy.gif) ### mv * *move* * 移動檔案或資料夾 * 更改名稱 * **覆蓋檔案** `move` 是一個多功能的指令,除了基本的移動功能之外,如果移動的位置不變,就會有更改檔案名稱的作用。 只是要注意,如果新名稱已經存在,系統將不會警告,**直接強制覆蓋掉**。 ```shell mv <檔案名稱> <資料夾名稱> mv <原名稱> <新名稱> ``` ### rm * *remove* * 刪除檔案或資料夾 * **不可逆** 透過這個指令,將會直接刪除檔案,不經過垃圾桶。 ```shell rm <檔案名稱> rm -R <資料夾名稱> ``` ### sudo * *superuser do* * 以管理員權限執行後者指令 ```shell sudo <指令> ``` ::: --- ## END 希望讀完這篇文之後,能夠具備~~詠唱咒語~~操縱指令的能力owo