heyuqi 发表于 2005-12-24 12:35:58

关于命令 date 的问题

今天遇到一个很奇怪的问题,我在控制台下输入:

$ date +%Y/%m/%d-%H:%M
date: 额外的操作数 “+%Y/%m/%d-%H:%M”

但是我执行下面操作,显示正常。test_date 里写的是date +%Y/%m/%d-%H:%M。为什么会这样呢?

$ vim test_date
$ chmod +x test_date
$ test_date
2005/12/24-12:30

demonlj 发表于 2005-12-24 12:42:30

看/etc/profile
alias date='date +%c'
如果你这么运行是没有问题的:

alias date='date'
date +%F

hohoxu_hao115 发表于 2005-12-24 12:42:59

你是在虚拟终端konsole输入的吧?你在真实的终端输入试试,应该没问题了。konsole有很多奇怪的问题的。

demonlj 发表于 2005-12-24 12:47:10

ft,这是系统设置。
在哪里都一样!

hohoxu_hao115 发表于 2005-12-24 12:50:24

demonlj,你试下再说。

heyuqi 发表于 2005-12-24 12:52:02


alias date='date'
date +%F


原来如此,我一直为这个烦恼了好几天,ML为什么要这样设置的?

demonlj 发表于 2005-12-24 13:06:01

demonlj,你试下再说。
语气有点怪,但是这里是论坛我不介意的。
我当然是试过来才敢发言啦!
alias date='date +%c'
这句话定义在/etc/bashrc的最后,你可以看一下!
无论是虚拟终端还是真实的,只要你需要登陆到shell,那么系统就会执行

source ~/.bash_profile



# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH
unset USERNAME


所以它又调用~/.bashrc

# .bashrc

# User specific aliases and functions

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

可以看出,它又指向了/etc/bashrc。这样之后date自然是“等于”date +%c啦

hohoxu_hao115 发表于 2005-12-24 13:18:29

也许是这样子的,但konsole的确有问题,比如cat FILE 2 > /dev/null,在konsole下它把2当做文件名,但在真实的终端不会。还有,比如你在编译c程序时,这个语句:“printf("dddddd");”,即输出没换行,你看有什么效果。

mandrakechina 发表于 2005-12-24 13:34:19

看/etc/profile
alias date='date +%c'这是不对的,你不能对一个只能接受一个参数的命令下alias。应该重新定义zh_CN的locale,更改其date_fmt格式,好好看看最新的libc里是什么样子。

demonlj 发表于 2005-12-24 13:57:24

@_@这不是我这么做的!

heyuqi 发表于 2005-12-24 15:03:41


也许是这样子的


:shock: 你自己就没试也敢说别人 :shock::shock::shock:

jiangtao9999 发表于 2005-12-24 15:27:52

就是那个该死的 alias 闹的! :evil:

demonlj 发表于 2005-12-24 15:43:34

要不我们合伙怂恿kanker费了它吧

jiangtao9999 发表于 2005-12-24 16:33:52

好主意!
拿着剪刀去! :twisted:

heyuqi 发表于 2005-12-24 17:05:52

:twisted::twisted::twisted:

我也支持~~
页: [1] 2
查看完整版本: 关于命令 date 的问题