说明
iTerm2 可以与 unix shell 集成在一起,在安装了 iTerm2 的 shell 集成工具后,可以在 iTerm2 中看到命令历史、当前工作目录、主机名、上传下载文件等。
安装
可以点击菜单栏 iTerm2 > Install Shell Integration
或者终端输入指令
1 | $ curl -L https://iterm2.com/misc/install_shell_integration.sh | bash |
该 bash 脚本会自动安装当前终端 shell 的对应脚本,并写入到对应的 shell 配置文件中。支持的 shell 有:bash、fish、tcsh、zsh 。
例如在 zsh shell 中执行完 bash 脚本后,.zshrc
中间中写入了下面语句:
1 | test -e "${HOME}/.iterm2_shell_integration.zsh" && source "${HOME}/.iterm2_shell_integration.zsh" |
在安装完 iTerm2 的 shell integration 后会在终端界面中最左侧多出一个蓝色三角形的标记。
如图:
有蓝色三角形的标记说明当前 shell 支持 shell integration。如需关闭标记,可以在
iTerm2 > Preferences > Profiles > (your profile) > Terminal 最下面 > Shell Integration
关闭Show mark indicators
。
使用
下载功能
在 iTerm2 中右键点击执行 ls
命令中显示的文件即可看到 Download with scp from <hostname>
的选项。想要实现这个功能需要在对应的 shell 中都安装 iTerm2 shell integration
。例如本地和服务器的 shell 都需要执行安装的步骤。
iTerm2 之后会在 iTerm2 ssh 配置
、~/.ssh/config
、 /etc/ssh_config
按照优先级从高到低来解析 hostname。如果 hostname 不正确则 iTerm2 不能正确通过 scp 命令来进行文件的下载。
有一个简单的方法是在下载方的 shell config 中指定变量 iterm2_hostname
。
指定 iterm2_hostname 只需要在 对应的 shell config 中添加下面语句:
1 | export iterm2_hostname=<hostname> |
hostname 填入对应 ip 或是域名即可。这样 iTerm2 就可以解析到 hostname,也就可以通过 iTerm2 进行文件的上传和下载了。需要注意的是该语句需要在 source "${HOME}/.iterm2_shell_integration.zsh"
执行之前声明。
如 export iterm2_hostname=example.com
下载示例如下:
但是如果是 root 用户则解析 hostname 还是会有问题,则需要去相应的配置文件如 /etc/hostname
更改主机的 hostname。
上传功能
上传功能只需要按住 Option
键并从文件浏览器(如 Finder)拖入文件到 iTerm2 终端即可,然后选择需要上传的服务器即可完成上传。
参考资料: