為何會需要使用到終端機這樣原始的環境?而不使用window系統上的IDLE,如DEV-C++/CODE:BLOCK等?
VM 虛擬機
隨身碟灌linux
WSL
可以直接線上寫code,也可選編輯器vim/emacs/預設,環境為ubuntu,常用的套件都有裝,像是git, g++, gcc, grep等等
Docker
比起上面的VirtualBox,個人比較推薦這個,簡單而言,他就是個輕量級的VM,精確來說模擬機是割捨自己的硬碟空間,去佈署專屬於自己的OS環境,而Docker則是可以建立多個container,共享一個OS核心,詳細使用方法可問GOOGLE
sudo代表super do,也就是以超級使用者的權限(提高權限)的意思,後面apt-get是套件安裝普遍會使用到的字眼,install代表安裝,後面接python就是安裝python,他會自動幫忙裝好
拿來編譯很方便,建議裝一下
此外,你會發現,其實安裝就只是同樣一串文字,後面加上自己要裝的東西而已
意即,幫助文字編輯的介面,但很多人不清楚
老手常用的有vim, emacs,兩者間還有 神之編輯器之戰
vim 被稱為編輯器之神
emacs 也被稱為 神之編輯器
順帶一提,個人很愛vim,emacs很不喜歡,因為他沒有mode模式,雖然你輸入很方便,但要移動,或做任何操作,為了不要讓鍵盤一按就馬上鍵入文字,需要用到Ctrl或Alt鍵,然而,每個按鍵組合一定要按這兩個東西加其它按鍵,個人覺得非常不方便,效率很差
當然,emacs有他厲害的地方,他擴展性很高,並且能在上面做任何事情,包括小遊戲、開pdf檔、網頁瀏覽等等,但我認為文字編輯方面他還不是那麼優秀
vim我認為是最強大的文字編輯器,不使用任何插件只配置number, autoindent等等,他效率已經非常高,幾乎到達眼到鼠標到的境界,雖然學習成本蠻高的,但在很多地方都用的到,在每個linux系統都是內建的文字編輯器,編輯效率極高
然而,加上插件他會更恐怖,包含自動補全、括號匹配,全部都做的到,對了,我這篇文也是用vim寫markdown語法所做的哦
終端機環境
對於初學者而言,nano簡單好入手
能夠使用nano進行簡單文書操作後,推薦學vim,效益很高
當然,學習曲線也是很高啦…
網路上,流傳這麼一張圖…
非終端機模式
上述最常有人用的就是Sublime跟VS了,不過個人是vim狂人不怎麼用那些東西,非終端機模式最大問題就是要額外開一個視窗,開啟可能要一些時間
此外如果配置好了在其它電腦上卻要重新配置,終端機的文字編輯器則可以直接用ssh, putty等東西遠端連到自己電腦
前情提要,在終端機下有幾個指令能用
即list的意思,列出目前目錄下的所有檔案
後面+ -a 可顯示隱藏檔案/-l 會顯示詳細資料
列出目前路徑位置
其它指令
指令 | 用途 | 備註 |
---|---|---|
rm | 移除檔案 | rm [filename] |
mkdir | 新增目錄 | mkdir [dirname] |
cd | 切換目錄 | cd 路徑/絕對路徑 |
cat | 抓取檔案內容顯示於終端機上 | cat [filename] |
cp | 複製檔案 | cp [filename 1] [filename 2] |
mv | 重新命名或移動檔案 | mv [filename 1] [filename 2] |
C語言篇
新增檔案 Makefile
Makefile內容
可以簡單寫成all:
下面寫下想要執行的指令就好
對了,前面的空格請使用tab而非空格,不然會出事哦!
輸入make
test.c
Makefile
C++篇
test.cpp
Python篇
test.py
即 change directory (切換目錄)
範例
$ cd /usr/bin
$ cd ../
$ cd
$ cd ~
同字面意思,可查詢最近使用過的指令
範例
$ history -c
$ history -d [number]
$ history
即copy簡寫,可以複製檔案或目錄
範例
$ cp filename_1 filename2
$ cp -r /tmp ./
$ cp -p /usr/bin/passwd ./
$ cp -u filename_1 filename_2
參數 | 敘述 |
---|---|
-b | 覆蓋之前會先備份檔案,備份檔案字尾會加上~ |
-f | 強迫複製 |
-i | 詢問模式,如果會覆蓋,則會先詢問操作者 |
-p | 保留原始檔案之屬性(如範例) |
-r | 有r代表遞迴處理,複製目錄下所有檔案 |
-u | 若來源檔時間較晚才覆蓋,否則不動作 |
參數 | 敘述 |
---|---|
-f | (force),強制移除檔案或目錄 |
-i | (inquire),刪除之前會先詢問 |
-r | (recursive),遞迴處理,會將改目錄下所有檔案、子目錄都刪除 |
範例
sudo rm -rf ~/
rm -i test.c
經過上面的指令介紹相信大家很清楚如何操作了
因此下表就直接騰列參數表
參數 | 敘述 |
---|---|
-b | (backup),目標檔案若存在,覆蓋時會備份原本的目標檔,名稱後方加上~ |
-f | (force),強迫執行 |
-i | (inquire),覆蓋前會詢問 |
-u | 若來源檔時間比較新才會覆蓋,反之不會執行 |
參數 | 敘述 |
---|---|
-a | 列出所有檔案(包含隱藏檔) |
-C | 使用欄位排列顯示清單 |
-f | 不按照字母排序,而是按進入磁碟的順序排序 |
-h | 用容易閱讀的方式顯示檔案大小,像是MdB replaced by M |
-k | 用KB列出檔案大小 |
-l | 列出長清單(比較仔細) |
-m | 水平排列顯示每個指令,指令間用逗號區隔 |
-n | 使用者名稱、群組名稱分別用UID, GID來取代(代號) |
-r | 以字母的相反順序列出 |
-R | 遞迴處理,列出目錄以及子目錄的所有檔案 |
-t | 按照檔案最後修改時間列出 |
-u | 按照檔案最後存取時間列出 |
-Z | 查看SElinux標籤 |
參數 | 敘述 |
---|---|
-a | 原本預設只顯示一個章節,此參數會列出所有章節(類似ls -a的意思) |
-K | 顯示所有和該名稱有關的線上說明檔案 |
-w | 僅顯示說明檔的位置 |