+ -
当前位置:首页 → 问答吧 → 请教history命令的问题

请教history命令的问题

时间:2011-03-13

来源:互联网

打个history命令的时候,会列出从前运行的命令,每个命令前面有个标号,
现在,我想重新运行从第n行到第m行的命令,要怎么实现呢?
试过写个脚本,这样:
  1. $n=1
  2. bash -c "!$n"
复制代码
这样不行,!n这个是直接翻译成命令,再执行的
请问有其它什么方法吗?

作者: ckanhw   发布时间: 2011-03-13

试试

history |sed -n "/^  $n/,/^  $m/p"|cut -d " " -f5- >script
./script

作者: yinyuemi   发布时间: 2011-03-13

回复 yinyuemi


    谢谢楼上!
script里面是空的。

作者: ckanhw   发布时间: 2011-03-13

  1. #!bash
  2. #runhistory.sh
  3. #runhistory.sh start end
  4. history |awk '{if($1>"'"$2"'"){exit}if($1>="'"$1"'"){sub($1,"");sub(/ +/,"");system($0)}}'
复制代码

作者: ziyunfei   发布时间: 2011-03-13

回复 ckanhw


#history | tail -4
  549  date -d "@1234567890"
  550  date -d "@1293603660"
  551  history | tail
  552  history | tail -4
#m=549
#n=550
#history | sed -n "/^  $m/,/^  $n/p" | cut -d " " -f5- | sh
Sat Feb 14 07:31:30 CST 2009
Wed Dec 29 14:21:00 CST 2010

作者: Shell_HAT   发布时间: 2011-03-13

回复 Shell_HAT

这是我的history的输出
  1.      3  0:20    history
  2.      4  0:21    ls
  3.      5  0:21    ls
复制代码
知道原因了,我用的是csh,history打出来,编号前面有五个空格
后面那个cut命令是何解?还是打不出来

作者: ckanhw   发布时间: 2011-03-13

回复 ckanhw


你先自己看看cut命令的基础教程?
http://bbs.chinaunix.net/thread-457730-1-1.html

作者: Shell_HAT   发布时间: 2011-03-13

回复 Shell_HAT


    报告版主,刚看了教程,但是后面那个cut就是没有效果
以空格作分隔符,取第五个,但是就是取不到命令行
最后的结果只是把前面五个空格去掉了,后面的行号,时间还留着

作者: ckanhw   发布时间: 2011-03-13

回复 ckanhw
  1. history | sed -n "/^ *$m/,/^ *$n/ s/^ *[^ ]* *//p" | sh
复制代码

作者: Shell_HAT   发布时间: 2011-03-13