我想编写一个 shell 脚本,执行录制的宏所执行的操作并重播按键。特别是生成ctrl+ a。
这可能吗?
我尝试过类似的方法echo \0141
,但它只是说没有command \0141
。
答案1
你尝试过 Expect 吗?
答案2
在 X11 中,你也许能够使用xdotool
。
xdotool key ctrl+a
答案3
应用程序运行时通常会重置终端特性,因此按 ctrl-a 实际上可能会被记录为 ASCII 1。或者一系列击键。
在控制台中,按 ctrl-v ctrl-a 可显示 ^A,然后您可获得
echo ^A | od -x
0000000 010a
其中 01 是 ctrl-a。
因此,重点是:
为了“编写”某些内容,您必须捕获终端设置,记住它们,然后在重放期间重置它们。在 shell 脚本中,这意味着解析
stty -a
并将其保存为允许您在重播期间将其发送回 stty 的格式,然后将数据流发送到终端。
终端驱动程序、图形界面等使这一过程变得非常复杂。
要获得“纯” ctrl-a,请使用 ctrl-v ctrl-a - 仅在控制台中,不一定在编辑器内。
答案4
这是我之前制作的文档页面
Serge 对 Web 开发的标准步骤感到厌倦:
- 保存存档
- 切换到浏览器(无论什么快捷方式,通常是 alt+tab)
- 刷新页面
- 查看页面是否正常
- 返回编辑器
所以他决定让事情稍微自动化一点;)
他如何改善这种情况:
- 安装 xdotool
$ sudo apt-get 安装 xdotool
- 创建 xdotool 脚本
$ mkdir 文件/脚本 $ vim Documents/scripts/vim-browser-vim.sh [...] /bin/bash #!/bin/bash # 搜索标题中包含“编码”的窗口并发送键以在 vim 中保存当前文档 xdotool 搜索“编码”键“Escape”“冒号”“w”“Return” # 搜索标题中包含“Studyladder”的窗口,激活它并刷新(在 Chrome 中为 Ctrl+r) xdotool 搜索“Studyladder”窗口激活键“Ctrl+r” # 搜索标题中包含“编码”的窗口并激活它 xdotool 搜索“编码”窗口激活 [...] chmod u+x 文档/脚本/vim-browser-vim.sh
- 将脚本连接到快捷方式
在 GNOME 中:任务栏 > 系统 > 首选项 > 键盘快捷键 > 添加
名称:vim-browser-vim 命令:/home/srivest/Documents/scripts/vim-browser-vim.sh
然后“应用”。
接下来指定您选择的快捷键。我使用了 Ctrl+2,我只是觉得手指很懒,需要锻炼一下 ;)
单击“关闭”。
- 将控制台的名称更改为“Coding”,以便 xdotool 脚本可以找到它。
现在您可以通过按快捷方式来执行脚本!
生活改变!呵呵。。
--
故障排除:
如果脚本不起作用,您需要寻找以下事项:
- 是否安装了 xdotool
- 脚本是否可以执行
- 所有窗口是否存在,它们的标题栏是否与脚本中的搜索语句匹配。例如,在示例中,我搜索studyadder。如果未在studyladder页面上打开浏览器选项卡,则顶部的标题不会显示studyladder,并且找不到该窗口。
- 很多窗口都具有相同的名称... 需要避免。如果您很急切,可以查看 xdotool 堆栈。
- GNOME 快捷方式中的脚本路径是正确的。
附言:不要尝试生成 ALT+TAB 和其他桌面组合键。这实际上可以在控制台中工作,但在 gnome 快捷方式系统启动时则不行。我在这里假设此快捷方式代码将脚本启动到其自己的沙箱中,并且生成诸如 Alt+Tab 来切换应用程序之类的东西将不起作用,因为该沙箱中没有应用程序。尝试使其工作浪费了数小时。