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

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

当我在终端输入时:

gnome-screenshot -a -f /home/manuel/Desktop/"`date`".png

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

但是,当我尝试使用键盘快捷键链接它时,我得到的是一个名为

"`date`.png"

当我进一步尝试

bash -c "gnome-screenshot -a -f /home/manuel/Desktop/"`date`".png"

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

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

所以我的问题是,为什么 bash 总是让人头疼?如果它确实是罪魁祸首的话。

谢谢,如果没有人回答,我希望创建一个 bash 文件来解决这个问题,因为之前已经多次解决了这个问题......

答案1

系统设置 -> “键盘” -> “快捷方式” -> “自定义快捷方式” 中的快捷方式未在 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 子 shell 中运行,而该子 shell 会受到单词拆分的影响。

因此只需避开第二级引号:

bash -c "gnome-screenshot -a -f /home/manuel/Desktop/\"`date`\".png"

或者更好的方法是在外部命令中使用单引号,这样就不必转义第二级引号:

bash -c 'gnome-screenshot -a -f /home/manuel/Desktop/"`date`".png'

附注:使用``已被弃用且不鼓励;最好使用$()

bash -c 'gnome-screenshot -a -f /home/manuel/Desktop/"$(date)".png'

答案2

创建可执行脚本:

以 root 身份使用您选择的编辑器编辑文件 /usr/bin/myscreenshot,即

sudo vi /usr/bin/myscreenshot

将此内容粘贴到文件中

#!/bin/bah
gnome-screenshot -a -f "/home/$USER/Desktop/`date`.png"

使该文件成为可执行脚本:

sudo chmod +x /usr/bin/myscreenshot

最后为该程序创建一个键盘快捷键就完成了。

相关内容