Day 1 - 了解 Command Line


開始跟 Lidemy 導師計畫的課程,基本上會用 CoderBridge 記錄偏技術的心得,其他比較沒程式碼的學習心得則會放在 Medium(第一篇文:寫在學習之前 — 巧克力牛奶進步法),會這樣區分主要是因為 Medium 沒有直接支援 Markdown 啦。

第一天主要把 Command Line 基本指令了解一下。

Command-Line 意義:以文字指令的方式操作電腦來執行各種任務

前置作業:佈置使用環境

參考 Huli 的文章:[心得] iTerm2 + zsh,打造更好的工作環境 來安裝 iTerm2 + zsh,目的是改善 command line 使用環境。此外還參考這篇文章:超簡單!十分鐘打造漂亮又好用的 zsh command line 環境

其中,看到agnoster這個主題覺得滿酷炫的,基本上畫面是長這樣。

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 安裝指令

  1. 輸入 $ brew install wget
  2. 裝完之後就可以使用 wget 欲下載的檔案網址
  3. 下載完之後可以用 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 接檔案名稱可以看檔案內容(本來用途是連接檔案)


結語

基本上就是記錄上課的內容再加上自己查的資料,待補充的部分還有piperedirection等指令都還不甚了解,看看自己之後變強能不能領悟。

另外還有找到一篇相關文章,可以參考參考。
介紹命令行(command-line)介面

#command line #terminal #Developer Tools #learning #Web Development #網頁開發






你可能感興趣的文章

TDZ

TDZ

菜逼八寫Flutter(2) - layout Widget

菜逼八寫Flutter(2) - layout Widget

解題 - 找出所有等腰三角形

解題 - 找出所有等腰三角形






留言討論