Bash 脚本无法使用键盘快捷键运行

Bash 脚本无法使用键盘快捷键运行

我有这个脚本/home/username/

我可以使用以下代码通过终端运行它

./script.sh

或者

sh script.sh

它有效(它具有可执行权限)

但我无法将其分配给键盘快捷键。我正在使用键盘快捷键的“自定义快捷键”选项卡添加快捷键。也尝试使用 xbindkeys。

我到目前为止尝试过的是(将它们添加到快捷键命令中)

bash "/script.sh"
bash "./script.sh"
bash "home/username/script.sh"
home/username/script.sh
sh "/script.sh"
"/script.sh"
/script.sh
gnome-terminal "/home/username/script.sh

还有很多我记不清了。

有人能说出问题所在吗?

答案1

要将脚本添加到键盘快捷键:

  1. 除非脚本位于$PATH(如~/bin),使用完整路径对于脚本,不要使用~或相对路径。
  2. 如果使用完整路径,请(一如既往)以斜杠开头,例如:

    sh /home/username/script.sh
    

    你的例子不是:)

  3. 如果你的脚本是可执行的,只是完整路径即可:

    /home/username/script.sh
    

    如果不是,请使用前面的语言,例如:

    sh /home/username/script.sh
    

您的例子中的问题是什么

在您展示的尝试中,您要么使用了错误的路径(home/some_dir没有开始斜杠,则不是有效目录),要么使用了与预期不同的路径(指/script.sh的是根目录),要么使用了相对路径。它们都无法通过快捷键起作用。

顺便说一下,同样的规则也适用于启动应用程序。



编辑

本案中还有一个问题:

你的具体情况;使用xdotool脚本中的命令

从评论中,我们发现您运行的脚本使用命令xdotool,按下按键:

#!/bin/bash
xdotool keydown Super key w
sleep 0.5 
xdotool keyup Super 

虚拟按键快捷键组合几乎总是会导致按键冲突,因为你按下的键身体上按下,将与您按下的几乎按。

该怎么办

避免此问题的一种方法是让手指有时间“离开”按键,以避免真实按键与虚拟按键组合。即使这样,您也需要在按下快捷键后释放它们。然后脚本变为:

#!/bin/bash
# here we add a little break to give your fingers 
# the opportunity to release the keys
sleep 0.5
xdotool keydown Super key w
sleep 0.5 
xdotool keyup Super

笔记

如果问题仍然存在,请增加第 4 行的时间(并且只短暂按下快捷键)

相关内容