工具用的好,下班回家早!iTerm2使用技巧指北!

  1. 同时打开多个终端窗口,来回切换太麻烦!
  2. 能不能像IDEA同样,可以查看历史粘贴记录?
  3. 有没有办法一键登录服务器?

工欲善其事,必先利其器!不管工做仍是学习,选择好用的工具真的过重要了。今天就给你们介绍一下笔者感受相见恨晚的工具iTerm2,若是让我说平常开发中好用的工具备哪些,iTerm2必须拥有姓名。mysql

做为常常和Terminal打交道的工程师来讲,对于自带的Terminal来讲,Windows的命令行最难用,笔者通常使用XShell。入坑Mac后发现你们都在用iTerm2,半年下来感觉只有两个字:真香!程序员

01 窗口管理

窗口,固然是想怎么分就怎么分!和Mac原生的Terminal一个关键的区别就是iTerm2支持任意分割和建立窗口。sql

热键Window

首先,你能够设置一个打开iTerm窗口的快捷键,iTerm2->Perferences->Kes->Hotkey,这样就能够在打开时快人一步!shell

若是已经打开了iTem2应用,就能够经过快捷键一键打开和隐藏。默认的Hotkey Window最大的特色就是透明和悬浮,它可以悬浮在任意窗口上面。数据库

普通Window

新建Window:Command + N
关闭Window:Command + W
全屏:Command + Enter, 再按一次还原
展现全部窗口:Command + Option + e
关闭窗口:Command + wvim

选项卡Tab

新建标签:Command + t
关闭标签:Command + w
切换标签:Command + 数字 或者 Command + 左/右方向浏览器

窗格Panes

垂直分屏:Command + d
水平分屏:Command + shift + d
切换窗格:Command + Option + 方向键 或者 Command + 左右中括号服务器

02 即时回放

除了窗口划分,Term2的另外一杀手锏就是回放。不只能够查看剪切板的历史记录,还能像视频同样回放窗口内的历史记录!ssh

历史剪切板

对于普通文本编辑器来讲,每次复制后都会覆盖以前的剪切板,很是很差用。而iTerm2提供了和IDEA同样查看历史剪切板功能,对于笔者这种CV工程师来讲是至关友好了!编辑器

快捷键:Command + Shift + h

历史命令提示

命令提示,可以提示最近输入的内容,以及经常使用的命令;须要注意的是,这里仅仅会输入过的内容,固然iTerm也有命令补全插件,后面会进行介绍。

快捷键:Command + ;

固然除了历史命令提示以外,也可使用系统支持的方式来搜索和查看历史命令。

上一条命令:Ctrl + p(previous) 或 向上方向键
下一条命令: Ctrl + n(next) 或 向下方向键
搜索历史命令:ctrl + r

即时回放

很是有意思的功能,像录屏同样,记录过去一段时间内窗口显示的内容。

快捷键:Command + Option + b


前进/后退:左右箭头/鼠标拖动进度条**
退出回放:esc

03 快捷功能

智能复制

在item中选中即复制,被选择的文本会自动保存在剪切板中。双击选中,三击选中整行,四击智能选择,能够智能的选中你想要的数据,如网址,邮箱,括号或引号中的数据等。

一样也支持快速粘贴,鼠标选中复制后,能够经过鼠标中键或者Command+v进行粘贴。同时,选中后也能够经过拖拽实现快速的复制和粘贴。

使用Command+f便可完成搜索,搜索后,经过Tab 或者 Tab + Shift可向右或向左扩大选中范围,完成复制。

Command+f

妙用Command

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

04 一键登录

对于快捷登录这种基本操做,iTerm2固然也能很好支持。只须要在将脚本配置到iTerm2->Preferences->Profiles->General中的Command输入框中,既能够是单行命令,也能够是Shell脚本文件。

ssh + sshpass

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脚原本解决。

expect 是用来进行自动化控制和测试的工具,主要是用来和ssh/talnet/ftp等这些交互式软件进行自动交互,好比远程自动输入密码,执行脚本等。

expect的大体原理就是,首先spawn咱们要执行的命令A,而后设置一个或多个预期命令A会输出的结果,根据设置匹配的结果选择接下来执行的分支,而后经过send命令执行后续命令,模拟键盘输入。

假如咱们要实现自动登陆线上数据库,并查看全部数据表。具体步骤能够分为如下几步:

  1. 登录跳板机
  2. 经过跳板机登录线上数据库
  3. 选择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

1

执行配置文件,效果图:

05 等你探索

iTerm2支持不少自定义的个性化配置,还有有趣且实用的功能等着你去探索。若是你想让你的iTerm2外观变得炫酷的,更加极客。不妨看看这里https://www.jianshu.com/p/7de00c73a2bb,如下是笔者修改后的效果图:

篇幅有限,像密码管理器输入(命令)广播等实用的功能还有不少,这里就不一一列举。听说每一个程序员都有本身的一套葵花宝典,欢迎各位同窗在留言区把你最顺手的工具分享给你们!

看后有收获记得点推荐哦!