---
# System prepended metadata

title: 基隆xAUV Linux 教學
tags: [基隆, Linux, vim]

---

# 基隆xAUV Linux 教學

###### tags: `基隆` `Linux` `vim`
![](https://i.imgur.com/s3qGq5p.png)


[TOC]

## 安裝
https://chrome.google.com/webstore/detail/secure-shell-app/pnhechapfaindjhompbnflcldabbghjo
**nctu-auv**

## 認識 Linux
### OS
![OS](https://portswigger.net/cms/images/73/8f/a1dbce62f444-article-180918-os-body-text.jpg)



### Linux
#### Command Line
![Linux CLI](https://static.coderbridge.com/img/techbridge/images/kdchang/cs101/terminal.jpg)
#### Desktop Distribution - Ubuntu
![Linux Desktop Ubuntu](https://i0.wp.com/static.cnbetacdn.com/article/2020/0115/8e6eff87cb4eefb.jpg?ssl=1)
#### Desktop Distribution - Chrome OS
![Chrome OS](https://i2.wp.com/mashdigi.com/wp-content/uploads/2019/07/chrome-os-70-launcher-1.jpg?fit=1000%2C666&ssl=1)
#### RPi Distribution - Raspbian
![Raspbian](https://www.asianentrepreneur.org/wp-content/uploads/2016/11/raspberry-pi-logo-1280x720.jpg)

---

## Linux 指令
### Fundamental
:::info
重要 基本 方便
別怕打錯指令 它其實很方便
:::

1. 以 **`$` **開頭 代表是指令 不用複製進去
    
    > e.g.  `$ cd ~`

2. **`sudo`** 代表是 super user 後面會用最高權限去執行指令
3. 按 **`上`** 可以跑出前面輸入過的指令
4. 按 **`tab`** 可以自動補齊

### ssh : 遠端連線工具
- ```$ ssh <username>@<ip>```
    1. username 遠端的帳戶名稱
    2. ip 遠端電腦的ip
- **要連到同個網路下**
- example
    - `ssh pi2@192.168.0.202`
    - nctu-auv

### ls : list，查看檔案及子目錄
- ```$ ls [參數] [路徑]```
- 常用參數
    - ```a``` : all, 顯示所有檔案集目錄，包括隱藏檔案目錄
    - ```l``` : long, 顯示檔案的完整資訊
- example
    - ```$ ls -al```
    - ```$ ls -a```
    - ```$ ls -l```

### cd : change directory，移動進入資料夾
- ```$ cd 路徑```
- `~` 代表home資料夾
- `.` 代表當前資料夾
- `../` 代表上層資料夾
- `/` 代表根目錄
- example
    - ```$ cd```
    - ```$ cd ~```
    - ```$ cd /```
    - ```$ cd Desktop```
    - ```$ cd .```
    - ```$ cd ../``` 

### cp : copy，複製檔案或是資料夾
- ```$ cp [參數] <要複製的檔案路徑>... <目標資料夾路徑>```
- 常用參數
    - ```r``` : 遞迴，複製整個資料夾的時候需要用
    - ```v``` : 顯示已複製的檔案
    - ```i``` : 若目標檔已經存在時，在覆蓋時會先詢問
    - ```f``` : 強制執行
- 其他詳細說明: [鳥哥](http://linux.vbird.org/linux_basic/0220filemanager.php#cp)
- example
    - ```cp test.txt ../```
    - ```cp -r test_folder ../```

### scp : 傳輸遠端檔案
- ```$ scp <File> <username>@<ip>:<path>```
- e.g. ```$ scp test.py pi@192.168.0.102:~/Desktop/``` 
- e.g. ```$ scp pi@192.168.0.102:~/Desktop/test.py ./Desktop/```
    1. 可以雙向互傳
    2. 利用SSH
    3. ip 後面要加`:`再接位置

### mv : move，移動檔案或是重新命名檔案
- 移動 : ```$ mv [參數] <要複製的檔案路徑>... <目標資料夾路徑>```
- 重新命名 : ```$ mv [參數] <原檔名> <新檔名>```
- 常用參數
    - ```v``` : 顯示已複製的檔案
    - ```i``` : 若目標檔已經存在時，在覆蓋時會先詢問
- 其他詳細說明: [鳥哥](http://linux.vbird.org/linux_basic/0220filemanager.php#mv)
- example
    - `mv ~/test.py ./src/`
    - ```mv old.txt new.txt```

### rm: remove，刪除
:::    danger
:fire: 刪掉(燒毀)就無法救回囉:fire:
請小心服用
:::
- `rm <目標文件>`

### man : manual，說明書
- ```$ man <指令名稱>```
- 按```q```離開

### cat : 將文件內容印在終端機上
- ```$ cat <文件名稱>...```
- example
    - `cat .bashrc`

### mkdir : make directory，創建新資料夾
- ```$ mkdir <資料夾路徑>```
- example
    - `mkdir src`

### pwd : print work directory，印出目前工作目錄
- ```$ pwd```

### ifconfig : 網路
- 可用來查詢 ip

### apt-get : 套件管理工具
- 更新套件資料庫列表 :```sudo apt-get update```
- 升級套件並下載安裝套件 : ```sudo apt-get upgrade```
- 安裝套件 : ```$ sudo apt-get install <套件名>```
- 移除套件 : ```$ sudo apt-get remove <套件名>```


#### 參考資料: [TechBridge 技術共筆部落格](https://blog.techbridge.cc/2017/12/23/linux-commnd-line-tutorial/)


## 路徑
#### 相對路徑 : 以執行指令當下的目錄為出發點
```catkin/bin```
```../../pidcal/bin```

#### 絕對路徑 : 以```/```開頭
```/dev/vedio0```
```~/work```

## 萬用字符
- ```*``` : 代表0到無窮多個任意字元
    - ```*.jpg``` : 所有的.jpg檔```cat.jpg```, ```.jpg```
    - ```*pic*``` : 所有包含pic的檔案
- ```?``` : 代表1個任意字元
    - ```???``` : 檔名有三個字的檔案 ```123```
- ```*```和```?```可以混合使用，而且可以用於資料夾上

## 檔案權限
- 參考 : [鳥哥](http://linux.vbird.org/linux_basic/0210filepermission.php)
![](https://i.imgur.com/gP3tcDn.png)
### ```chmod```指令 : 用來改變檔案權限
- 用3個2進位數字表示
    - ```$ chmod 744 test.py```
- 用```+```, ```-```配上```r```, ```w```, ```x```
    - ```$ chmod +x test.py```


---

## Vim
* 參考網站
    - **鳥哥 http://linux.vbird.org/linux_basic/0310vi.php**
    - 指令整理 http://www.vixual.net/blog/archives/234
    - 其他常用整理 https://kaochenlong.com/2011/12/28/vim-tips/

* 安裝指令
```
$ sudo apt-get install vim
```

#### vim 是一種純文字模式下的文字編輯器

### ESC
有事沒事按就對了

### 一般模式
可切換到其他模式 **編輯模式** **選取模式**
* **`:wq` : 儲存並退出**
* `h` `i` `k` `l` : 移動游標
* `上` `下` `左` `右` : 移動游標
* `:<行數>` : 跳至第幾行
* `:q!`:不儲存強制退出
* `u` : 上一步
* `y` : 複製
* `p` : 貼上

### 編輯模式
![vim mode](https://gitbook.tw/images/tw/command-line/vim-introduction/mode.png)
From:高見龍

- **`i` : 進入編輯模式**
- `a` : 在游標位置後進入編輯模式
- `o` : 在新的一行進入編輯模式
- **`Esc` : 取消指令或退出編輯模式**

### 選取模式
* `V` :選擇整行
* `v` :選擇游標範圍


## Task
### Task1
1. 在家目錄創建一個資料夾
2. 創一個python file `vim xxx.py`
3. 更改裡面的內容
4. 可以跑跑看剛才的code `python xxx.py`
5. 移動、複製、刪除

