linux下date命令的奇怪问题,希望大神能帮我解决一下

w2050804 2018-08-09 04:27:04
今天遇见一个很奇怪的问题,已经困扰我几个小时了,问题其实很简单,就是关于,date命令;
我在公司的一台linux下敲命令:返回的结果如下
date --version
date (GNU coreutils) 8.22
Copyright (C) 2013 Free Software Foundation, Inc.
许可证:GPLv3+:GNU 通用公共许可证第3 版或更新版本<http://gnu.org/licenses/gpl.html>。
本软件是自由软件:您可以自由修改和重新发布它。
在法律范围内没有其他保证。

在联通云分配的Linux环境下
[root@ccxx-02 ~]# date --version
date (GNU coreutils) 8.22
Copyright (C) 2013 Free Software Foundation, Inc.
许可证:GPLv3+:GNU 通用公共许可证第3 版或更新版本<http://gnu.org/licenses/gpl.html>。
本软件是自由软件:您可以自由修改和重新发布它。
在法律范围内没有其他保证。

证明这两台机器的date命令的版本是相同的。

现在我在公司Linux机器上用 date '+%c' 或者date "+%Y-%m-%d" 等等 date + 格式的方式都可以正常获取。

[root@bogon ~]# date '+%c'
2018年08月09日 星期四 16时12分10秒


不过到了联通云上用以上相同的命令却一直报错,报错的内容如下:

[root@ccxx-02 ~]# date '+%c'
date: 额外的操作数 "+%c"
Try 'date --help' for more information.

[root@ccxx-02 ~]# date "+%Y-%m-%d"
date: 额外的操作数 "+%Y-%m-%d"
Try 'date --help' for more information.
[root@ccxx-02 ~]#

不过单独运行date命令可以获取结果,

[root@ccxx-02 ~]# date
四 8月 09 16:25:02 CST 2018

不过只要加上格式化,死活报错,我想请教一下大神们,这是什么原因,是否有方案可以解决呀?

...全文
368 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
w2050804 2018-08-10
  • 打赏
  • 举报
回复
引用 5 楼 u012853721 的回复:
原来是alias。
联通云定义了 alias date='date "+%a %b %d %H:%M:%S %Z %Y" ',所以你再加别的参数就不行了,但是直接用 /usr/bin/date就绕过了alias。

在联通云上,你用
unalias date

然后再执行 date '+%c' 应该就可以了。


我明白了,谢谢你了,大兄弟,满分给你啦。
ericlao2004 2018-08-09
  • 打赏
  • 举报
回复
原来是alias。
联通云定义了 alias date='date "+%a %b %d %H:%M:%S %Z %Y" ',所以你再加别的参数就不行了,但是直接用 /usr/bin/date就绕过了alias。

在联通云上,你用
unalias date

然后再执行 date '+%c' 应该就可以了。
w2050804 2018-08-09
  • 打赏
  • 举报
回复
引用 3 楼 u012853721 的回复:
看来是跟路径有关,你比较一下两个linux

# echo $PATH
# which date


公司的PATH以及DATE:

[root@bogon ~]# echo $PATH
/usr/src/hadoop3.0.3/bin:/usr/src/hadoop3.0.3/sbin:/usr/local/greatwall/jdk1.8.0_171/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/src/apache-maven-3.5.3/bin:/usr/src/hive3.0.0/bin:/usr/src/sqoop1.4.7/bin:/root/bin
[root@bogon ~]# which date
/usr/bin/date


联通云的如下:
[root@ccxx-02 mysqlbak]# echo $PATH
/usr/local/hadoop3.0.3/bin:/usr/local/hadoop3.0.3/sbin:/usr/local/jdk1.8.0_171/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/hive3.0.0/bin:/usr/local/sqoop1.4.7/bin:/root/bin
[root@ccxx-02 mysqlbak]# which date
alias date='date "+%a %b %d %H:%M:%S %Z %Y" '
/usr/bin/date
ericlao2004 2018-08-09
  • 打赏
  • 举报
回复
看来是跟路径有关,你比较一下两个linux

# echo $PATH
# which date
w2050804 2018-08-09
  • 打赏
  • 举报
回复
引用 1 楼 u012853721 的回复:
首先这个两个linux的distribution是一样的吗?

