工欲善其事,必先利其器!不管工做仍是學習,選擇好用的工具真的過重要了。今天就給你們介紹一下筆者感受相見恨晚的工具iTerm2,若是讓我說平常開發中好用的工具備哪些,iTerm2必須擁有姓名。mysql
做爲常常和Terminal打交道的工程師來講,對於自帶的Terminal來講,Windows的命令行最難用,筆者通常使用XShell。入坑Mac後發現你們都在用iTerm2,半年下來感覺只有兩個字:真香!程序員
窗口,固然是想怎麼分就怎麼分!和Mac原生的Terminal一個關鍵的區別就是iTerm2支持任意分割和建立窗口。sql
首先,你能夠設置一個打開iTerm窗口的快捷鍵,iTerm2->Perferences->Kes->Hotkey,這樣就能夠在打開時快人一步!shell
若是已經打開了iTem2應用,就能夠經過快捷鍵一鍵打開和隱藏。默認的Hotkey Window最大的特色就是透明和懸浮,它可以懸浮在任意窗口上面。數據庫
新建Window:Command + N
關閉Window:Command + W
全屏:Command + Enter, 再按一次還原
展現全部窗口:Command + Option + e
關閉窗口:Command + wvim
新建標籤:Command + t
關閉標籤:Command + w
切換標籤:Command + 數字 或者 Command + 左/右方向瀏覽器
垂直分屏:Command + d
水平分屏:Command + shift + d
切換窗格:Command + Option + 方向鍵 或者 Command + 左右中括號服務器
除了窗口劃分,Term2的另外一殺手鐗就是回放。不只能夠查看剪切板的歷史記錄,還能像視頻同樣回放窗口內的歷史記錄!ssh
對於普通文本編輯器來講,每次複製後都會覆蓋以前的剪切板,很是很差用。而iTerm2提供了和IDEA同樣查看歷史剪切板功能,對於筆者這種CV工程師來講是至關友好了!編輯器
快捷鍵:Command + Shift + h
命令提示,可以提示最近輸入的內容,以及經常使用的命令;須要注意的是,這裏僅僅會輸入過的內容,固然iTerm也有命令補全插件,後面會進行介紹。
快捷鍵:Command + ;
固然除了歷史命令提示以外,也可使用系統支持的方式來搜索和查看歷史命令。
上一條命令:Ctrl + p(previous) 或 向上方向鍵
下一條命令: Ctrl + n(next) 或 向下方向鍵
搜索歷史命令:ctrl + r
很是有意思的功能,像錄屏同樣,記錄過去一段時間內窗口顯示的內容。
快捷鍵:Command + Option + b
前進/後退:左右箭頭/鼠標拖動進度條**
退出回放:esc
在item中選中即複製,被選擇的文本會自動保存在剪切板中。雙擊選中,三擊選中整行,四擊智能選擇,能夠智能的選中你想要的數據,如網址,郵箱,括號或引號中的數據等。
一樣也支持快速粘貼,鼠標選中複製後,能夠經過鼠標中鍵或者Command+v進行粘貼。同時,選中後也能夠經過拖拽實現快速的複製和粘貼。
使用Command+f便可完成搜索,搜索後,經過Tab 或者 Tab + Shift可向右或向左擴大選中範圍,完成複製。
Command既能夠和其餘按鍵組合成快捷鍵,也能夠搭配鼠標實現一些快捷功能。只須要按下Command在搭配一下操做便可。
點擊url,調用默認瀏覽器訪問該網址
點擊文件,調用默認程序打開文件。若是選中的是 文件名:數字,且默認文本編輯器是Mac vim 將會直接打開到這一行。
點擊文件夾,在Finder中打開該文件夾
配合Optional鍵,使用鼠標能夠選擇矩形區域內容
這些快捷鍵並不是iTem2特有,也是很是基礎的快捷鍵。固然最重要的是它們很是實用,幾乎天天都會用到。
清屏:Command + r 或者 ctrl + l
清除當前行:Ctrl + u
刪除當前光標的字符:ctrl + d
刪除光標以前的字符:ctrl + h
刪除光標以前的單詞:ctrl + w
刪除到文本末尾:ctrl + k
交換光標處文本:ctrl + t
光標移動導行首:Ctrl + a
光標移動到行位:Ctrl + e
對於快捷登錄這種基本操做,iTerm2固然也能很好支持。只須要在將腳本配置到iTerm2->Preferences->Profiles->General中的Command輸入框中,既能夠是單行命令,也能夠是Shell腳本文件。
ssh命令通常用來遠程登錄Linux主機,不過須要兩段式登錄,先輸ssh鏈接命令,當服務器響應後再輸入密碼。
要把兩段式登錄合併成一步到位,只須要安裝sshpass工具便可,sshpass用於非交互的ssh密碼驗證,容許你指定明文密碼,而後配置ssh命令直接登陸遠程服務器。
它支持密碼從命令行,文件,環境變量中讀取。三種用法以下:
# 1. 密碼 sshpass -p {密碼} ssh -p ${端口} {用戶名}@{主機IP} # 2. 密碼文本文件 sshpass -f {密碼文本文件} ssh -p ${端口} {用戶名}@{主機IP} # 3. 環境變量 # 配置環境變量 export SSHPASS='my_pass_here' echo $SSHPASS # 登錄 sshpass -e ssh username@192.168.0.1
須要注意的是,爲了防止密碼先是在屏幕上,通常使用密碼文件和環境變量的方式登錄。
工做中一般不能直接連線上服務器或數據庫,而是須要先登錄跳板機,再經過跳板機鏈接線上服務器/數據庫。這些就能夠經過expect腳原本解決。
expect 是用來進行自動化控制和測試的工具,主要是用來和ssh/talnet/ftp等這些交互式軟件進行自動交互,好比遠程自動輸入密碼,執行腳本等。
expect的大體原理就是,首先spawn咱們要執行的命令A,而後設置一個或多個預期命令A會輸出的結果,根據設置匹配的結果選擇接下來執行的分支,而後經過send命令執行後續命令,模擬鍵盤輸入。
假如咱們要實現自動登陸線上數據庫,並查看全部數據表。具體步驟能夠分爲如下幾步:
- 登錄跳板機
- 經過跳板機登錄線上數據庫
- 選擇database,而後執行 show tables 命令
如下是筆者提供一個簡單的腳本程序模版:
#!/usr/bin/expect -f # 腳本的參數,mysql服務器的登錄地址,密碼,以及 選擇數據庫指令 set loginCommand [lrange $argv 0 1] set passwd [lrange $argv 2 2] set script [lrange $argv 3 4] # 等待命令執行的超時時間,10s set timeout 10 # 1. 登錄跳板機 spawn ssh 用戶名@跳板機的host expect { # 輸入跳板機登錄密碼(第1步指令執行完後,會輸出xxx@xxx's password: 提示輸入跳板機密碼) "用戶名@跳板機的host's password:" {send "跳板機密碼\r"; exp_continue} # 2. 經過跳板機登錄數據庫(筆者公司的跳板機登錄完成後,會提示輸入INPUT:,提示輸入要登錄的服務器ip) "*INPUT:" {send "$loginCommand\r"; exp_continue} # 輸入要登錄數據庫的密碼 "Enter password:" {send "$passwd\r" ; exp_continue} # 密碼輸入錯誤,退出(若是密碼輸入錯誤,提示文案中會出現ERROR字樣) "*ERROR*" interact; # 3. 輸入數據庫指令 "Welcome to the MySQL monitor*" {send "$script\r"; exp_continue} # 執行show tables指令 "Reading table information*" {send "show tables;\r"} } interact
Command中配置腳本文件和執行參數
/Users/xxx/ssh_login.exp mysql yaccount_relay@xxaccount.db.xxx.com:3456 數據庫密碼 use dbzz_zzpayaccount
執行配置文件,效果圖:
iTerm2支持不少自定義的個性化配置,還有有趣且實用的功能等着你去探索。若是你想讓你的iTerm2外觀變得炫酷的,更加極客。不妨看看這裏https://www.jianshu.com/p/7de00c73a2bb,如下是筆者修改後的效果圖:
篇幅有限,像密碼管理器,輸入(命令)廣播等實用的功能還有不少,這裏就不一一列舉。聽說每一個程序員都有本身的一套葵花寶典,歡迎各位同窗在留言區把你最順手的工具分享給你們!
看後有收穫記得點推薦哦!