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

afe*_*sin 4 bash scripts shortcut-keys unity 14.04

我有这个脚本 /home/username/

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

./script.sh
Run Code Online (Sandbox Code Playgroud)

或者

sh script.sh
Run Code Online (Sandbox Code Playgroud)

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

但我无法将其分配给键盘快捷键。我正在使用键盘快捷键的“自定义快捷键”选项卡添加快捷键。也尝试过使用 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
Run Code Online (Sandbox Code Playgroud)

还有很多我不记得了。

谁能说出问题?

Jac*_*ijm 5

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

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

    sh /home/username/script.sh
    
    Run Code Online (Sandbox Code Playgroud)

    你的例子没有:)

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

    /home/username/script.sh
    
    Run Code Online (Sandbox Code Playgroud)

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

    sh /home/username/script.sh
    
    Run Code Online (Sandbox Code Playgroud)

你的例子有什么问题

在您显示的尝试中,您要么使用不正确的路径(home/some_dir不是没有起始斜杠的有效目录),要么使用另一个路径,然后是您的意思(/script.sh指的是您的根目录),要么使用相对路径。它们都不能通过快捷键工作。

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



编辑

在这种情况下的另一个问题:

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

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

#!/bin/bash
xdotool keydown Super key w
sleep 0.5 
xdotool keyup Super 
Run Code Online (Sandbox Code Playgroud)

快捷键组合中虚拟按下键实际上总是会导致键冲突,因为您实际按下的键将与您虚拟按下的键组合在一起。

该怎么办

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

#!/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
Run Code Online (Sandbox Code Playgroud)

笔记

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