Command line zsh:strftime命令找不到

Command line zsh:strftime命令找不到,command-line,zsh,strftime,Command Line,Zsh,Strftime,我目前正在学习zsh,现在我想使用strftime,但我得到了: zsh:未找到命令:strftime 我认为我做错了什么,因为我看到人们在他们的dot文件中一直在使用该函数。strftime是一个C函数,我相信date在命令行上具有相同的功能 有关更多信息,请参见人员日期 使用--date=STRING选项指定要格式化的日期,而不是获取当前时间。strftime在名为datetime的zsh模块中定义。zmodload命令从$module\u path中以冒号分隔的目录列表加载模块 在我的系统

我目前正在学习zsh,现在我想使用
strftime
,但我得到了:

zsh:未找到命令:strftime


我认为我做错了什么,因为我看到人们在他们的dot文件中一直在使用该函数。

strftime
是一个C函数,我相信
date
在命令行上具有相同的功能

有关更多信息,请参见
人员日期


使用
--date=STRING
选项指定要格式化的日期,而不是获取当前时间。

strftime
在名为
datetime
zsh
模块中定义。
zmodload
命令从
$module\u path
中以冒号分隔的目录列表加载模块

在我的系统上:

% echo $module_path
/usr/lib/zsh/4.3.10
% ls -l $module_path
drwxr-xr-x 3 root root 4096 2009-11-05 01:03 zsh
% ls -l $module_path/zsh/datetime*
-rw-r--r-- 1 root root 9828 2009-09-10 02:45 /usr/lib/zsh/4.3.10/zsh/datetime.so
% type -a strftime
strftime not found
% zmodload zsh/datetime
% strftime %Y-%m-%d 1271603087
2010-04-18
% type -a strftime
strftime is a shell builtin
% /bin/date -d @1271603087 +%Y-%m-%d
2010-04-18

对于任何通过谷歌到达这里的人来说,现在有一种方法可以做到这一点,它不需要
zmodload
。(当.zshrc由于资源争用而变慢时,我使用它,所以我不希望它添加新的文件系统请求。)

${(%):-%D{STRFTIME\u STRING\u HERE}
其要点如下:

  • Zsh允许
    ${VAR:-DEFAULT}
    参数替换,而无需
    VAR
  • (%)
    放在
    VAR
    之前可以扩展
    PS1
    和friends中使用的替代令牌。(这是一个非常强大的功能,因为它还授予对
    %F{green}
    等内容的访问权限。有关更多信息,请参阅
    man zshmisc
    中的“扩展提示序列”。)
  • 在提示符扩展字符串中,
    %D{…}
    调用
    strftime(3)
  • 我发现
    %D{%s}
    特别有用,因为
    %s
    检索“从纪元开始的秒数”时间戳,然后可以对其进行算术运算

    (请注意,虽然Linux、AIX、Illumos、MINIX、OSX和所有BSD系列系统都支持
    %s
    ,但它不属于POSIX的一部分,也不在Solaris、HP-UX、UnixWare、OpenServer或Cygwin和MinGW所依赖的Windows库的联机
    strftime
    文档中列出。)