我需要维护这个 shell 脚本:
export DAYDAY=`gdate --date "30 days ago" +"%Y%m%d"`
if [ -d $TMP/AA/$DAYDAY]; then
rm -r $TMP/AA/$DAYDAY
fi
但我无法运行它,因为它找不到gdate
;此代码用于清除恰好 30 天前的日志目录。
这是G NU 的date
;呼吁gdate
与 BSD 相关的系统将其与自己的date
.
我在 90% 的 Mac 办公室中使用 Linux 工作,我的很多同事的脚本都引用了gsed
和gdate
. 在我无法通过打开开关正确解决此问题的地方,$OSTYPE
我最终投降并做到了:
sudo ln -s $(which date) /bin/gdate
这个符号链接gdate
到date
.
这是相当安全的,因为不应该有一个gdate
(或一个gsed
,gtar
或gmake
),因为安装在 GNU/Linux上的版本显然是GNU 版本。
当然,您也可以给命令起别名,但这会继承用户和 shell。它实际上是对整个程序进行别名处理。
在 Linux 以外的 *nix 系统上,安装 GNU 风格的实用程序并以 a 为前缀是相当普遍的g
(例如gmake
,gtar
等)。在这种情况下,这很可能是指该date
命令的 GNU 风格。因此,既然您在 Linux 上,只需将其更改为date
:
export DAYDAY=`date --date "30 days ago" +"%Y%m%d"`
if [ -d $TMP/AA/$DAYDAY]; then
rm -r $TMP/AA/$DAYDAY
fi