touch -d ‘20 秒前’ 在 Alpine 中不起作用

touch -d ‘20 秒前’ 在 Alpine 中不起作用

我正在尝试使用

touch -d '20 seconds ago' file.txt

这在 Ubuntu 中有效,但在 Alpine 中无效。有人知道是否有其他软件包可以执行此操作,或者 Alpine 本身不支持它吗?

编辑:

# touch --help
BusyBox v1.28.4 (2018-12-06 15:13:21 UTC) multi-call binary.

答案1

在 Alpine Linux 上,touch确实与 BusyBox 有符号链接。

对于 GNU touch,请安装 GNUcoreutils包,它提供了/bin/触摸

apk add coreutils

答案2

这将与 busybox 一起工作touch,而date无需安装 GNU coreutils:

touch -d@$(( $(date +%s) - 20 )) file.txt

这将根据纪元时间计算日期,减去 20 秒,并将其作为所需touch使用的时间。

我使用 BusyBox 1.30.1 进行了测试(通过busybox touch -d@$(( $(busybox date +%s) - 20 )) file.txt

还请注意,这将适用于这些命令的 GNU 版本以及几乎任何实现date(GNU、BSD、OS X、BusyBox 等),POSIX date没有指定%sPOSIXtouch没有指定-d@epoch(并且 BSD/OSX 没有实现它)。

相关内容