開始跟 Lidemy 導師計畫的課程,基本上會用 CoderBridge 記錄偏技術的心得,其他比較沒程式碼的學習心得則會放在 Medium(第一篇文:寫在學習之前 — 巧克力牛奶進步法),會這樣區分主要是因為 Medium 沒有直接支援 Markdown 啦。
第一天主要把 Command Line 基本指令了解一下。
Command-Line 意義:以文字指令的方式操作電腦來執行各種任務
前置作業:佈置使用環境
參考 Huli 的文章:[心得] iTerm2 + zsh,打造更好的工作環境 來安裝 iTerm2 + zsh
,目的是改善 command line 使用環境。此外還參考這篇文章:超簡單!十分鐘打造漂亮又好用的 zsh command line 環境。
其中,看到agnoster
這個主題覺得滿酷炫的,基本上畫面是長這樣。
所以也想改這個主題,但是對於上面文章提到的編輯 ~/.zshrc
實在不太懂意思。
切換內建的 theme 很簡單,直接修改你的 ~/.zshrc
後來又搜尋到這篇文章:使用 oh-my-zsh 的 agnoster theme。
其中提到
想換 theme 就直接在 home 目錄下的 .zshr 檔案 ZSH_THEME 改成你想要的 theme 就可以。
vim ~/.zshrc
這才明白是要用vim
這個指令(下面介紹)去修改。
更換主題
這邊先記錄一下我換主題的過程:
第零步 安裝powerline font
字型
要安裝agnoster
這主題似乎要先安裝powerline font
,這部分可以參考上面提到的這篇文章 超簡單!十分鐘打造漂亮又好用的 zsh command line 環境 其中的安裝字型段落,要注意的是該篇文章提到的brew tap caskroom/fonts
指令會發生錯誤,有人回覆提供解法,所以照著做就行了。再來就是真的處理換主題的步驟了。
第一步 先輸入指令來編輯檔案
vim ~/.zshrc
用vim
這個指令可以進入文字編輯器。
第二步 選擇編輯
我的畫面出現下圖,不確定是不是每個人的電腦都有,反正就是按下 E 進行編輯。
第三步 在 vim 中進入INSERT
模式
進入 vim 之後預設是普通模式,要按i
進入INSERT
模式,底部會有INSERT
字樣。
第四步 找到ZSH_THEME
並修改
預設應該是ZSH_THEME=”robbyrussell”
是,換成ZSH_THEME=”agnoster”
就行了。
第五步 按esc
回到 vim 的普通模式
第一次用 vim 很容易卡住,不過從 INSERT 模式回到普通模式只要按esc
就好,easy peasy。
第六步 確認修改
在普通模式按:wq
這個指令就會回到原本的畫面了,可以選擇關掉重開 iterm2,就會看到主題已經更換。
接下來就講 Command line 的基本指令。
基本指令四公子:pwd
, ls
, cd
, man
pwd
(Print Working Directory)
用途:印出當前位置
指令:pwd
ls
(List)
用途:輸入指令後會印出當前位置的所有檔案
指令:ls
補充
ls - al
會印出不同形式的檔案清單
cd
(Change Directory)
用途:移動工作位置
指令:cd 資料夾位置
沒輸入資料夾名稱的話,直接跳到home folder。
範例
cd User
移到 User 這個資料夾
cd ..
回到上一層
cd ~
移到~ 其中~是 /User/id 的代稱
man
(Manual)
用途:看指令說明書
指令:man 其他指令
進入說明書後想成在看 PTT,可用 page up/down 來控制頁面,要離開的話按q
跳出說明書。
舉例
man ls
進入 ls 的說明書,其中片段:
-a Include directory entries whose names begin with a dot (.).
通常開頭有 dot 的都是隱藏檔案
-l List in long format.
clear
用途:清除畫面
指令:clear
其他常用指令
touch
用途:建立檔案或更改時間
指令:touch 檔案名稱
rm
(Remove)
用途:指令後面直接接檔案名稱就可以刪除
指令:rm 檔案名稱
補充:
若要處理資料夾,可用以下指令
rmdir 資料夾名稱
或
rm -r 資料夾名稱
注意:
用此指令會永久刪除檔案(或資料夾),所以要特別謹慎地使用。
mkdir
(Make Directory)
用途:建立新資料夾
指令:mkdir 資料夾名稱
mv
(Move)
用途:移動檔案或改名至目標資料夾,如果後面接不存在的資料夾,那就會直接把檔案改名。
指令:mv 待轉移檔案名稱 目標資料夾
範例
mv test.txt deep
就會把 test 移到 deep 裡面
mv test.text ..
同理後面接 .. 可以移到上一層
補充:
路徑分為絕對路徑和相對路徑
- 絕對路徑: /User/... 全部都填寫出來
- 相對路徑: 相對於目前位置
cp
(Copy)
用途:複製檔案
指令:cp 欲複製檔案名 複製後的檔案名
範例
cp 123 1234
把 123 這檔案複製一份並命名為 1234
若要複製的是資料夾:
cp -r 999 9999
把 999 這個資料夾複製一份並命名為 9999
vim
用途:文字編輯器
指令:vim 欲編輯的檔案名
說明:
進入 vim 之後按 i
變成 insert mode
,按 esc
變回普通模式
,這模式下按任意鍵都沒反應。
普通模式時按下 :q
可以離開編輯器(會問是否儲存),若輸入的是 :wq
而非 :q
會直接儲存變更並離開。
grep
用途:抓取關鍵字
指令:grep 關鍵字 檔名
此指令會把有關鍵字
的那行抓出來並標記顏色。
wget
用途:下載檔案
指令:wget 欲下載的檔案網址
Note:
MacOS 沒有內建這個指令,可先用 Homebrew 安裝指令
- 輸入
$ brew install wget
- 裝完之後就可以使用
wget 欲下載的檔案網址
- 下載完之後可以用
open 檔案名稱
來開啟該檔案
待補充
curl 送出 request
用途:測試 API
指令:curl API網址
用來測試 API,這邊還不懂啥意思,之後更了解再補充
redirection > 重新導向 input output
指令: 其他指令 > 輸出檔案名稱
舉例:
ls -al > list_result
這樣就會把 ls -al 的結果輸出到 list_result
Note:
如果list_result
本來就已經存在,那裡面原本的內容會全部被覆蓋掉。
如果不想覆蓋掉那可以改成 ls -al >> list_result
,這樣就是新增內容到 list_result
這個檔案裡而非覆蓋。
pipe | 組合使用指令
用途:用指令輸出變成下個指令的輸入
指令:指令一 | 指令二
,如此會讓指令一的輸出變成指令二的輸入
舉例:
其中cat 1234 | grep 5
結果和grep 5 1234
是相同的
待補充
cat 接檔案名稱可以看檔案內容(本來用途是連接檔案)
結語
基本上就是記錄上課的內容再加上自己查的資料,待補充的部分還有pipe
及redirection
等指令都還不甚了解,看看自己之後變強能不能領悟。
另外還有找到一篇相關文章,可以參考參考。
介紹命令行(command-line)介面