Command line zsh:strftime命令找不到
我目前正在学习zsh,现在我想使用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中以冒号分隔的目录列表加载模块 在我的系统
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}
其要点如下:
${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
文档中列出。)