别名更新到Mac上的当前时间

时间:2014-04-03 15:56:53

标签: macos bash cron launchd

我无法想象我是唯一有此需求的Mac用户。基本上,我有自定义别名,包括输出日期。但是,如果我希望第二天使用计算机时日期正确,我必须重新提供.basrc。

一个用途是通过命令行发布工作时间。

示例:

"post -d `date -v-1d "+%Y-%m-%d"`"

今天,该别名将正确解析为:

"post -d 2014-04-02"

然而,明天它仍将显示2014-04-02,除非我重新发布我的.bashrc。

我真正的问题是:我如何按月安排自动提供.bashrc

我实际上每个月只需要重新发一次(我正在做月刊)。我打算将它设置为一个cron工作,但我想,如果我的电脑在本月1日没有开启怎么办?如果是假期怎么办?一旦计算机重新上线,我需要能够运行的东西。

所以,我调查了anacron。看来这不是一个mac实用程序,也不是家庭Brew可安装。看起来我的解决方案实际上是 launchd 。但我不太确定这是否正确。

任何人都知道launchd是否是我需要的或如何设置?我似乎只能找到有关设置环境变量的信息。谢谢!

2 个答案:

答案 0 :(得分:1)

stackoverflow的标记令人困惑。要解决您的问题,请比较以下两个别名:

alias p='echo `date +%T`'
alias pp="echo `date +%T`"

只需用单个引号更改双引号。

答案 1 :(得分:1)

使用单引号或双引号会有所不同。使用双引号,shell将在行中执行它。使用单引号,shell会按字面意思传递它,并在运行别名时执行:

$ alias p='echo `date`'
$ p
Thu Apr 3 12:56:02 EDT 2014
$ p
Thu Apr 3 12:56:03 EDT 2014
$ p
Thu Apr 3 12:56:04 EDT 2014

$ alias p="echo `date`"
$ p
Thu Apr 3 12:57:14 EDT 2014
$ p
Thu Apr 3 12:57:14 EDT 2014
$ p
Thu Apr 3 12:57:14 EDT 2014

出于同样的原因,双重与单引号行为的另一个例子是对shell变量的评估:

$ x=1
$ echo '$x'
$x
$ echo "$x"
1