Iterm2设置

2023-11-08

Item2

1.安装item2

使用 homebrew 安装 item2
brew install item2

可以打开 item2了使用了

查看所有 shell
cat /etc/shells
查看当前 shell
echo $SHELL
切换 shell
//切换到 base
chsh -s /bin/bash
//切换到 zsh
chsh -s /bin/zsh

2.安装插件

安装on-my-zsh

安装…

修改配置
vim ~/.zshrc
保存配置
source ~/.zshrc

3.配置expect自动登录

创建脚本
vim alecs.sh
#!/usr/bin/expect -f
set user 用户名
set host ip地址
set password 密码
set port 端口号(一般是 22)
set timeout -1

spawn   ssh -o StrictHostKeyChecking=no -p $port $user@$host
expect "*assword:*"
send "$password\r"
interact
expect eof
配置 Iterm2

image-20220625214218700

4.安装 rz sz 上传下载

mac上使用brew 安装lrzsz
brew install lrzsz
Linux 上使用 yum 安装 lrzsz
yum install -y lrzsz
在mac上创建两个脚本
  • iterm2-recv-zmodem.sh
cd /usr/local/bin
vim iterm2-recv-zmodem.sh
如果执行失败就加上 sudo
sudo vim iterm2-recv-zmodem.sh
sudo chmod 777 iterm2-*

iterm2-recv-zmodem.sh内容

#!/bin/bash
 
osascript -e 'tell application "iTerm2" to version' > /dev/null 2>&1 && NAME=iTerm2 || NAME=iTerm
if [[ $NAME = "iTerm" ]]; then
    FILE=$(osascript -e 'tell application "iTerm" to activate' -e 'tell application "iTerm" to set thefile to choose folder with prompt "Choose a folder to place received files in"' -e "do shell script (\"echo \"&(quoted form of POSIX path of thefile as Unicode text)&\"\")")
else
    FILE=$(osascript -e 'tell application "iTerm2" to activate' -e 'tell application "iTerm2" to set thefile to choose folder with prompt "Choose a folder to place received files in"' -e "do shell script (\"echo \"&(quoted form of POSIX path of thefile as Unicode text)&\"\")")
fi
 
if [[ $FILE = "" ]]; then
    echo Cancelled.
    # Send ZModem cancel
    echo -e \\x18\\x18\\x18\\x18\\x18
    sleep 1
    echo
    echo \# Cancelled transfer
else
    cd "$FILE"
    /usr/local/bin/rz -E -e -b --bufsize 4096
    sleep 1
    echo
    echo
    echo \# Sent \-\> $FILE
fi
  • iterm2-send-zmodem.sh
cd /usr/local/bin
vim iterm2-send-zmodem.sh
chmod 777 iterm2-* 
如果执行失败就加上 sudo
sudo vim iterm2-send-zmodem.sh
sudo chmod 777 iterm2-*

iterm2-send-zmodem.sh内容

#!/bin/bash
 
osascript -e 'tell application "iTerm2" to version' > /dev/null 2>&1 && NAME=iTerm2 || NAME=iTerm
if [[ $NAME = "iTerm" ]]; then
    FILE=`osascript -e 'tell application "iTerm" to activate' -e 'tell application "iTerm" to set thefile to choose file with prompt "Choose a file to send"' -e "do shell script (\"echo \"&(quoted form of POSIX path of thefile as Unicode text)&\"\")"`
else
    FILE=`osascript -e 'tell application "iTerm2" to activate' -e 'tell application "iTerm2" to set thefile to choose file with prompt "Choose a file to send"' -e "do shell script (\"echo \"&(quoted form of POSIX path of thefile as Unicode text)&\"\")"`
fi
if [[ $FILE = "" ]]; then
    echo Cancelled.
    # Send ZModem cancel
    echo -e \\x18\\x18\\x18\\x18\\x18
    sleep 1
    echo
    echo \# Cancelled transfer
else
    /usr/local/bin/sz "$FILE" --escape --binary --bufsize 4096
    sleep 1
    echo
    echo \# Received $FILE
fi
配置 Iterm2

image-20220626013228432

image-20220626013242926

