命令行(command line),也稱爲 CLI, Terminal, bash, shell……咱們中有不少人很怕使用它,但其實只要你知道一些基本的命令和概念,就沒什麼好怕的了。(文中接下來的內容,命令行統一用 CLI 稱呼)git
80 年代那種只能用命令行來控制電腦運行的時代早已成爲歷史,如今的操做系統基本都已圖形界面化,雖然有些地方仍是不可避免的要用到它。那咱們今天就來看一下,有哪些地方須要用到命令行呢?shell
這些是最經常使用到的。不過今天的重點是初步學習。編程
Mac 下可使用 Terminal.app
segmentfault
Windows 下能夠按 win + R,輸入 cmd 打開命令行工具,或者使用 Git Bash瀏覽器
CLI 無非幾個步驟:bash
大多數命令只對你當前的目錄(location)有效,所以,第一個要知道的命令就是幫助咱們找到「如今在哪裏」:app
pwd
表明 __p__rint __w__orking __d__irectory
:返回結果爲「顯示當前正在進行工做的目錄」。框架
cd
表明 __c__hange __d__irectory
:返回結果爲「改變當前工做目錄」。下圖是進入當前目錄下的一個子目錄:less
..
:返回上一級目錄(當前目錄的父目錄)編輯器
~
是一種特殊的路徑符號,表明着當前用戶的「home」文件夾,故此有兩種方法能夠到你的 home 文件夾:
提供完整的路徑:
$ cd /Users/<your-username>/projects/
或用:
$ cd ~/projects/
另外一個重要的命令 ls
,用於列出當前目錄或指定目錄的內容:
$ ls path/to/folder
這個命令的兩個重要的可選參數:
-l
:輸出一個附加信息的列表。-a
標誌:把隱藏的文件(夾)也顯示出來,這個在如使用版本控制等不少狀況下都頗有用。 結合一下,你能夠在當前目錄下這樣使用:
或者在別的路徑下調用:
$ ls -la path/to/folder
刪除文件:
$ rm path/to/file.ext
刪除文件夾要加上-r
(recursive),這樣就會把目錄裏的全部內容都刪除:
$ rm -r path/to/folder
例子:
$ mv path/to/file.ext different/path/file.ext
這個命令也能用來給文件重命名:
$ mv old-filename.ext new-filename.ext
使用 cp
命令,用法同 mv
使用 mkdir
(make directory):
$ mkdir new-folder
命令行還能夠用來顯示文件的內容。雖然使用編輯器來執行這一任務會更優雅,但有在有些狀況下使用命令行反倒會方便一些。好比,當你只是想快速瀏覽一下,或由於是遠程服務(這樣圖形界面操做的方式行不通),使用命令行就會變得很便捷:
使用 cat
命令會輸出一個完整的文件內容
head
和 tail
命令很是類似,分別是隻顯示前 10 行、後 10 行內容。
須要注意的是,less
命令有所不一樣:它雖然也用於顯示輸出,但它能夠控制頁面流程自己,也就是它只顯示一個頁面的內容,而後只能等待下一步指示。屏幕的最後一行顯示的是當前文件名或只是一個等待接收命令的冒號 :
,這時候按空格鍵將向前翻一頁,按 b 鍵將後退一頁,按 q 將退出 less
命令。
輸入文件名和路徑的時候很容易出錯,這時候就須要 TAB 鍵來幫你自動完成所寫的內容。
例如當你想切換到一個別的目錄,你能夠手動輸入每個部分的路徑:
$ cd ~/design/favorite-customer/mockups/
或者使用 TAB 鍵快速完成:
你輸入的字符不是每次都是明確的——由於「de」也能夠是文件夾中「development」或「dentist」,在這種狀況下 TAB 鍵不能自動補充你的輸入,但它會有一個可能選項的列表,而後自動補全一些文字讓你輸入地更明確些。
CLI 會像瀏覽器同樣記錄你最近的命令歷史,因此:
如今有不少圖形界面工具可讓你脫離 CLI,如 FTP 的客戶端 Transmit ,版本控制器客戶端 Tower。但不能否認,CLI 在某些狀況下仍然是最好的選擇。