当我在终端输入时:
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
最后为该程序创建一个键盘快捷键就完成了。