Regular expression Action Parameters Instant Enabled
**B00000000000000 Run Silent Coprocess… /usr/local/bin/iterm2-recv-zmodem.sh 都行
rz waiting to receive.**B0100 Run Silent Coprocess… /usr/local/bin/iterm2-send-zmodem.sh 都行
rz :上传
#在bash中,也就是iTerm2终端输入rz 就会弹出文件选择框,选择文件 choose 就开始上传,会上传到当前目录
rz
注意:单独用rz会有两个问题:上传中断、上传文件变化(md5不同),解决办法是上传是用rz -be,并且去掉弹出的对话框中“Upload files as ASCII”前的勾选。
-a, –ascii
-b, –binary 用binary的方式上传下载,不解释字符为ascii
-e, –escape 强制escape 所有控制字符,比如Ctrl+x,DEL等
rar,gif等文件文件采用 -b 用binary的方式上传。

文件比较大而上传出错的话,采用参数 -e
如果用不带参数的rz命令上传大文件时,常常上传一半就断掉了,很可能是rz以为上传的流中包含某些特殊控制字符,造成rz提前退出。

综上,请使用 rz  -be
sz :下载
#sz fileName(你要下载的文件的名字) 回车,会弹出窗体 我们选择要保存的地方即可。
sz aaa.txt

5.解决 No such file or directory

使用rz或者 sz后出现了这个错误

/usr/local/bin/iterm2-send-zmodem.sh: line 17: /usr/local/bin/sz: No such file or directory

原因是:

由于我们使用 brew 安装lrzsz,我们的这个脚本在当前目录找不到lrzsz

lrzsz安装目录可以这样查看

brew list lrzsz                                                                                                      
/opt/homebrew/Cellar/lrzsz/0.12.20_1/bin/lrb
/opt/homebrew/Cellar/lrzsz/0.12.20_1/bin/lrx
/opt/homebrew/Cellar/lrzsz/0.12.20_1/bin/lrz
/opt/homebrew/Cellar/lrzsz/0.12.20_1/bin/lsb
/opt/homebrew/Cellar/lrzsz/0.12.20_1/bin/lsx
/opt/homebrew/Cellar/lrzsz/0.12.20_1/bin/lsz
/opt/homebrew/Cellar/lrzsz/0.12.20_1/bin/rz
/opt/homebrew/Cellar/lrzsz/0.12.20_1/bin/sz
/opt/homebrew/Cellar/lrzsz/0.12.20_1/share/man/ (2 files)

关键是这俩

/opt/homebrew/Cellar/lrzsz/0.12.20_1/bin/rz
/opt/homebrew/Cellar/lrzsz/0.12.20_1/bin/sz
解决方式有两种
方式一 :创建软连接

在 /usr/local/bin/目录下创建软连接

sudo ln -s /opt/homebrew/Cellar/lrzsz/0.12.20_1/bin/rz  /usr/local/bin/rz

sudo ln -s /opt/homebrew/Cellar/lrzsz/0.12.20_1/bin/sz  /usr/local/bin/sz
方式二:修改配置文件

修改 iterm2-recv-zmodem.sh

#!/bin/bash

osascript -e 'tell application "iTerm2" to version' > /dev/null 2>&1 && NAME=iTerm2 || NAME=iTerm
if [[ $NAME = "iTerm" ]]; then
    FILE=$(osascript -e 'tell application "iTerm" to activate' -e 'tell application "iTerm" to set thefile to choose folder with prompt "Choose a folder to place received files in"' -e "do shell script (\"echo \"&(quoted form of POSIX path of thefile as Unicode text)&\"\")")
else
    FILE=$(osascript -e 'tell application "iTerm2" to activate' -e 'tell application "iTerm2" to set thefile to choose folder with prompt "Choose a folder to place received files in"' -e "do shell script (\"echo \"&(quoted form of POSIX path of thefile as Unicode text)&\"\")")
fi

if [[ $FILE = "" ]]; then
    echo Cancelled.
    # Send ZModem cancel
    echo -e \\x18\\x18\\x18\\x18\\x18
    sleep 1
    echo
    echo \# Cancelled transfer
else
    cd "$FILE"
   	#/usr/local/bin/rz -E -e -b --bufsize 4096
    #/opt/homebrew/Cellar/lrzsz/0.12.20_1/bin/rz 换成你安装lrzsz的路径,刚才查到的那个
   /opt/homebrew/Cellar/lrzsz/0.12.20_1/bin/rz -E -e -b --bufsize 4096
    sleep 1
    echo
    echo
    echo \# Sent \-\> $FILE
fi

**修改 iterm2-send-zmodem.sh **

#!/bin/bash

osascript -e 'tell application "iTerm2" to version' > /dev/null 2>&1 && NAME=iTerm2 || NAME=iTerm
if [[ $NAME = "iTerm" ]]; then
    FILE=`osascript -e 'tell application "iTerm" to activate' -e 'tell application "iTerm" to set thefile to choose file with prompt "Choose a file to send"' -e "do shell script (\"echo \"&(quoted form of POSIX path of thefile as Unicode text)&\"\")"`
