【问题标题】:Alias to Scrot program doesn't work in .bashrc but works in terminalScrot 程序的别名在 .bashrc 中不起作用,但在终端中起作用
【发布时间】:2020-08-06 22:57:25
【问题描述】:

我正在尝试在 .bashrc 中为 scrot 命令起别名:

alias scrotn="scrot %Y-%m-%d-%s_$wx$h.jpg -e 'mv $f ~/pictures/screenshots/'"

scrot 命令在我的终端中运行,但是当我尝试运行 scrotn 时,我收到以下输出:

mv: missing destination file operand after '/home/lain/pictures/screenshots/'

已经尝试在 %Y-%m-%d-%s_$wx$h.jpg 中添加引号,切换双引号和单引号并使用 /home/lain/ 而不是 ~/。是的,~/pictures/screenshots/ 存在。我想创建一个别名以将其绑定到我的 DWM 配置中的 PrtSc 键。 抱歉英语不好。

【问题讨论】:

    标签: linux bash screenshot alias mv


    【解决方案1】:

    由于别名被定义为双引号字符串(内引号对 shell 来说无关紧要)$f 在创建别名时被扩展(可能是空字符串)。解决此问题的推荐方法是使用函数而不是别名。许多人认为别名已被弃用,因为它们的作用比函数少,正如您所发现的那样难以调试,而且实际上并不比函数简单多少。

    结果:

    scrotn() {
        [your scrot command line]
    }
    

    【讨论】:

      猜你喜欢
      • 2019-09-30
      • 1970-01-01
      • 2012-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多