gdate在这个shell脚本中意味着什么?

Fut*_*man 1 linux bash redhat

我需要维护这个shell脚本:

export DAYDAY=`gdate --date "30 days ago" +"%Y%m%d"` 
if [ -d $TMP/AA/$DAYDAY]; then
    rm -r $TMP/AA/$DAYDAY  
fi
Run Code Online (Sandbox Code Playgroud)

但我无法运行它,因为它无法找到gdate; 此代码用于清除正好30天的日志目录.

Rut*_*ijf 6

这是NU的date; 呼吁gdate与 BSD 相关的系统将其与自己的date.


我在 90% 的 Mac 办公室中使用 Linux,我的很多同事的脚本都引用了诸如gsed和 之类的东西gdate。在我无法通过打开开关正确解决此问题的情况下,$OSTYPE我最终投降并执行了以下操作:

sudo ln -s $(which date) /bin/gdate
Run Code Online (Sandbox Code Playgroud)

这符号链接gdatedate.

这是相当安全的,因为永远不应该有一个gdate(或gsedgtargmake),用于安装在GNU版本/ Linux的GNU版本,很明显。

当然,您也可以为命令设置别名,但这会影响用户和 shell。它实际上是整个程序的别名。


Fat*_*ror 5

在Linux以外的*nix系统它是很常见的公用事业GNU味道要安装带有前缀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
Run Code Online (Sandbox Code Playgroud)