else
    FILE=`osascript -e 'tell application "iTerm2" to activate' -e 'tell application "iTerm2" to set thefile to choose file with prompt "Choose a file to send"' -e "do shell script (\"echo \"&(quoted form of POSIX path of thefile as Unicode text)&\"\")"`
fi
if [[ $FILE = "" ]]; then
    echo Cancelled.
    # Send ZModem cancel
    echo -e \\x18\\x18\\x18\\x18\\x18
    sleep 1
    echo
    echo \# Cancelled transfer
else
   #/usr/local/bin/sz "$FILE" --escape --binary --bufsize 4096
   #/opt/homebrew/Cellar/lrzsz/0.12.20_1/bin/sz 换成你安装lrzsz的路径,刚才查到的那个
   /opt/homebrew/Cellar/lrzsz/0.12.20_1/bin/sz "$FILE" --escape --binary --bufsize 4096
    sleep 1
    echo
    echo \# Received $FILE
fi

6.解决使用expect自动登录后,不能使用rz和sz命令的问题

将Mac本地的LC_CTYP环境变量设置成en_US

#不推荐直接修改,创建一个脚本,在脚本中执行
vim aliecs1.sh
#!/bin/sh
#将Mac本地的LC_CTYP环境变量设置成en_US,解决无法 rz 的问题
export LC_CTYPE=en_US
#这里是你expect自动登录的脚本
/Users/zhangzhiyuan/ssh/aliecs.sh

将Iterm2 这里的aliecs.sh改成aliecs1.sh

