使用touch -t命令设置特定日期时显示异常的问题求助
使用touch -t命令设置特定日期时显示异常的问题求助
嗨,我来帮你理清楚这个问题~
其实你的touch命令本身完全没问题,问题出在ls -l的默认显示规则上!
Unix/Linux(包括你用的macOS)下的ls命令,会根据文件时间和当前系统时间的间隔来决定日期显示格式:
- 如果文件的修改/访问时间距离现在不到6个月,就显示「月 日 时分」
- 如果超过6个月,就会把时分换成年份
你第一个例子用的是12月18日的时间,假设你操作的时候是在12月或者次年1-5月之间,这个时间和当前时间的间隔在6个月内,所以ls -l显示时分;而第二个例子是6月1日,要是你操作的时候是在12月(从第一个例子的12月来看很可能),6月到12月已经超过6个月了,所以ls自动换成了显示年份。
要验证touch是否真的正确设置了时间,你可以用更详细的ls命令:
- 如果你是macOS(看你的输出里有
staff组,应该是),用ls -lT testShell00,就能看到完整的年、月、日、时分秒 - 要是是GNU ls(比如Linux),可以用
ls -l --time-style=long-iso testShell00,同样能看到完整时间
如果就是想让ls -l每次都显示时分和年份,你可以给ls设置别名,比如在macOS里把alias ls='ls -lT'加到你的~/.zshrc或者~/.bashrc里,下次打开终端就生效了。
总结一下:你的touch操作完全正确,只是ls的默认显示逻辑在搞怪,用详细时间显示命令就能确认啦!
备注:内容来源于stack exchange,提问作者Jonatha Costa
相关产品推荐
相关产品推荐

