键盘快捷键命令和 bash 命令有什么区别?

sin*_*ata 2 command-line bash shortcut-keys date

当我输入终端时:

gnome-screenshot -a -f /home/manuel/Desktop/"`date`".png
Run Code Online (Sandbox Code Playgroud)

我有预期的结果,"dimanche 10 avril 2016, 23:36:50 (UTC+0200).png"创建了一个名为的文件。

但是,当我尝试将其与键盘快捷键链接时,我得到的是一个名为

"`date`.png"
Run Code Online (Sandbox Code Playgroud)

当我进一步尝试时

bash -c "gnome-screenshot -a -f /home/manuel/Desktop/"`date`".png"
Run Code Online (Sandbox Code Playgroud)

该文件变得dimanche意味着它停在第一个空格处。

我在引用 bash 变量时读到,要包含空格,必须使用引号,这似乎是我做到的。所以我后来尝试将date命令分配给一个$times变量并"$times"在命令中使用,但结果相同。

所以我的问题是为什么 bash 必须总是让人头疼?如果真的是罪魁祸首。

谢谢,如果没有人回答我希望创建一个 bash 文件来解决这个问题作为最后的手段,因为它以前有很多次......

kos*_*kos 5

系统设置 -> “键盘” -> “快捷方式” -> “自定义快捷方式”中的快捷方式不在 shell 中运行。

这就是为什么gnome-screenshot -a -f /home/manuel/Desktop/"`date`".png创建一个名为"`date`.png";的文件的原因。该/home/manuel/Desktop/"`date`".png部分不会被解释并逐字传递给gnome-screenshot,这会创建一个名为"`date`.png".

bash -c "gnome-screenshot -a -f /home/manuel/Desktop/"`date`".png"而不是仅仅因为您没有转义第二级引号而不起作用,这使得 Bashdate在受分词影响的 uquoted subshel​​l 中运行。

所以只需转义第二级引号:

bash -c "gnome-screenshot -a -f /home/manuel/Desktop/\"`date`\".png"
Run Code Online (Sandbox Code Playgroud)

或者甚至更好地在外部命令中使用单引号,这样就不必转义第二级引号:

bash -c 'gnome-screenshot -a -f /home/manuel/Desktop/"`date`".png'
Run Code Online (Sandbox Code Playgroud)

在旁注中使用``已被弃用和不鼓励;最好使用$()

bash -c 'gnome-screenshot -a -f /home/manuel/Desktop/"$(date)".png'
Run Code Online (Sandbox Code Playgroud)