Bash

touch -d ‘20 seconds ago’ 在高山不工作

  • April 16, 2020

我正在嘗試使用

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.

在 Alpine Linux 上,touch確實符號連結到 BusyBox。

對於 GNU touch,安裝coreutils提供/bin/touch的 GNU 包:

apk add coreutils

這將適用於 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沒有指定%s並且POSIXtouch沒有指定-d@epoch(並且 BSD/OSX 沒有t 實施它)。

引用自:https://serverfault.com/questions/1012078