熟練使用指令行是一種常常被忽視的技能。但實際上,熟練使用指令行是一個程式員的必備技能。以前端程式員為例,啟動項目,停止項目,建構項目都需要指令行。同時,熟練掌握指令行還能提高程式員的生産力。做有些事,用指令行比用圖形工具快。如:在
/GitHub/note
下建立檔案夾
test
,用指令行隻需要輸入
cd /GitHub/note && mkdir test
,用圖像界面需要點選兩次滑鼠到
/GitHub/note
下,右擊
建立檔案夾
再鍵入内容。
指令行支援上千條指令,本文隻選了常用的6組指令和技巧:提升輸入指令速度技巧,檔案夾與檔案操作指令,管道指令,網絡指令,字元串操作指令,系統操作指令。
注意:本文介紹的指令記針對的是 Mac OS 系統。
第1組 提升輸入指令速度技巧
補全指令
按 tab 鍵可以補全指令和檔案路徑。如果按 tab 啥都沒發生,表示有超過一個指令或路徑滿足目前的輸入内容,連按兩下 tab 檢視滿足條件的所有指令。
搜尋指令記錄
輸入 ctrl-r 搜尋指令記錄。
輸入上箭頭鍵,顯示最近一條執行的指令。按多次上箭頭鍵,看更久的指令。下箭頭與上箭頭的功能相反。
檢視使用文檔
用
man
指令來檢視某個指令的使用文檔。如:
man ls # 檢視ls指令文檔
man -k ls # 搜尋的ls相關的指令
複制
推薦使用線上工具explainshell來看指令的文檔。
設定别名
用
alias
來檢視和設定别名。通過設定别名,可以很長或難記的指令,變成自定義的别名。例如:
grep
可以加參數
--color=auto
實作搜尋結果中高亮顯示搜尋字元串的功能。但每次使用
grep
都得要自行加上
--color=auto
又顯的很麻煩,可以通過下面的指令來設定别名:
alias grep='grep --color=auto'
複制
然後,執行下面的指令使别名生效。
source ~/.bashrc
複制
直接執行
alias
可以檢視目前設定的所有的的别名。
快捷鍵
指令行預設用的是 Emacs 的快捷鍵。光标移動,删除内容都可以用 Emacs 的快捷鍵。如:ctrl-a 可以将光标移至行首,ctrl-e 可以将光标移至行尾,ctrl-k 可以删除光标至行尾的所有内容,ctrl-u 可以删除行内光标所在位置之前的内容。
執行下面的指令,可以設定成 vi 風格的快捷鍵。
set -o vi
複制
改回來
set -o emacs
複制
清屏
可以用指令
clear
來清屏。
第2組,最常用的指令: 檔案目錄與檔案操作指令
檔案目錄操作
建立
用
mkdir
建立目錄。
mkdir 檔案夾名
mkdir -p a/b/c # 建立多級目錄
複制
進入目錄
用
cd
指令來進入目錄。很多指令必須進入指定目錄才能執行。比如,需要進入
package.json
所在的目錄,執行
npm
相關的指令。
cd 目錄名稱 # 進入指定目錄中
cd .. # 進入上級目錄
cd / # 進入根路徑
cd ~ # 進入工作目錄
cd - # 進入上次通路的目錄
cd 在Finder中,将目标目錄托拽到指令行中
複制
注意:如果目錄名稱中包含 空格,引号,
[
,
]
,
*
,
|
等特殊字元時,路徑需要用
""
把路徑包起來。
在 Finder 中打開目前路徑
open .
複制
檢視目前路徑
用
pwd
指令來檢視目前路徑。
pwd
複制
檢視目前路徑下的檔案
用
ls
指令來檢視目前路徑下的檔案。
ls
ls -a # 顯示隐藏檔案
ls -l # 檢視詳細資料,如權限,建立人等
tree # 以樹形結構顯示目錄結構
複制
删除目錄
用
rm
指令來删除目錄。
rm 檔案夾名
rm -r 檔案夾名 # 删除該檔案夾及包含的檔案
複制
移動目錄或檔案
用
mv
指令來移動目錄或檔案。
mv 原路徑 新路徑
複制
檔案操作
建立檔案
用
touch
指令建立檔案。
# 建立
touch 檔案名
複制
檢視檔案
有很多指令可以檢視檔案。如:
cat 檔案名 # 檢視檔案内容。不支援修改
vi 檔案名 # 用 vi 打開。支援直接修改
less 檔案名
head 檔案名 # 檢視檔案的開頭一行
tail 檔案名 # 檢視檔案的最後一行
複制
通過檔案名搜尋檔案
用
find
指令來通過檔案名搜尋檔案。 具體用法:
find . -name 檔案名 # 檔案名支援正則
複制
修改檔案權限
用
chomd
指令來修改檔案的權限。具體用法:
chomd 檔案權限 檔案路徑
複制
檢視檔案類型
用
file
指令來檢視檔案類型。如果一個檔案缺失了擴充名,那麼這個指令可能會非常有用。具體用法:
file 檔案路徑
複制
如果是圖檔檔案,還會
file
指令的執行結果還會顯示圖檔的尺寸、顔色數等資訊。
第3組 管道指令:展示指令行的真正強大之處
管道指令是一種通信機制,它表現出來的形式是将前面指令的輸出直接作為下一個指令的輸入。
重定向管道
用
|
連接配接2個指令,可以将
|
左邊的指令的運作結果做為輸入輸出。如:
cat README.md | say # 把 README.md 讀出來
history | grep 'git status' -c # 統計指定指令執行了多少次
複制
重定向輸出
用
>
或
>>
将指令的執行結果輸出到檔案。
>
和
>>
的差別是:
>
會覆寫了輸出檔案而
>>
是在檔案末添加。如
tree > output.txt
cat a.txt >> b.txt # 将 a.txt 中的内容追加到 b.txt
複制
第4組 字元串操作指令
通配符
常見的通配符包括:
-
: 比對任何長度的任何字元。*
-
: 比對任何單個字元。?
-
: 比對[]
範圍内的字元。[]
搜尋字元串
用
grep
指令來搜尋字元串。 如:
grep 搜尋字元串 檔案
grep 搜尋字元串 檔案 --color=auto #高亮搜尋結果
grep 搜尋字元串 -n #字元串出現的次數
複制
第5組 系統操作指令
結束目前指令行的執行
yong ctrl-c
殺死程序
kill 程序id
複制
用管理者權限運作指令
sudo 指令
複制
切換帳号
su 帳号
複制
第6組 網絡操作
檢視ip
ifconfig
複制
看某個ip能不能通路的通
ping ip
複制
端口占用情況
sudo lsof -i :端口号
複制
幾個裝逼的指令
文字轉語音
用
say
指令來将文字轉語音。
say 文字内容
複制
在眼睛累的使用,可以把某個檔案的内容讀處理。指令:
cat README.md | say
複制
顯示月曆
下面的指令可以顯示 上個月,本月,下個月的月曆。
cal -3
複制
推薦閱讀&參考文檔
- 指令行的藝術
- Explainshell 指令的文檔。