# 熟悉開發環境 [TOC] ## 開發板 ### RPI (Raspberry Pi) 運行 Linux 作業系統的小型電腦。價格低、體積小,用來連接和控制各種外接設備,常用於物聯網和機器人應用。 ![](https://hackmd.io/_uploads/SykimeyWT.png) ### Jetson Series 由 NVIDIA 推出的高性能嵌入式計算平台,特別針對機器學習和人工智慧應用而設計。 ![](https://hackmd.io/_uploads/BkxAXxyZa.png) ## Linux ### 簡介 Linux 是一個免費、開源的作業系統,其中包含許多不同的發行版本 (Ubuntu, CentOS, ...)。 優點: - 開源、免費 - 安全、穩定 - 完善開發環境 - 高度自定義 操作介面: - CLI (Command Line Interface): bash, tcsh - GUI (Graphical User Interface): GNOME, KDE ### 基本指令 #### 指令架構 ``` <command> <argument1> <argument2> ... ``` - 一行指令通常由指令本身與零或多個參數組成 #### man (manual) ``` man <command> ``` - 查看指令的使用手冊 - `h` for help and `q` for quit #### help ``` <command> --help ``` - 查看指令說明 #### pwd (print working directory) ``` pwd ``` - 查看當前所在路徑 :::info :star2: Path - absolute path - /home/orca-auv - relative path - ../orca-auv - `/`: root directory - `~`: home directory - `.`: current working directory - `..`: parent directory ::: #### ls (list) ``` ls <directory> ``` - 列出檔案 - 常用參數: - `-a`:顯示所有檔案集目錄,包括隱藏檔案目錄 - `-l`:顯示檔案的完整資訊 #### cd (change directory) ``` cd <directory> ``` - 切換資料夾 - 常用: - `cd ..`:到上一層 - `cd ~` or `cd`:到家目錄 - `cd -`:到前一個所在資料夾 #### touch ``` touch <path> ``` - 新增檔案 #### cp (copy) ``` cp <source> <dest> ``` - 複製檔案 #### mv (move) ``` mv <source> <dest> ``` - 移動檔案 :::warning :warning: 在使用cp與mv時,如果<dest>本來就已經存在將會被覆蓋 ::: #### rm (remove) ``` rm <file> ``` - 刪除檔案 - 常用參數 - `-r`:刪除資料夾 #### mkdir (make directory) ``` mkdir <directory> ``` - 新增資料夾 - 常用參數 - `-p`:make parent directories as needed #### cat (concatenate) ``` cat <file> ``` - 印出檔案內容 #### grep ``` grep <patterns> <file> ``` ``` <command> | grep <patterns> ``` - 篩選並印出特定 pattern #### less ``` less <file> ``` ``` <command> | less ``` - 分頁檢視檔案 - `h` for help and `q` for quit #### ps ``` ps ``` - 列出現在登入的 user 開啟的 process ``` ps aux ``` - 列出電腦上所有 process #### kill ``` kill <pid> pkill <pattern> ``` - 停止某個 process #### sudo ``` sudo <command> ``` - 以 root 權限執行 command ### 常用快捷鍵 | shortcut | command | | | -------- | -------- | -------- | | `^C` | exit | 中斷程序 | | `^D` | quit | 離開session | | `^Z` | | 將程序丟到背景 | | `^L` | clear | 清空介面| | `^U` | | 清空命令行 | | `^W` | | 刪掉前一個字 | | `^P` or `Up` | | 上一個指令 | | `^N` or `Down`| | 下一個指令 | | `^R` | | 搜尋之前的指令 | ### 常用工具 #### apt - 套件管理工具 ``` sudo apt update sudo apt get install <pkg> ``` #### ssh (Secure Shell Protocol) - 用來連線到遠端電腦 ``` ssh <hostname>@<ip_addr> ``` - `ssh-keygen`:產生自己的一對公私鑰 - `ssh-copy-id`:將自己的公鑰放到遠端上 - `~/.ssh/`:存放相關設定 #### vim - 文字編輯器 ``` vim <file> ``` - `i`:進入 INSERT mode (預設為 NORMAL) - `ESC`/`Ctrl-c`:退出 INSERT mode - 基礎操作 (皆再 NORMAL mode 進行): - `j`:游標往下 - `k`:游標往上 - `h`:游標往左 - `l`:游標往右 - `v`:選取 - `y`:複製 - `d`:刪除 - `p`:貼上 - `:wq`:儲存並退出 - 個人化設定:`~/.vimrc` #### tmux (terminal multiplexer) ``` tmux ls tmux attach -t <session_name> tmux new -s <session_name> ``` - 終端機管理工具 - 分割視窗 - 保留上次的工作階段 - 常用操作 (prefix key:`Ctrl-b`) - `%`:水平分割 - `"`:垂直分割 - `<arrow>`:切換視窗 - `c`:新增頁面 - `n`:切換頁面 - `d`:離開tmux(不關閉session) - 個人化設定:`~/.tmux.conf` ## 其它 ### VSCode SSH https://code.visualstudio.com/docs/remote/ssh ### WSL https://learn.microsoft.com/zh-tw/windows/wsl/install