我如何让一个shell脚本产生相当于一个按键?

我想编写一个shell脚本来完成录制的macros所做的事情,并重播按键。 特别要生成ctrl + a

这可能吗?

我已经尝试了echo \0141类的东西,但它只是说没有command \0141

你有没有试过Expect?

在X11中,您可能可以使用xdotool

 xdotool key ctrl+a 

当一个应用程序运行时,经常会重置terminal特性,所以按ctrl-a实际上可能被logging为ASCII 1或者一系列的按键。

在控制台ctrl-v ctrl-a产生^ A显示,你会得到

  echo ^A | od -x 0000000 010a 

01是ctrl-a。

所以,重点是:

为了“脚本化”你必须捕获terminal设置的东西,记住它们,然后在重放过程中重置它们。 在shell脚本中,这意味着parsing输出

 stty -a 

并保存在一个格式,让您可以发送回stty重播,然后发送您的数据stream到terminal。

terminal驱动程序,graphics界面等,这是非常复杂的。

为了得到一个“纯粹的”CTRL-使用CTRL-V CTRL-A – 只在控制台,不一定在编辑器。

从我刚刚做的一个文档页面

Serge对Web开发的标准步骤感到厌倦:

  1. 保存存档
  2. 切换到浏览器(无论什么快捷方式..通常ALT +选项卡)
  3. 刷新页面
  4. 看看页面是否正常
  5. 回到编辑

于是他决定自动化一下;)

他如何改善这种状况:

  1. 安装xdotool

$ sudo apt-get install xdotool

  1. 创buildxdotool脚本
 $ mkdir文件/脚本
 $ vim Documents / scripts / vim-browser-vim.sh
 [...]
 #!/斌/庆典

 #寻找一个标题为“Coding”的窗口,并发送键以保存vim中的当前文档
 xdotoolsearch“编码”键“转义”“冒号”“w”“返回”

 #在标题中search一个名为“Studyladder”的窗口,激活并刷新(在Chrome中Ctrl + r) 
 xdotoolsearch“Studyladder”窗口激活键“Ctrl + r”

 #寻找一个标题为“Coding”的窗口并激活它
 xdotoolsearch“编码”窗口激活
 [...]
 chmod u + x Documents / scripts / vim-browser-vim.sh
  1. 连接脚本到快捷方式

在GNOME中:任务栏>系统>首选项>键盘快捷键>添加

名称:vim-browser-vim命令:/home/srivest/Documents/scripts/vim-browser-vim.sh

然后应用。

接下来分配您select的快捷键。 我用Ctrl + 2,我只是觉得手指很懒,需要锻炼;)

点击closures。

  1. 将控制台的名称更改为“Coding”,以便xdotool脚本可以find它。

现在你可以通过按下快捷键来执行脚本!

生活改变! 呵呵..

故障排除:

如果脚本不能正常工作,则必须查找以下内容:

  1. 是安装xdotool
  2. 该脚本是可执行的
  3. 是否所有窗口都存在,是否与脚本中的search语句匹配。 例如,在这个例子中,我寻找学习者。 如果浏览器选项卡没有在studyladder页面上打开,顶部的标题不会说studyladder,窗口将不会被find。
  4. 许多同名的窗户…以避免。 如果您非常渴望,可以查看xdotool堆栈。
  5. 脚本path在GNOME快捷方式中是正确的。

PS:不要试图生成ALT + TAB和其他桌面组合键。 这实际上可以在控制台中工作,但不能在gnome快捷方式系统启动时使用。 我在这里假设这个快捷方式代码将脚本启动到自己的沙箱中,并生成像Alt + Tab这样的东西,切换应用程序将无法正常工作,因为沙箱中没有应用程序。 试图做这项工作的时间浪费了。