我想改变命令 date 的行为(可能通过设置一些适当的环境变量),使其返回其输出,就像它被调用一样
date --iso-8601=seconds
- 这可能吗?如何实现呢?
- 如果应用搜索到的技巧,它会限制命令日期的使用吗?或者是否仍然可以覆盖我想要的默认行为?
答案1
bash
“ alias
es” 就是答案。以下是我的摘录~/.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
。这样就可以无缝衔接了……唉,现在情况不一样了!