image-20220625221758181

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Iterm2设置 的相关文章

  • 如何在 Vimscript 中获取光标下的单词和当前行的文本?

    我正在写一个 Vim 脚本 如何获取光标下的单词和当前行的文本 你可以与expand https vimdoc sourceforge net htmldoc eval html expand and getline https vimdo
  • 用于计算数据文件中数字列表的平均值的脚本

    文件data txt包含以下内容 1 00 1 23 54 4 213 2 3 4 脚本的输出应该是 ave 54 646 一些简单的脚本是首选 这是一种方法 awk s 1 END print ave s NR RS file ave 5
  • 通过shell脚本进行串口控制

    我正在开发一个方向控制器 我有一个开发板 它通过 I2C 与传感器 指南针 通信 由于主板非常有限 没有操作系统 我开发了一个简单的程序来接收以下内容 1 get 0 读取传感器的寄存器 0 2 set 0 10 将传感器的寄存器 0 设置
  • git 错误:无法处理 https

    当我尝试使用 git clone 时https xxx https xxx我收到以下错误我不处理协议 https 有人可以帮我吗 完整消息 dementrock dementrock A8Se git 克隆https git innosta
  • 使用 python 更改目录

    我碰巧发现我无法从 python 代码中更改实际目录 我的测试程序如下 from os import system def sh script system bash c s script sh cd home sh pwd 的输出pwd
  • 在 unix 中编译 dhrystone 时出错

    我是使用基准测试和 makefile 的新手 我已经从下面的链接下载了 Dhrystone 基准测试 我正在尝试编译它 但我遇到了奇怪的错误 我尝试解决它 但没有成功 有人可以帮助我运行 dhrystone 基准测试吗 以下是我尝试编译的两
  • Python 脚本作为 Linux 服务/守护进程

    Hallo 我试图让 python 脚本作为服务 守护进程 在 ubuntu linux 上运行 网络上存在多种解决方案 例如 http pypi python org pypi python daemon http pypi python
  • 从 systemd bash 内联脚本创建 filename_$(date %Y-%m-%d)

    我正在尝试执行systemd计时器并希望将执行脚本的输出保存在每个日期的文件中 这是我的ExecStart脚本中的 service file ExecStart bin bash c echo date Y m d gt gt home u
  • 如何使用 sed 将空格替换为 \(space)?

    当我使用 sed 将所有空格替换为 X 时 该命令有效 命令为 sed s X g filelist tmp 但是 当我尝试用 space 替换所有出现的空格时 代码是 sed s g filelist tmp 这不起作用 我究竟做错了什么
  • Gearman,php 扩展问题:使用终端在 .. 中找不到类“GearmanWorker”,但可以在浏览器上使用

    我最近在 ubuntu 10 04 上安装了 gearman 并安装了它的 pecl 扩展 现在 当我在浏览器中运行一个 php 文件时 其中包含 client new GearmanWorker die var Dump client I
  • 让 TeXstudio 在 linux mint 中工作:找不到文件“url.sty”。

    刚刚切换到 Linux Mint 以前的顽固 Windows 用户 我在尝试安装 TeXstudio 时遇到一些问题 Sudo apt get install texstudio 给了我一个正确的安装 至少 我是这么认为的 但是当我尝试构建
  • Fedora dnf 更新不起作用?

    当我尝试使用 update 命令更新 Fedora 22 时 sudo dnf update 我收到以下错误 错误 无法同步存储库 更新 的缓存 无法准备内部镜像列表 Curl 错误 6 无法解析主机名 无法解析主机 mirrors fed
  • 如何从 C 程序中获取 NIC 详细信息?

    我想要获取连接到我的计算机的所有 NIC 的以下详细信息 1 接口名称 例如eth0 2 接口编号 如Windows http answers yahoo com question index qid 20080517041705AAOmJ
  • 为什么我的 Dockerfile CMD 不起作用?

    所以在我的 Dockerfile 的末尾我有这样的内容 WORKDIR home CMD django admin startproject whattt CMD bin bash 当我创建映像然后运行容器时 一切都按预期运行 没有错误 D
  • 使用 posix_spawn 启动进程

    我正在使用以下代码在 Linux 中启动新进程 pid t processID char argV 192 168 1 40 char 0 int status 1 status posix spawn processID home use
  • Linux中使用管道进行进程间通信

    我已经编写了在 linux 中写入数字以进行管道传输的代码 如下所示 但显示错误 任何人都可以帮助我解决这个问题 基本上该程序的问题陈述如下 一个程序将打开一个管道 向管道写入一个数字 其他程序将打开同一管道 读取数字并打印它们 关闭两个管
  • Web 应用程序的带宽和流量模拟器?

    您能否建议如何创建一个测试环境来模拟 Web 应用程序中的各种类型的带宽和流量 或者也许是一个针对本地主机执行此操作的开源程序 我认为在编写网络应用程序时这是一个非常重要的主题 但这不是一个常见的主题 我能想象创建这种环境的唯一方法是在本地
  • C:如果文件描述符被删除,阻塞读取应该返回

    我正在以阻塞的方式从设备 文件描述符中读取 可能会发生这样的情况 在不同的线程中 设备被关闭并且文件描述符被删除 不幸的是 读取没有返回或注意到并且一直阻塞 作为一种解决方法 我可以使用 select 作为超时来执行 while 循环 如果
  • 无法在 64 位 Linux 上从汇编 (yasm) 代码调用 C 标准库函数

    我有一个函数foo以汇编语言编写 并在 Linux Ubuntu 64 位上使用 yasm 和 GCC 编译 它只是使用以下命令将消息打印到标准输出puts 如下所示 bits 64 extern puts global foo secti
  • 如何让 STDOUT 和 STDERR 都转到终端和日志文件?

    我有一个脚本 将由非技术用户交互式运行 该脚本将状态更新写入 STDOUT 以便用户可以确定脚本运行正常 我希望将Stdout和STDERR重定向到终端 以便用户可以看到脚本正在工作 并查看是否存在问题 我还希望将两个流都重定向到日志文件

