我正在尝试重新创建一个在使用 tmux 时调用的命令ta
(对所有人),该命令旨在在所有可见窗格中执行给定的命令,但在本例中是对当前工作区中的所有可见 shell 执行,因为我'我现在使用平铺窗口管理器。
我得到了使这项工作所需的缺失部分上一个问题。
该命令的工作原理很简单,首先我捕获一个信号(SIGUSR2
在本例中,基于该问题中的建议)。
然后当我想发送命令时我:
- 将命令(以及检查工作区的保护子句)写到配置位置的文件中
- 将信号发送到所有 shell(本例中为 zsh)
- 这会导致 shell 在配置的位置获取脚本
- 仅当 shell 位于当前工作空间中时才会执行
捕获命令(将其添加到以下位置~/.bashrc
:
# Add trap for ta command
export USR2_COMMAND_FILE=$HOME/.ta_executable
export TA_SHELL="zsh"
trap '[[ -r $USR2_COMMAND_FILE ]] && . $USR2_COMMAND_FILE' USR2
剧本(~/dir/in/$PATH/ta
):
#!/bin/bash
to_execute="$@"
workspace="$(xdotool get_desktop)"
script="if [[ \"$workspace\" == \"\$(xdotool get_desktop)\" ]]; then $to_execute; fi"
script_location="$USR2_COMMAND_FILE"
echo $script > $script_location
for pid in $(pgrep "$TA_SHELL"); do
kill -SIGUSR2 $pid
done
问题是命令在所有 shell 中执行但然后似乎不要放弃提示(这是正确的说法吗?),我必须移动到该 shell,然后手动<enter>
按才能完成,我尝试了各种方法,但似乎没有任何效果。
我怎样才能让它放弃提示?