Skip to content

MacOS使用iTerm2

约 1243 字大约 4 分钟

MacOSiTerm2

2025-01-07

介绍

iTerm2Terminal 的替代品,也是 iTerm 的继任者。它适用于装有 macOS 10.14 或更高版本的 MaciTerm2集成了丰富的功能,比Terminal更好用。

安装

iterm2网站下载安装即可。

使用

设置背景图片

iTerm2->Settings->Profiles->Window->Background Image,选择背景图片设置即可。

设置字体

iTerm2->Settings->Profiles->Text->Font,选择字体设置即可。 我目前使用的Powerline字体,也可以选择其他字体。安装Powerline字体

添加工具脚本

之前用的比较多的就是编写一个登录或发布的.sh脚本,便捷登录云服务器或发布项目到云服务器。现在把打包脚本和发布脚本合并在一起,配置在各个项目中了,用的比较少了,但是这个功能还是挺好的。

下面通过登录云服务器介绍一下如何在iTerm2中添加并使用自定义的脚步,只要是能正常运行的脚步都可以已类似的方式使用,比如打包项目脚本、发布项目脚本等。

提示 下面的脚步中,路径、用户名等这些事写死的,也可以通过参数的形式传入,这样更灵活。但是使用时就失去了便利性,感觉反而不好,不如不同的项目使用不同的脚本去执行。

登录云服务器

我目前主要还是直接使用命令行ssh+服务器登录,如:$ ssh tdy-aliyun。这种脚本登录使用比较少,更多还是做更复杂的任务,但是通过这个例子可以了解一下使用方式。

  1. 编写登录脚本

假如脚本名称为aliyun-login.sh

使用密码登录脚本如下:

#!/usr/bin/expect
###
 # @Author: matiastang
 # @Date: 2021-12-14 11:11:14
 # @LastEditors: matiastang
 # @LastEditTime: 2022-02-25 13:52:56
 # @Description: 登录服务器
###
#  设置超时时间
set timeout 5

#  启动 SSH 子进程
spawn ssh ipv4地址

# 处理可能出现的提示
expect {
    # 初次连接提示,发送 "yes" 并继续
    "*yes/no" {
        send "yes\r";
        exp_continue
    }
    # 出现密码提示,发送密码
    "*password:*" {
        send "$password\r"
    }
    # 登录成功的提示,继续等待用户操作
    "*Welcome to*" {
        send_user "Login successful!\n"
        exp_continue
    }
}

# 这里可以添加其他预执行的指令,比如切换到某个目录下面之类的

# 切换到交互模式
interact

使用秘钥登录脚本如下:

#!/usr/bin/expect
###
 # @Author: matiastang
 # @Date: 2025-01-07 17:03:24
 # @LastEditors: matiastang
 # @LastEditTime: 2025-01-07 17:30:05
 # @Description: 脚本登录测试
### 
# 设置超时时间
set timeout 5

# 启动 SSH 子进程
spawn ssh -i ~/.ssh/matiasGithub/id_rsa -p 22 root@ipv4地址

# 处理可能出现的提示
expect {
    # 初次连接提示,发送 "yes" 并继续
    "*yes/no" {
        send "yes\r"
        exp_continue
    }
    # 登录成功的提示,继续等待用户操作
    "*Welcome to*" {
        send_user "Login successful!\n"
        exp_continue
    }
}

# 这里可以添加其他预执行的指令,比如切换到某个目录下面之类的

# 切换到交互模式
interact

脚本文件中的第一行#!/usr/bin/expect,表示使用expect解释器执行脚本。可以通过which expect查看expect路径,如果未安装需要先安装。 其中~/.ssh/matiasGithub/id_rsa私钥地址,root是用户名,ipv4地址是服务器的ipv4地址。

  1. 设置脚本权限

在脚本所在目录下,执行如下命令:

$ chmod +x aliyun-login.sh
  1. 把脚本配置到iTerm2Profiles

点击Profiles->Edit Profiles,在弹出的窗口中(SettingsProfiles项),点击+,添加一个Profile,在GeneralName编辑名称,如:登录aliyun服务器。然后在Command中选择Custom shell,在输入aliyun-login.sh脚本的地址,如:/Users/matias/matias-shell/MT/aliyun-login.sh就可以了。

注意 也可以直接通过iTerm2->Settings->Profiles来添加。

  1. 使用脚本

完成上面的添加后,在iTerm2Profiles中就能看到我们添加的登录aliyun服务器的脚本了,点击即可登录对应的云服务器。

注意 如果提示A session ended very soon after starting. Check that the command in profile "登录aliyun服务器" is correct.需要检查一下脚本是否正确。

更新文件到云服务器

通过下面脚本可以将制定路径的前端dist文件夹中的内容,更新到云服务器指定目录中。

#!/bin/zsh
###
 # @Author: matiastang
 # @Date: 2021-12-13 15:06:21
 # @LastEditors: matiastang
 # @LastEditTime: 2021-12-14 10:59:13
 # @Description: 前端包更新
###
# 检查目录是否存在
if [ -d "$HOME/文件/dist/" ]
then
    # build目录存在
    # send_tty命令用来实现在终端上显示提示符字串和一个冒号及空格
    set timeout 30
    spawn send_tty "确定更新“***”开发包吗?:"
    scp -r $HOME/文件/dist/ ipv4地址:/app/front/
    expect {
        "yes" {
            send "yes\r";
            exp_continue;
        }
        "no" {
            send "no\r"
        }
    }
    echo "已上传目录"
    interact
else
    # dist目录不存在
    echo "dist目录不存在!"
fi

参考

iterm2