# 基隆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. 移動、複製、刪除