【问题标题】:Terminal Creating Alias Error终端创建别名错误
【发布时间】:2015-10-18 07:16:33
【问题描述】:

我想在终端 (OSX) 中为此命令创建一个别名:

cal -y | awk -v month="`date +%m`" -v day="`date +%e` " '{m=int((NR-3)/8)*3+1; for (i=0;i<3;i++) {t[i]=substr($0,1+i*22,20) " "; if (m+i==month) sub(day,"\033[0;31m&\033[0m",t[i]);} print t[0],t[1],t[2];}'

该命令在我刚刚运行时运行良好,但是当我尝试为其创建别名时,它给了我这个错误:

意外标记 `(' 附近的语法错误

我创建别名的代码是:

alias caly='cal -y | awk -v month="`date +%m`" -v day="`date +%e` " '{m=int((NR-3)/8)*3+1; for (i=0;i<3;i++) {t[i]=substr($0,1+i*22,20) " "; if (m+i==month) sub(day,"\033[0;31m&\033[0m",t[i]);} print t[0],t[1],t[2];}''

我还尝试使用转义序列,因为错误可能是在我将单引号放在整行之前,命令中已经存在单引号。这是我尝试的第二段代码(这给了我同样的错误):

alias caly='cal -y | awk -v month="`date +%m`" -v day="`date +%e` " \'{m=int((NR-3)/8)*3+1; for (i=0;i<3;i++) {t[i]=substr($0,1+i*22,20) " "; if (m+i==month) sub(day,"\033[0;31m&\033[0m",t[i]);} print t[0],t[1],t[2];}\''

有谁知道我该如何解决这个错误?我对终端很陌生,所以任何建议都值得赞赏!

【问题讨论】:

  • 你到底想做什么?
  • 所以终端中有一个“cal 2015”功能,可以让您查看全年的日历,但它不会突出显示当前日期。我在网上找到了一个实际上可以让你这样做的命令,但由于它真的很长,我想为该命令创建一个别名,并最终将该别名保存在 bash 配置文件中。但是,创建别名的命令不起作用,所以我想知道是否有人知道它有什么问题。谢谢!

标签: macos terminal alias


【解决方案1】:

错误是因为您传递给alias 的命令字符串用单引号括起来,它本身也包含单引号。

我怀疑是否有一个仍然使用alias 的简单解决方案。我看起来您将传递给alias 的表达式推得太远了。请考虑将您的代码放在一个 shell 脚本中,然后将该脚本添加到您的搜索路径中的目录中。

【讨论】:

    猜你喜欢
    • 2020-06-08
    • 2019-06-15
    • 2021-09-08
    • 2014-02-04
    • 2012-11-15
    • 2015-07-12
    • 2012-03-07
    • 2020-02-04
    • 1970-01-01
    相关资源
    最近更新 更多