Chinaunix

标题: history命令保存的最大数?困惑~~ [打印本页]

作者: boywf87    时间: 2010-09-06 16:25
标题: history命令保存的最大数?困惑~~
书上说 如果注销系统  那么会将所有历史命令写入~/.bash_history,只保留最近1000条命令 (默认SHELL变量设置)

但是为什么我现在执行 history  后可以出现大于1000多条记录。

是否可以这样理解:

1。如果你不注销或者关机,那么执行hisotry命令 只要永久保存,可能记录大于1000
2。如果你注销了以后,.bash_history只保存最近的1000条记录。

还有在什么情况下,1000条以前的历史记录是无法找到的呢?
作者: 一路征程一路笑    时间: 2010-09-06 16:28
提示: 作者被禁止或删除 内容自动屏蔽
作者: boywf87    时间: 2010-09-06 16:29
................
  986  grep -i 'error' txt
  987  grep 'error' txt
  988  grep -ic 'error'
  989  grep -ic 'error'txt
  990  grep -ic 'error' txt
  991  grep -c 'error' txt
  992  grep -i 'error' txt
  993  grep -w 'error 'txt
  994  grep -w 'error' txt
  995  grep -w 'e' txt
  996  grep -w error txt
  997  cd /home/wangfei/
  998  ls
  999  sed -i 's/13456/g' 134
1000  history|grep for
1001  env
1002  history
1003  set
1004  history

执行HISTORY 后  显示结果 都到1004了。。。。
作者: 一路征程一路笑    时间: 2010-09-06 16:31
提示: 作者被禁止或删除 内容自动屏蔽
作者: boywf87    时间: 2010-09-06 16:33
history |wc -l
1000

这里显示1000

但是为什么 执行 history 显示 shell 代码都到1004 了呢?

如果重启或者注销 是否可以理解为 1~4号命令是无法显示的,被新的命令替代?
作者: 一路征程一路笑    时间: 2010-09-06 16:36
提示: 作者被禁止或删除 内容自动屏蔽
作者: boywf87    时间: 2010-09-06 16:42
[root@localhost ~]#history |head
    1  cd /media/
    2  ls
    3  ll
    4  cd /dev/
    5  ld
    6  ls
    7  cd disk
    8  ls
    9  cd ..
   10  cd cdrom

[root@localhost ~]#history
    1  cd /media/
    2  ls
    3  ll
    4  cd /dev/
    5  ld
    6  ls
    7  cd disk
    8  ls
    9  cd ..
   10  cd cdrom
   11  ls
作者: 一路征程一路笑    时间: 2010-09-06 16:54
提示: 作者被禁止或删除 内容自动屏蔽
作者: boywf87    时间: 2010-09-06 16:59
回复 8# 一路征程一路笑


    那为什么我在另外一台机器上执行 会显示编号到1004呢?

  [root@test ~]# history |tail
  997  cd /home/wangfei/
  998  ls
  999  sed -i 's/13456/g' 134
1000  history|grep for
1001  env
1002  history
1003  set
1004  history
1005  history |wc -l
1006  history |tail
作者: 一路征程一路笑    时间: 2010-09-06 17:11
提示: 作者被禁止或删除 内容自动屏蔽
作者: boywf87    时间: 2010-09-06 17:30
又是一个悬而未决的问题................


高手在哪里?
作者: obsd178    时间: 2010-09-06 17:31
echo $HISTSIZE

这个env 控制记录数
作者: 383228273    时间: 2010-09-06 18:36
# history > history.txt 把那大于1000的记录,输出到一个文件中!
# diff ~/.bash_history history.txt 比较下这两个,看看是那里不一样,怎么一个1000记录,一个1000多记录,一定有地方不一样,把它查出来!{:3_201:}
作者: 一路征程一路笑    时间: 2010-09-06 19:14
提示: 作者被禁止或删除 内容自动屏蔽
作者: 383228273    时间: 2010-09-06 20:24
仔细看了下 history 和 ~/.bash_history 的不同,大致明白!

历史命令记录数是不会超过 $HISTSIZE 这个变量值的(不管是 history | wc -l 或者 cat ~/.bash_history | wc -l 都不会超过 $HISTSIZE 这个变量值!)
$HISTSIZE 变量是表示命令历史记录数,楼主的 $HISTSIZE 是 1000 值!

至于会出显 1000 多的编号,那是 history 输出时编号问题,当満 1000 记录后,前面的记录就被删除了(连编号一同删除了),假设用 history 命令显示历史记录到 1003 了,那么用 history | head 看前面的记录,一定被删除了 3 个,显示出来的第一条的编号是 4 了,记录的个数是不被超过 $HISTSIZE 变量值的!



但是楼主7楼的那个显示不能理解!
  1. [root@localhost ~]#history |head
  2.     1  cd /media/
  3.     2  ls
  4.     3  ll
  5.     4  cd /dev/
  6.     5  ld
  7.     6  ls
  8.     7  cd disk
  9.     8  ls
  10.     9  cd ..
  11.    10  cd cdrom

  12. [root@localhost ~]#history
  13.     1  cd /media/
  14.     2  ls
  15.     3  ll
  16.     4  cd /dev/
  17.     5  ld
  18.     6  ls
  19.     7  cd disk
  20.     8  ls
  21.     9  cd ..
  22.    10  cd cdrom
  23.    11  ls
复制代码
执行 history | head 能显示出 “1  cd /media/” 这条历史命令,那么再执行 history 这个命令时候 “1  cd /media/” 历史就应该不见了(被挤出去了),而排在第 1行的应该是 “2  ls”了,如果确实是楼主说的这样,就只能说历史记录没有满(即没有达到或超过 $HISTSIZE 记录条数)才会这样!

{:3_201:}
作者: omycle    时间: 2010-09-06 21:48
查了一下man手册,还没有man 1 history.
作者: nagaregawa    时间: 2010-09-07 09:07
如果有1004条记录,那么1-4条应该不存在了吧
作者: redhatuser    时间: 2010-09-07 18:34
这个问题的讨论价值在哪里呢?迷惑中,,,,
作者: witer666    时间: 2010-09-07 22:25
你有清过历史记录,但id是自增的好像
作者: agloom    时间: 2010-09-09 18:42
本帖最后由 agloom 于 2010-09-09 18:44 编辑

history中的确只保留1000条,现在使用的命令只在在内存中,在注销后才写进history中,那时会把老的记录覆盖掉。现在用history命令时,会把history和内存中保存的最近使用命令一块显示出来,所以出现超过1000条记录。

不知道理解的对不对,请各位大虾指点。
作者: boywf87    时间: 2010-09-09 18:53
回复 15# 383228273


    如果按照你说的 ,那我的机器不是很怪异??  我查了head 和后面的编号。都是一样 超过1000
作者: boywf87    时间: 2010-09-09 18:55
。。。。。。。。。。。。。。。。。。。。  没人解答、、
作者: 383228273    时间: 2010-09-09 20:23
回复  383228273


    如果按照你说的 ,那我的机器不是很怪异??  我查了head 和后面的编号。都是一 ...
boywf87 发表于 2010-09-09 18:53



不用多说看图:



我把命令历史记录大小设置为5条!
第一个 history 命令显示刚好5条历史命令记录!
随后又执行了“echo 6”和“history”这两条命令,共7条了,但是历史记录的大小又是5条,所以新的记录到后面,前面的被“挤”出去了,总数没变呀,还是5条!

我都切图给你看了,最真实了吧,还不信自己去做测试!

{:3_196:}
作者: wild_li    时间: 2010-09-10 10:38





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2