是否可以让日期默认以 ISO 8601 格式返回其结果

是否可以让日期默认以 ISO 8601 格式返回其结果

我想改变命令 date 的行为(可能通过设置一些适当的环境变量),使其返回其输出,就像它被调用一样

date --iso-8601=seconds
  1. 这可能吗?如何实现呢?
  2. 如果应用搜索到的技巧,它会限制命令日期的使用吗?或者是否仍然可以覆盖我想要的默认行为?

答案1

bashaliases” 就是答案。以下是我的摘录~/.bash_aliases

#
# Various timestamping commands
# ds 15Aug27
alias ds="date +%y%b%d"
# timestamp "11May14-191416"
alias timestamp="date +%y%b%d-%H%M%S"
# today "20110514"
alias today="date +%Y%m%d"
# tshhmmss "11May14-191540"
alias tshhmmss="date +%y%b%d-%H%M%S"
# tshhmm "11May14-1916"
alias tshhmm="date +%y%b%d-%H%M"
# tsymd "2011-May-14"
alias tsymd="date +%Y-%b-%d"
# tsjou "18-11-01 01:55:28" for journalctl --since
alias tsjou="date '+%y-%m-%d %H:%M:%S'"
# tsiso "2020-02-18T13:31:37-05:00"
alias tsiso="date --iso-8601=seconds"

你想要的是最后一个,tsiso

别名使date以及其他命令更加有用。阅读后man date;info date,您几乎可以用 做任何事情date

答案2

我找到了解决这个问题的另一种方法以及类似的 ls 方法:

将以下几行添加到末尾 /etc/bash.bashrc

# 2020-02-23 hinzugefügt für Datumsformat ISO-8601 bei ls:
export TIME_STYLE=long-iso
alias ls='ls –color=auto'
# 2020-02-23 hinzugefügt für date (denn das reagiert nicht auf TIME_STYLE):
alias date='date -Iseconds'

为了工作ls,您必须注销并重新登录。

但是,如果您像这种特定的格式(例如,第二个)那样执行此操作,则不能再使用任何其他格式选项来date覆盖它。它会被拒绝,因为提供了多个格式选项。您可以unalias通过在命令前添加反斜杠来解决这个问题date,例如:\date -Ihours

尽管如此,您仍必须在所使用的任何脚本中使用unalias该命令。date如果您使用某人编写的、但不知道date已被修改的脚本,则可能会出现问题!

date如果每个类别有多个选项,如果也能遵守或只采用最后一个选项,那就太好了TIME_STYLE。这样就可以无缝衔接了……唉,现在情况不一样了!

相关内容