随机推荐

  • [MAC各类右键菜单修改]Automator WorkFlow: 扩展右键菜单

    一 前 废 言 话 Automator是我最喜欢的OS X预装程序之一 能轻松以简单的拖拽创建一个工作流程 WorkFlow 也能用AppleScript和终端Shell辅助完成操作 这篇帖子主要分享我最近写的一些Automator工作流程
  • JAVA NIO 基础

    原文地址 http www iteye com topic 834447 1 基本 概念 IO 是主存和外部设备 硬盘 终端和网络等 拷贝数据的过程 IO 是操作系统的底层功能实现 底层通过 I O 指令进行完成 所有语言运行时系统提供执行
  • 六、ARP协议

    一 ARP 地址解析协议 Address Resolution Protocol 是将IP地址解析为MAC地址的协议 ARP没有IP封装 Type为0X0806 ARP不能穿越路由器 不能被转发到其他广播域 ARP分为 1 正向ARP IP
  • mpvue的入门

    奔三路学习网移动版 首页 vue面试通 前端面试通 大前端知识 挨踢职场 找前端工作 搜索 主页 gt vue面试通 gt 开源框架 gt mpvue菜鸟踩坑吃鸡篇一 时间 2018 04 25 11 46 来源 未知 作者 admin 点
  • mysql show table column_Mysql 常用show命令 show table-奇乐网

    Mysql 常用show命令 show tables或show tables from database name或show database name tables 解释 显示当前数据库中所有表的名称 show databases 解释
  • leetcode 535. Encode and Decode TinyURL(对URL编解码)

    Note This is a companion problem to the System Design problem Design TinyURL TinyURL is a URL shortening service where y
  • 搞懂一般的stacking和blending只需一张图片

    搞懂一般的stacking和blending只需一张图片 搞不懂我把这张图片的纸吃了 下面再简单参考一下其他博主的对于这两种集成方法的比较 Blending的优点在于 1 比stacking简单 因为不用进行k次的交叉验证来获得stacke
  • postgresql用sql语句查询表结构

    用到的postgresql系统表 关于postgresql系统表 可以参考PostgreSQL 8 1 中文文档 系统表 pg class 记录了数据库中的表 索引 序列 视图 关系 其中比较重要字段有 relname 表 索引 视图等的名
  • JsRPC生成某乎3.0版x-zse-96学习分析,网站:aHR0cHM6Ly93d3cuemhpaHUuY29tLw==

    一 jsrpc工具 用的是github上一位大神所写的工具 里面有写具体用法 https github com jxhczhl JsRpc 点进去下载安装包 下载本地版 https wss版本需要在当前目录放证书 下载后直接双击运行 开启服
  • Java 判断一个对象中某一个属性的值是否为空

    每次写博客都不知道咋开头 算了 直接说问题吧 就是验证一个对象中的一个属性的值是否为空 自己在网上也找到了很多大神给的答案 有看到利用反射机制 public boolean checkObjFieldIsNull Object obj th
  • react 获取response header中content-disposition中的filename值

    我们在开发中经常会碰到下载文件 后端将fileName放在response header中 我们该如何获取呢 首先是请求接口 注 getResponse true 这个属性必不可少 它可以返回返回 data response 其次是代码写法
  • 不识别v-on标签,不识别v-bind标签 idea 报错(Namespace 'v-on' not bound more....)

    解决办法 setting 里面去掉这个UNbound xml namespace prefix
  • python去掉字符串重复字符_【python】【字符串】字符串首尾相连,去掉连接处的重复...

    coding utf 8 字符串从反向拆词 def string depart str1 ls str1 str tmp for str t in reversed str1 str tmp str t str tmp ls str1 ap
  • 通信技术之复用与解复用

    想像一下 如果一条信道一次只能传输一条信息 那么对于海量的信息来说 传输的速度未免太慢了 因此 我们想要一根线上传送多路信号 复用技术就应运而生了 在上一篇博客中 我们知道了PCM编码的位数是8 抽样周期是1s 8000次 125us 在这
  • 机器学习——基本认识

    一 机器学习定义 机器学习 Machine Learning 什么是机器学习 Arthur Samuel 机器学习领域的先驱之一 他编写了世界上第一个棋类游戏的人工智能程序 1959年对机器学习的定义 Machine Learning is
  • Fiddler Everywhere(TTP调试抓包工具) for Mac苹果电脑版

    Fiddler Everywhere for Mac版是Mac电脑上的一款跨平台的HTTP调试抓包工具 Fiddler Everywhere for Mac能够记录客户端与服务器之间的所有HTTP S 通信 支持对包进行监视 分析 设置断点
  • 微信小程序——小程序的API介绍

    小程序的宿主环境 API 1 小程序API概述 小程序中的API是由宿主环境提供的 通过这些丰富的小程序API 开发者可以方便的调用微信提供的能力 例如 获取用户信息 本地存储 支付功能等 2 小程序API的3大分类 小程序官方把API分成
  • 用户行为记录的一个简单例子

    分析的前提 用户行为分析的前提是用户行为的记录 如下图则记录了三个用户的用户记录 设计用户记录 用户记录都包含哪些呢 用户记录对于数据分析非常重要 可以让程序员定位bug或者性能问题 产品可以查看用户体验 甚至是广告分析数据分析和用户增长模
  • 算法学习:55. 跳跃游戏

    跳跃游戏 题目难度 中等 给定一个非负整数数组 nums 你最初位于数组的 第一个下标 数组中的每个元素代表你在该位置可以跳跃的最大长度 判断你是否能够到达最后一个下标 示例 输入 nums 2 3 1 1 4 输出 true 解释 可以先
  • Iterm2设置

    Item2 1 安装item2 使用 homebrew 安装 item2 brew install item2 可以打开 item2了使用了 查看所有 shell cat etc shells 查看当前 shell echo SHELL 切