Chinaunix首页 | 论坛 | 博客
  • 博客访问: 714856
  • 博文数量: 165
  • 博客积分: 8218
  • 博客等级: 中将
  • 技术积分: 1749
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-07 19:48
文章分类

全部博文(165)

文章存档

2014年(4)

2011年(3)

2010年(6)

2009年(43)

2008年(109)

分类: LINUX

2008-12-17 16:06:07

命令历史

bash提供了命令历史功能,即系统为每个用户维护一个命令历史文件(~/.bash_history),它在注册用户的主目录(用~表示)之下。该文件由编号的表格构成。每当注册后,用户输入命令并执行它时,该命令就自动地加到这个命令历史表中。

使用命令历史机制,用户可以方便地调用或者修改以前的命令,可以把全部或部分先前命令作为新命令予以快捷执行。这一功能称为历史替换(history substitution)。

◆history命令可以显示命令历史表中的命令。其语法格式是:

history [option][arg ?]

(1)如果不带任何参数,则history命令会显示历史命令的清单(包括刚输入的 history命令)。所有这些命令都被称作事件,一个事件表示一个操作已经发生,即一个命令已被执行。显示的各行命令之前的数字表示相应命令行在命令历 史表中的序号,称为历史事件号。历史事件号从1开始顺序向下排,最后执行的命令的事件号最大。

(2)如果history 后给出一个正整数,例如:

history 50

那么,就只显示历史表中的最后50行命令。

(3)如果history后给出一个文件名,例如:

history al

那么,就把al作为历史文件名。

◆执行历史命令是命令替换之一,它以字符“!”开头、后随1个或多个字符来定义用户 所需的某种类型的历史命令。它可以出现在输入行的任何地方,除非已在进行历史替换。如果在“!”之前加上反斜线“\”,或者在其后跟着空格、制表符、换行 符、等号“=”或开括号“(”,那么“!”就作为普通字符对待,失去特殊意义。

历史替换可以作为输入的命令行的一部分或全体。当输入行的正文中包含历史替换时,将在完成相应的替换后,在终端上显示输入的命令行,从而用户可以看到实际执行的命令(显示命令后立即执行)。


◆在默认方式下,bash使用用户主目录下面的文件“.bash_history”来保存命令历史。但是,用户也可以通过重新为环境变量HISTFILE赋值来改变存放历史命令的文件。例如:

$ HISTFILE="/home/mengqc/.myhistory"

历史文件中能够保留的命令个数有限,其默认值是500。如果用户输入的命令太多,超过限定值,那么最早输入的命令就会从历史表中删除,而新输入的命令会加到该表尾部。用户可以利用HISTSIZE变量重新设定该值。例如:

$ HISTSIZE=600

通常用户不必对命令历史表进行管理(如设置HISTSIZE的值等),由系统自动管理。利用命令历史功能,用户可以对先前输入的命令重新进行编辑、修改和执行,从而简化用户的操作。

别名

使用别名可以简化输入,方便用户。对于常用的选项或参数较多的固定命令采用别名替换,既缩短击键次数,又减少出错机率。

定义别名要使用Shell内部命令alias,其一般语法格式为:

alias [name[=value]]…

如果没有指定参数,将在标准输出(屏幕)上显示别名清单,其格式为name=value,其中name是用户(或系统)定义的别名名称,value是别名所代表的内容。注意,在赋值号“=”两边不能有空格。

例如:

$ alias  ll=' ls -l '

定义了别名ll,它代表“ls -l”。当输入ll命令后,Shell将寻找它们所维护的别名表(放在内存中的一个内部表格)。若在该表中找到命令行的第一个字段(即“ll”)时,该命 令就会被别名定义的内容所替换。定义别名时,往往用单引号将它代表的内容括起来,从而防止Shell对其中的内容产生歧义,如对空格和特殊字符另作解释。

如果想取消先前定义的别名,可使用如下命令:

unalias name…

执行后,就从别名表中删除由name指定的别名。

unalias也可以在一个命令上同时取消多个别名的定义,只须在unalias之后依次列出要取消的别名名称。也可以一次将所有的别名都从别名表中删除,使用如下命令:

unalias -a
阅读(732) | 评论(0) | 转发(0) |
0

上一篇:shell 编程4

下一篇:shell 编程6

给主人留下些什么吧!~~