# Linux基本指令
[](https://hackmd.io/yXelGmwnQnyFrkq9MCV1jw)
<!-- linux基本指令教學 ,將在Github codespace進行示範,使學習者能夠透過codespace的終端機以及介面,即早席熟悉linux指令-->
# Linux基本指令教學
## 目的
本篇教學將介紹Linux的基本指令,包括`pwd`、`ls`、`cd`、`mkdir`、`touch`、`cp`、`mv`、`rm`、`cat`、`more`、`less`、`head`、`tail`、`grep`、`find`、`tar`、`gzip`、`chmod`、`chown`、`ps`、`top`、`kill`、`ifconfig`、`ping`、`wget`、`ssh`、`clear`、`history`等指令,以及vim和nano編輯器。透過本篇教學,我們將學習如何使用這些指令來操作Linux系統。
## 環境
- 作業系統:Linux
- 開發工具:終端機
- 程式語言:Shell
- 開發框架:無
## 1. 什麼是Linux
Linux是一個自由和開放源代碼的類Unix操作系統,是一個基於POSIX和UNIX的多用戶、多任務、支持多線程和多CPU的操作系統。Linux的核心是由林納斯·托瓦茲(Linus Torvalds)在1991年10月5日首次發布。Linux也是一個典型的自由軟體和開放源代碼軟體的範例。Linux也是一個典型的自由軟體和開放源代碼軟體的範例。
## 2. Linux基本指令
### 2.1. pwd
`pwd`指令用來顯示目前所在的目錄路徑。
```shell
$ pwd
/home/user
```
### 2.2. ls
`ls`指令用來顯示目錄下的檔案與目錄。
```shell
$ ls
Desktop Documents Downloads Music Pictures Public Templates Videos
```
### 2.3. cd
`cd`指令用來切換目錄。
- 絕對路徑: 從根目錄開始的完整路徑。
- 相對路徑: 從當前目錄開始的路徑。
```shell
$ cd Documents
```
### 2.4. mkdir
`mkdir`指令用來建立目錄。
```shell
$ mkdir test
```
### 2.5. touch
`touch`指令用來建立檔案。
```shell
$ touch test.txt
```
### 2.6. cp
`cp`指令用來複製檔案或目錄。
```shell
$ cp test.txt test2.txt
```
`cp -r`指令用來複製目錄。
```shell
$ cp -r 來源目錄 目的目錄
```
`cp -a`指令用來複製檔案或目錄,保留原始檔案的屬性。
```shell
$ cp -a test.txt test2.txt
```
### 2.7. mv
`mv`指令用來移動檔案或目錄,也可以用來更改檔案或目錄的名稱。
```shell
$ mv test2.txt Documents
```
`mv -i`指令用來移動檔案或目錄,並提示是否覆蓋。
```shell
$ mv -i test2.txt Documents
```
### 2.8. rm
`rm`指令用來刪除檔案或目錄。
```shell
$ rm test2.txt
```
`rm -rf 檔案或目錄`指令用來強制刪除檔案或目錄。(請小心使用)
```shell
$ rm -rf test
```
### 2.9. cat
`cat`指令用來顯示檔案內容。
```shell
$ cat test.txt
```
### 2.10. more
`more`指令用來分頁顯示檔案內容。
```shell
$ more test.txt
```
### 2.11. less
`less`指令用來分頁顯示檔案內容。
```shell
$ less test.txt
```
### 2.12. head
`head`指令用來顯示檔案的前幾行。
```shell
$ head test.txt
```
### 2.13. tail
`tail`指令用來顯示檔案的後幾行。
```shell
$ tail test.txt
```
### 2.14. grep
`grep`指令用來搜尋檔案內容。
```shell
$ grep "hello" test.txt
```
### 2.15. find
`find`指令用來搜尋檔案。
```shell
$ find / -name test.txt
```
### 2.16. tar
`tar`指令用來壓縮與解壓縮檔案。
```shell
$ tar -cvf test.tar test.txt
$ tar -xvf test.tar
```
### 2.17. gzip
`gzip`指令用來壓縮與解壓縮檔案。
```shell
$ gzip test.txt
$ gzip -d test.txt.gz
```
### 2.18. chmod
`chmod`指令用來更改檔案權限。
```shell
$ chmod 777 test.txt
```
### 2.19. chown
`chown`指令用來更改檔案擁有者。
各種權限的意義如下:
- r:讀取權限
- w:寫入權限
- x:執行權限
- u:擁有者
- g:群組
- o:其他
- a:全部
- +:增加權限
- -:移除權限
```shell
$ chown user test.txt
```
### 2.20. ps
`ps`指令用來顯示系統進程。
```shell
$ ps
```
### 2.21. top
`top`指令用來顯示系統資源使用情況。
```shell
$ top
```
### 2.22. kill
`kill`指令用來終止執行。
```shell
$ kill 1234
```
### 2.23. ifconfig
`ifconfig`指令用來顯示網路設定。
```shell
$ ifconfig
```
### 2.24. ping
`ping`指令用來測試網路連通性。
```shell
$ ping google.com
```
### 2.25. wget
`wget`指令用來下載檔案。
```shell
$ wget https://www.google.com
```
### 2.26. ssh
`ssh`指令用來遠端登入。
```shell
$ ssh user@
```
### 2.27. clear
`clear`指令用來清除終端機畫面。
```shell
$ clear
```
### 2.28. history
`history`指令用來顯示指令歷史。
```shell
$ history
```
### 2.29. man
`man`指令用來查看指令的說明文件。
```shell
$ man ls
```
### 2.30. clear
`clear`指令用來清除終端機畫面。
```shell
$ clear
```
### 2.31. apt-get
`apt-get`指令用來安裝和管理軟體包。
```shell
$ sudo apt-get install package
```
## 編輯器
### vim
`vim`是一個強大的文本編輯器,可以用來編輯各種文本檔案。
```shell
$ vim test.txt
```
- 按`i`進入編輯模式
- 編輯完成後按`Esc`退出編輯模式
- 輸入`:wq`保存並退出
- 輸入`:q!`不保存並退出
- 輸入`:w`保存
- 輸入`:q`退出
- 輸入`:set nu`顯示行號
- 輸入`:set nonu`隱藏行號
- 按`Shift + G`跳轉到最後一行
- 按`gg`跳轉到第一行
- 按`/`進入搜尋模式
- 按`n`跳轉到下一個搜尋結果
- 按`N`跳轉到上一個搜尋結果
- 按`dd`刪除一行
- 按`yy`複製一行
- 按`p`粘貼
- 按`u`撤銷
- 按`Ctrl + r`重做
- 按`Shift + v`進入可視模式
### nano
`nano`是一個簡單的文本編輯器,可以用來編輯各種文本檔案。
```shell
$ nano test.txt
```
- 按`Ctrl + O`保存
- 按`Ctrl + X`退出
- 按`Ctrl + G`顯示幫助
## 3. 結論
透過本篇教學,我們學習了Linux的基本指令,包括`pwd`、`ls`、`cd`、`mkdir`、`touch`、`cp`、`mv`、`rm`、`cat`、`more`、`less`、`head`、`tail`、`grep`、`find`、`tar`、`gzip`、`chmod`、`chown`、`ps`、`top`、`kill`、`ifconfig`、`ping`、`wget`、`ssh`、`clear`、`history`等指令,以及vim和nano編輯器。這些指令是Linux操作系統中最基本的指令,對於初學者來說非常重要。希望本篇教學能夠幫助大家更好地理解和使用Linux操作系統。