Chinaunix首页 | 论坛 | 博客
  • 博客访问: 709626
  • 博文数量: 67
  • 博客积分: 994
  • 博客等级: 准尉
  • 技术积分: 1749
  • 用 户 组: 普通用户
  • 注册时间: 2011-08-03 14:10
文章分类
文章存档

2014年(11)

2013年(14)

2012年(14)

2011年(28)

分类: LINUX

2011-10-14 19:31:32

大家是不是感觉自己越来越懒了,甚至敲几下键盘都希望最好有以前的记录。这些事已经有人替大家做了,我们现在来学习一下。
shell的命令历史机制主要由下列内部命令和环境变量实现的。
  fc命令:用于列出(-l)、编辑(-e)或重新执行命令历史缓冲区或文件中记录的命令。fc可以按照命令序号或用命令的起始字符,显示、编辑或运行先前执行过的命令。fc命令允许用户显示、不加编辑或稍加编辑的重新执行命令历史缓冲区或文件中保存的命令,其语法格式如下:
  fc [ -e ename]  [-nlr] [first [ last ] ]
  fc  -e  [old=new] [commmand]
  fc  -s  [old=new] [commmand]
第一种语法格式表示从用户输入的命令历史缓冲区或文件中选择指定范围的命令。要了解更详细的信息可以man一下。

例如:列出最近执行的命令,可以如下:在默认下一般显示最近16条命令。
为了列出最近以echo为起始的字符串命令,可以使用
***@czaiy-Satellite-L700:~$ fc -l echo
509     echo '$var "testing"'
510     ls -l [Bb]*
511     fc -l
为了利用vim编辑并执行序号为502至510之间的一组命令,可以使用下列命令
***@czaiy-Satellite-L700:/usr/src$ fc -e vi 502  510
echo \*
*
echo "hello"
hello
echo "\"hello\",he "
"hello",he
echo \\
\
var=hello
echo $var
hello
echo '$var'
$var
echo '$var "testing"'
$var "testing"
ls -l [Bb]*
ls: 无法访问[Bb]*: 没有那个文件或目录
***@czaiy-Satellite-L700:/usr/src$
第二和第三种命令形式表示跳过编辑阶段。如果存在“old=new”形式的字符串替换,则由shell直接执行命令行替换,然后重行执行编辑后的新命令。如果为给出命令,则表示之前刚执行的命令。
例如,为了重复执行先前的ls命令,可以使用下列命令
***@czaiy-Satellite-L700:~$ ls
createthread.c    fork.c         offset.c    电子书    课件  图片  音乐
fork        linux-3.0.4  oncerun.c    公共的    模板  文档  桌面
fork1.c        offset         程序    进程    视频  下载
***@czaiy-Satellite-L700:~$ fc -s
ls
createthread.c    fork.c         offset.c    电子书    课件  图片  音乐
fork        linux-3.0.4  oncerun.c    公共的    模板  文档  桌面
fork1.c        offset         程序    进程    视频  下载
***@czaiy-Satellite-L700:~$
history命令
history命令用于列出命令历史缓冲区或文件中记录的命令。
例如列出最近的5条命令
***@czaiy-Satellite-L700:~$ history  5
  567  ls
  568  ls
  569  history
  570  history -5
  571  history  5
也可以通过“!”执行历史执行过的命令
***@czaiy-Satellite-L700:~$ !568
ls
createthread.c    fork.c         offset.c    电子书    课件  图片  音乐
fork        linux-3.0.4  oncerun.c    公共的    模板  文档  桌面
fork1.c        offset         程序    进程    视频  下载
!!就是执行上次刚刚执行过的命令。
***@czaiy-Satellite-L700:~$ !!
ls
createthread.c    fork.c         offset.c    电子书    课件  图片  音乐
fork        linux-3.0.4  oncerun.c    公共的    模板  文档  桌面
fork1.c        offset         程序    进程    视频  下载

下面是shell的环境变量实现的历史命令方式
HISTFILE变量用于制定命令历史文件。使shell能够載停止运行之前把缓冲区中的命令历史记录写入
指定的文件,以便載下一次启动时shell能够回读其中保存的、上一次会话期间执行的命令历史记录。默认的命令历史记录文件为$HOME/.sh_history.

***@czaiy-Satellite-L700:~$ echo $HISTFILE
/home/***/.bash_history
***@czaiy-Satellite-L700:~$ cat /home/***/.bash_history  10
vim offset.c
vim offset
cd 桌面
类似
ls
ls
cd /home/桌面
cd /home/***/桌面
类似
ls
ls
cd ..
rm offset.c.pdf
ls
rm offset.c.odt
.............
HISTSIZE变量指定历史文件的大小。用于限制当前会话期间需要保存到历史命令文件中的命令数。默认HISTSIZE值为128,即保存最近执行的128条命令
***@czaiy-Satellite-L700:~$ echo $HISTSIZE
500
当然上面定义值为500.
好了,你是否已经掌握偷懒的方法?
阅读(5470) | 评论(3) | 转发(0) |
给主人留下些什么吧!~~

WuYaalan2011-10-15 16:24:12

todaygood: 非常有用!.....

WuYaalan2011-10-15 16:23:32

:-)

todaygood2011-10-15 07:21:19

非常有用!