xbindkeys 转义引号

Dan*_*gen 6 bash pulse-audio escape-characters xbindkeys

如何在 .xbindkeysrc 命令中转义引号?这些都不起作用。

"pacmd dump|awk --non-decimal-data '$1~/set-sink-volume/{system ("pacmd "$1" "$2" "$3+2500)}'"

"pacmd dump|awk --non-decimal-data '\$1~/set-sink-volume/{system ("pacmd "\$1" "\$2" "\$3+2500)}'"

"pacmd dump|awk --non-decimal-data '\$1~/set-sink-volume/{system (\"pacmd \"\$1\" \"\$2\" \"\$3+2500)}'"

"pacmd dump|awk --non-decimal-data '$1~/set-sink-volume/{system (\"pacmd \"$1\" \"$2\" \"$3+2500)}'"
Run Code Online (Sandbox Code Playgroud)

(这些命令会提高 PulseAudio 音量级别)

Mik*_*kel 7

这里有两个不同的问题,我将尝试解决这两个问题。

第一个是如何在.xbindkeysrc.

你所要做的就是执行一个在 中有效的命令bash,然后在它周围加上双引号。

例如,对于其中包含空格的命令,您必须运行

"/home/user/My Programs/progname"
Run Code Online (Sandbox Code Playgroud)

或者

/home/user/My\ Programs/progname
Run Code Online (Sandbox Code Playgroud)

bash

这意味着你需要

""/home/user/My Programs/progname""
Run Code Online (Sandbox Code Playgroud)

或者

"/home/user/My\ Programs/progname"
Run Code Online (Sandbox Code Playgroud)

在您的.xbindkeysrc.

从技术上讲,发生的事情是 xbindkeys 删除最外面的一对双引号,然后使用sh -c.


在您的示例中,命令

pacmd dump|awk --non-decimal-data '$1~/set-sink-volume/{system ("pacmd "$1" "$2" "$3+2500)}'
Run Code Online (Sandbox Code Playgroud)

在 bash 中工作正常,所以我认为问题出在其他地方。

尝试xbindkeys使用该-v选项运行,它会xbindkeys在前台运行,这样您就可以在终端上看到任何错误。

就我而言,它表明根本原因不是引用pacmd错误,而是给出了错误

...
No PulseAudio daemon running, or not running as session daemon.
Run Code Online (Sandbox Code Playgroud)

但是如果您有 PulseAudio 工作,我认为您需要更改pacmdpactl,因为手册页说这pacmd不带参数,并且网络上的其他几个示例显示pactl用于此目的。

  • 谢谢,将命令放在双引号中,根本没有转义:) (2认同)