在联通云上,你用 /usr/bin/date '+%c' 或者 /bin/date '+%c' 试试


的确用你的方法可以,能不能解释一下呀?我是小白。。。
ericlao2004 2018-08-09
  • 打赏
  • 举报
回复
首先这个两个linux的distribution是一样的吗?

在联通云上,你用 /usr/bin/date '+%c' 或者 /bin/date '+%c' 试试
Date 对象属性constructor 返回对创建此对象的 Date 函数的引用。prototype 使您有能力向对象添加属性和方法。Date 对象方法getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31)。getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)。getFullYear() 从 Date 对象以四位数字返回年份。getHours() 返回 Date 对象的小时 (0 ~ 23)。getMilliseconds() 返回 Date 对象的毫秒(0 ~ 999)。getMinutes() 返回 Date 对象的分钟 (0 ~ 59)。getMonth() 从 Date 对象返回月份 (0 ~ 11)。getSeconds() 返回 Date 对象的秒数 (0 ~ 59)。getTime() 返回 1970 年 1 月 1 日至今的毫秒数。getTimezoneOffset() 返回本地时间与格林威治标准时间 (GMT) 的分钟差。getUTCDate() 根据世界时从 Date 对象返回月中的一天 (1 ~ 31)。getUTCDay() 根据世界时从 Date 对象返回周中的一天 (0 ~ 6)。getUTCFullYear() 根据世界时从 Date 对象返回四位数的年份。getUTCHours() 根据世界时返回 Date 对象的小时 (0 ~ 23)。getUTCMilliseconds() 根据世界时返回 Date 对象的毫秒(0 ~ 999)。getUTCMinutes() 根据世界时返回 Date 对象的分钟 (0 ~ 59)。getUTCMonth() 根据世界时从 Date 对象返回月份 (0 ~ 11)。getUTCSeconds() 根据世界时返回 Date 对象的秒钟 (0 ~ 59)。getYear() 已废弃。 请使用 getFullYear() 方法代替。parse() 返回1970年1月1日午夜到指定日期(字符串)的毫秒数。setDate() 设置 Date 对象中月的某一天 (1 ~ 31)。setFullYear() 设置 Date 对象中的年份(四位数字)。setHours() 设置 Date 对象中的小时 (0 ~ 23)。setMilliseconds() 设置 Date 对象中的毫秒 (0 ~ 999)。setMinutes() 设置 Date 对象中的分钟 (0 ~ 59)。setMonth() 设置 Date 对象中月份 (0 ~ 11)。setSeconds() 设置 Date 对象中的秒钟 (0 ~ 59)。setTime() setTime() 方法以毫秒设置 Date 对象。setUTCDate() 根据世界时设置 Date 对象中月份的一天 (1 ~ 31)。setUTCFullYear() 根据世界时设置 Date 对象中的年份(四位数字)。setUTCHours() 根据世界时设置 Date 对象中的小时 (0 ~ 23)。setUTCMilliseconds() 根据世界时设置 Date 对象中的毫秒 (0 ~ 999)。setUTCMinutes() 根据世界时设置 Date 对象中的分钟 (0 ~ 59)。setUTCMonth() 根据世界时设置 Date 对象中的月份 (0 ~ 11)。setUTCSeconds() setUTCSeconds() 方法用于根据世界时 (UTC) 设置指定时间的秒字段。setYear() 已废弃。请使用 setFullYear() 方法代替。toDateString() 把 Date 对象的日期部分转换为字符串。toGMTString() 已废弃。请使用 toUTCString() 方法代替。toISOString() 使用 ISO 标准返回字符串的日期格式。toJSON() 以 JSON 数据格式返回日期字符串。toLocaleDateString() 根据本地时间格式,把 Date 对象的日期部分转换为字符串。toLocaleTimeString() 根据本地时间格式,把 Date 对象的时间部分转换为字符串。toLocaleString() 据本地时间格式,把 Date 对象转换为字符串。toString() 把 Date 对象转换为字符串。toTimeString() 把 Date 对象的时间部分转换为字符串。toUTCString() 根据世界时,把 Date 对象转换为字符串。UTC() 根据世界时返回 1970 年 1 月 1 日 到指定日期的毫秒数。valueOf() 返回 Date 对象的原始值。

18,773

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 专题技术讨论区
社区管理员
  • 专题技术讨论区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