Mac Terminal美化及配置
记录
Terminal
- 选择Terminal的配色方案:sindresorhus/terminal-snazzy: Elegant Terminal theme with bright colors
- 配置窗口的大小,在14寸MacBook Pro上本人合适的参数如下:
配置项 | 配置值 |
---|---|
字体 | Monaco 14 |
窗口列数 | 90 |
窗口行数 | 32 |
字符间距 | 1.05 |
行间距 | 1.3 |
oh-my-zsh
详细过程可以参考Make Mac Terminal App Beautiful and Productive | by Jack Pan | Medium
- 安装oh-my-zsh
1 |
|
- 安装相关插件,包括autojump、zsh-syntax-highlighting和zsh-autosuggestions,分别可以完成常用目录跳转,命令高亮以及历史命令推荐
- 修改主题配置文件
.oh-my-zsh/themes/robbyrussell.zsh-theme
,修改为下面的内容。相比于默认效果,下面的配置主要完成了全路径显示和用户显示
1 |
|
iTerm2
- iTerm2是一款可以代替Mac原生Terminal的应用,能够完成的功能大体上与Terminal相同,同时还提供更多的功能(个人认为最强大的一个功能是通过
command
+点击在命令行中直接打开目录或者文件) - iTerm2的主题配置选择:Dracula — Dark theme for 270+ apps
- Vim的配色也可以选择Dracula
iTerm2 ssh配置
在终端中我们可以通过ssh登录到不同的服务器,但是每次都需要经过下面的一些操作,包括:
- 输入ssh命令,例如
ssh user@remote-ip
,当然如果配置了.ssh/config
,可以简化host的写法 - 输入密码
虽然只有两步,但是还是非常繁琐。利用iTerm2,我们可以实现ssh的快速自动登录,主要利用的是iTerm2中提供的Profiles配置功能以及expect命令,其中Profiles允许我们在启动新的shell的时候执行预先定义好的命令,而expect可以帮助我们交互式输入密码。
expect自动登录
expect
是一个自动化的交互套件。在执行命令或者程序的时候,系统会要求以交互的形式输入字符串,而expect就可以根据关键字进行判断,交互式输入对应的字符串。它的自动交互流程是,首先通过spawn
来启动指定的进程,之后通过expect
来获取指定关键字,利用send
来发送对应的字符串,最后执行完成退出。
下面是一个自动登录的脚本参考,脚本名称假设为loginShell.sh
:
1 |
|
首先该脚本设置了两个变量,分别是hostname和password,这两个变量需要通过命令行执行时以参数形式传递。之后通过spawn启动ssh命令。注意这里的hostname是简化的写法,需要配合.ssh/config
中的配置才能达到对应的效果。启动命令之后,expect会判断关键字并输入对应的密码,这里也是支持正则匹配的。
有了这个脚本之后,我们只需要执行下面的命令就可以完成自动登录:
1 |
|
该脚本具有较强的通用性,当然还可以修改脚本,提供更多的执行参数,达到包括端口转发等更多功能。
profiles配置
下面我们需要进行profiles配置,即每次打开对应shell的时候,都让它首先执行上面的expect命令,这样就可以完成自动登录。
配置profiles在iTerm2的偏好设置中,选择Profiles
,里面可以新建对应的配置。配置的名称,标签等可以根据实际情况进行指定,其中最为重要的是Command
项的指定。应该指定为执行Command
,并且指定为/bin/zsh
,在下面的Send
text at start中,输入需要执行的脚本绝对路径以及参数,例如:
1 |
|
这样,之后需要登录对应的服务器,只需要打开iTerm2,选择对应的Profile即可。