讓你好像很厲害的Command Line


Posted by ai86109 on 2020-03-07


什麼是 Command Line?
我們常在電影裡看到駭客在操控電腦時,都會在黑底的介面上輸入文字,這就是Command Line。

圖形化介面 vs 命令列介面

一般我們在使用電腦的時候,想要開網頁就點Chrome的圖示,想要開資料夾就點兩下資料夾即可,這就是熟悉的圖形化介面(Graphical User Interface, GUI);而命令列介面(Command Line Interface, CLI),就是利用文字去操作上面這些動作。

既然圖形化介面如此直觀且方便,為什麼我們還要學命令列介面呢?

原因有兩個
當你想要寫文章的時候,你只要點選word便可以開始撰寫了,但寫程式不一樣,有些工具是沒有提供圖形化介面的,只能透過指令(Command Line)來操作它。

第二個原因是其實使用Command Line跟寫程式一樣,都是利用指令與電腦溝通,所以既然打算開始寫程式了,就先學學CLI吧!

事前準備

工欲善其事,必先利其器。

想要使用Command Line,總要先知道要在哪裡使用,對吧。因為我是使用Mac,所以在電腦裡只要搜尋terminal,就可以開始使用了非常方便。

但其實內建的終端機不太好用,所以我有另外安裝了iTerm2,他可以個人化、較美觀,也可以像瀏覽器一樣開多個分頁。畢竟如果要寫程式,之後一定會有相當的時間是用到command line的,所以給自己一個舒適的操作環境,也是件相當合理的事情。

詳細的安裝流程可以參考以下:
iTerm2 + zsh,打造更好的工作環境
超簡單!十分鐘打造漂亮又好用的 zsh command line 環境

待你把工作環境都設置的很舒適之後,就可以開始寫command line了!

基本指令介紹

pwd
Print Working Directory,也就是印出你現在目前的位置

ls
LiSt,印出現在資料夾底下的檔案

cd
Change Directory,切換資料夾
例如我現在在桌面,桌面上有一個名稱為hello的資料夾,輸入cd hello,我就可以進到hello這個資料夾了。

如果每進一層資料夾就要輸入一次也是滿麻煩的,所以可以直接輸入路徑進入,cd /User/cyen/Desktop/hello

小提醒:在這邊有個快速輸入的方法,如果我要打Desktop,我可以輸入des再按tab,他就會自動幫你輸入整個名稱,會比你自己打快很多。

那如果我要往上一層呢?輸入cd ..

回到根目錄(/Users/cyen),cd ~
所以其實我要從根目錄進到hello資料夾也可以打成,cd ~/Desktop/hello

man
MANual,使用說明書
man ls 就可以查詢ls的使用方法

clear
清空畫面

touch
建立空檔案
touch empty.txt 就可以建立一個名為empty的txt檔
Touch也可以更改檔案時間

rm
刪除檔案
rm test.txt就可以刪除test.txt這個檔案
其他rm用法

mkdir
MaKe DIRectory,建立資料夾
mkdir test會建立名為test的資料夾
詳細用法

mv
更名/移動
mv test.txt test1.txt (test.txt更名為test1, 資料夾不變)
mv test1.txt ~/desktop/from/ (將test1移到桌面上的from資料夾)

cp
CoPy,複製
cp from/test1.txt ~/desktop/

以上就是一些最常用的指令,那如果我想要編輯檔案內容該怎麼做呢?
我們可以使用Vim編輯器
vim test1.txt,輸入後會進入test1.txt內
i 進入編輯,就可以鍵入要輸入的文字
如果不要編輯,想離開了 按下esc
鍵入 :w 存檔
鍵入 :q 關閉
鍵入 :wq 存檔後關閉

其他好用指令

grep
Global Regular Expression Print,搜尋檔案內容
詳細使用方式

wget
下載檔案
wget 檔案網址

curl
透過http protocol下載和上傳檔案的指令
curl 網址 (可能回傳html, json, xml等格式,視輸入的url而定)
使用方法可參考

指令也有組合技

redirection
輸入與輸出重新導向,使用的符號是『>』

ls > test1.txt
會清空test.txt的內容,再將ls的輸出放入;若本無test1.txt,會建立後再將ls的輸出放入

ls >> test1.txt
會將ls的輸出,接續在test1.txt內容之後

pipe
管線(要將輸入輸出串起),使用的符號是『|』

nl 會將每一行資料加上行號
ls | nl,這邊會將ls的輸出都加上行號之後印出
redirection & pipe 詳細使用說明


因為當時在學習時,一直出現command not found的問題
後來的解決方式是參考這篇:linux出現command not found的解決方法


#command line #iterm2 #terminal