我想再次复制我的ssh会话.
例如,我的窗口名称是"user @ host".我希望按前缀键+ S在新窗口中执行'ssh user @ host'
$ tmux bind S confirm-before "neww ssh #W"
Run Code Online (Sandbox Code Playgroud)
尝试之后,它只发出一个没有'user @ host'选项的ssh命令.在CentOS 7上,tmux版本为1.8.
小智 6
你可以试试这样的东西,虽然它有点难看。将其放入您的tmux.conf:
bind S neww "$(ps -ao pid,tty,args | sort | awk '$1 ~ /#{pane_pid}/{VAR=$2} $2 ~ VAR && $3 ~ /ssh/{$1=\"\"; $2=\"\"; print}')"
Run Code Online (Sandbox Code Playgroud)
创建一个名为绑定S并打开一个新窗口,使用参数作为初始命令
bind S neww "..."
Run Code Online (Sandbox Code Playgroud)
执行内部命令的输出
$(...)
Run Code Online (Sandbox Code Playgroud)
列出所有进程的 pid、tty 和命令(带参数)
ps -ao pid,tty,args | ...
Run Code Online (Sandbox Code Playgroud)
按pid排序
... | sort | ...
Run Code Online (Sandbox Code Playgroud)
将输出输入 awk
... | awk '...'
Run Code Online (Sandbox Code Playgroud)
找到当前窗格/窗口的 tty,并将其放入VAR(#{}替换为 tmux)
$1 ~ /#{pane_pid}/{VAR=$2}
Run Code Online (Sandbox Code Playgroud)
查找具有我们之前找到的 tty 并且具有以ssh. 请注意,我们假设 ssh 会话的 pid 大于调用它的 shell。这在大多数情况下应该是正确的。
$2 ~ VAR && $3 ~ /ssh/{...}
Run Code Online (Sandbox Code Playgroud)
删除pid、tty,并打印剩余部分。这将是带有所有参数和选项的 ssh 命令。这是将在新窗口中执行的命令。
$1=\"\"; $2=\"\"; print
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3316 次 |
| 最近记录: |