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

工欲善其事,必先利其器!无论工作还是学习,选择好用的工具真的太重要了。今天就给大家介绍一下笔者感觉相见恨晚的工具iTerm2,如果让我说日常开发中好用的工具有哪些,iTerm2必须拥有姓名。

作为经常和Terminal打交道的工程师来说,对于自带的Terminal来说,Windows的命令行最难用,笔者一般使用XShell。入坑Mac后发现大家都在用iTerm2,半年下来感受只有两个字:真香!

01 窗口管理

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

热键Window

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

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

普通Window

新建Window:Command + N

关闭Window:Command + W

全屏:Command + Enter, 再按一次还原

展示所有窗口:Command + Option + e

关闭窗口:Command + w

选项卡Tab

新建标签:Command + t

关闭标签:Command + w

切换标签:Command + 数字 或者 Command + 左/右方向

窗格Panes

垂直分屏:Command + d

水平分屏:Command + shift + d

切换窗格:Command + Option + 方向键 或者 Command + 左右中括号

02 即时回放

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

历史剪切板

对于普通文本编辑器来说,每次复制后都会覆盖之前的剪切板,非常不好用。而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

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

执行配置文件,效果图:

05 等你探索

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

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

工具用的好,下班回家早!5分钟玩转iTerm2!的更多相关文章

  1. [读书笔记] 你早该这么玩Excel

    <你早该这么玩Excel>只教你做两件事:如何设计一张“天下第一表”,你会恍然大悟,以前遇到的种种麻烦是因为做错了表格:如何一分钟“变”出N张表,你会明白表格是“变”出来的,不是“做”出来 ...

  2. 前端人员必会工具-apipost两分钟上手(2分钟玩转apipost)

    本文通过简单介绍如何利用ApiPost调试接口和快速的生成接口文档,让您初步体验ApiPost的魅力! 1. API写完想要测试?试试模拟发送一次请求 新建接口,我想模拟发送请求如下 curl --l ...

  3. 你早该这么玩Excel 读书笔记

    1. Excel用来分析数据,至少要有一份原始数据和对于的分类汇总数据,这两种数据在一项任务中,应该是存放在同一个Excel文档中的,在书籍中,把他们叫做源数据表和分类汇总表.用户输入源数据表,根据相 ...

  4. 海豚调度5月Meetup:6个月重构大数据平台,帮你避开调度升级改造/集群迁移踩过的坑

    当今许多企业都有着技术架构的DataOps程度不够.二次开发成本高.迁移成本高.集群部署混乱等情况,团队在技术选型之后发现并不适合自己的需求,但是迁移成本和难度又比较大,甚至前团队还留下了不少坑,企业 ...

  5. Apache DolphinScheduler 需要的sudo,还可以这么玩,长见识了!

    Apache DolphinScheduler(incubator)需要的sudo,还可以这么玩,长见识了! 在新一代大数据任务调度 - Apache DolphinScheduler(以下简称dol ...

  6. 解决Jenkins的html样式不生效问题的终极方案

    本文从四个步骤来分享我们在自行搭建jenkins过程中遇到的报表样式不全(即html报告展示不正确)的问题: 1.问题现象 2.问题原因 3.问题原因补充 4.解决方法(可以直接跳到第四步解决问题) ...

  7. 我在Apache DolphinScheduler的心路历练

    摘要:Apache DolphinScheduler 目前是 Apache 孵化项目,目前正在快速发展中.加入Apache DolphinScheduler社区已一年多,已有 400+ 公司在生产上使 ...

  8. 美女 Committer 手把手教你部署 Apache DolphinScheduler 单机版

    还在为如何部署Apache DolphinScheduler 发愁么?自上篇<美女 Committer 手把手教你使用海豚调度>的视频发布后,受到社区伙伴们的热烈欢迎.但个别小伙伴在部署这 ...

  9. 美女 Committer 手把手教你使用海豚调度

    还在为选哪个调度发愁么?还在为查使用手册愁眉不展么?来来来,先瞧一眼海豚调度的 Slogan:调度选的好,下班回家早.调度用的对,半夜安心睡.为充分贯彻这一宗旨,海豚调度一条龙服务来了,特地邀请海豚社 ...

随机推荐

  1. bilibili插件推荐

    目前看到的好的插件就两个,现在来介绍一下. 第一个是 哔哩哔哩助手 这是它的功能,这里就以截图来给大家看 以上为这个插件的所有功能. 点击前往官网 第二个是 bilibili网页端添加APP首页推荐 ...

  2. Python 学习笔记 之 02 - 高级特性总结

    切片 语法:  li.[x:y:z]  li为list.tuple等数据类型,x为开始进行切片的位置,y为切片停止的位置(不包含y),z为xy切片后的结果里,每间隔z个元素输出一次结果.  x默认为0 ...

  3. Taro 3.1 beta 发布: 开放式架构新增 4 端支持

    作者:凹凸曼-JJ 自 7 月初我们正式发布了 Taro 3,至今半年时间已然略去.期间我们不断地修复着问题,同时也在构想着下一个 minor 版本. 面对小程序平台越来越多的大环境,Taro 是选择 ...

  4. JavaSE18-字节缓冲流&字符流

    1.字节缓冲流 1.1 字节缓冲流构造方法 字节缓冲流介绍 BufferOutputStream:该类实现缓冲输出流. 通过设置这样的输出流,应用程序可以向底层输出流写 入字节,而不必为写入的每个字节 ...

  5. 记:create-react-app暴露配置报错

    上面主要是说 webpack 版本冲突 不是create-react-app本身的问题,需要手动解决. 解决办法: npm run eject // 显示所有的依赖项 如果运行出现类似这样的报错 Ar ...

  6. [水题日常]Luogu1113 杂务

    这几天又在颓. 我的blog难度目前还比较低,主要面向像我这样子的新手(当然内容也会尽量讲得具体清楚一些)x 如果有错误还请指出~ 写完随笔之后才去翻了一下这题题解之后才注意到这题是有序的 QAQ完全 ...

  7. RocketMQ源码分析 broker启动,commitlog、consumequeue、indexfile、MappedFileQueue、MappedFile之间的关系以及位置说明

    目录 1.MappedFile类属性说明 1.1.MappedFile类属性如下 1.2.MappedFile构造器说明 2.MappedFileQueue类说明 2.1.属性说明 2.2.Mappe ...

  8. SSH,公钥,私钥的理解

    参考大佬的文章:https://blog.csdn.net/li528405176/article/details/82810342    https://www.cnblogs.com/Bravew ...

  9. angular8 大地老师学习笔记---第六课

    export class TodolistComponent implements OnInit { public keyword:string; public todolist:any[]=[]; ...

  10. 从零开始手把手教你使用javascript+canvas开发一个塔防游戏01地图创建

    项目演示 项目演示地址: 体验一下 项目源码: 项目源码 代码结构 本节做完效果 游戏主页面 index.html <!DOCTYPE html PUBLIC "-//W3C//DTD ...