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 文件来解决这个问题作为最后的手段,因为它以前有很多次......
系统设置 -> “键盘” -> “快捷方式” -> “自定义快捷方式”中的快捷方式不在 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 subshell 中运行。
所以只需转义第二级引号:
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)
归档时间: |
|
查看次数: |
142 次 |
最近记录: |