分类: LINUX
2008-12-17 16:06:07
bash提供了命令历史功能,即系统为每个用户维护一个命令历史文件(~/.bash_history),它在注册用户的主目录(用~表示)之下。该文件由编号的表格构成。每当注册后,用户输入命令并执行它时,该命令就自动地加到这个命令历史表中。
使用命令历史机制,用户可以方便地调用或者修改以前的命令,可以把全部或部分先前命令作为新命令予以快捷执行。这一功能称为历史替换(history substitution)。
◆history命令可以显示命令历史表中的命令。其语法格式是:
|
(1)如果不带任何参数,则history命令会显示历史命令的清单(包括刚输入的 history命令)。所有这些命令都被称作事件,一个事件表示一个操作已经发生,即一个命令已被执行。显示的各行命令之前的数字表示相应命令行在命令历 史表中的序号,称为历史事件号。历史事件号从1开始顺序向下排,最后执行的命令的事件号最大。
(2)如果history 后给出一个正整数,例如:
|
那么,就只显示历史表中的最后50行命令。
(3)如果history后给出一个文件名,例如:
|
那么,就把al作为历史文件名。
◆执行历史命令是命令替换之一,它以字符“!”开头、后随1个或多个字符来定义用户 所需的某种类型的历史命令。它可以出现在输入行的任何地方,除非已在进行历史替换。如果在“!”之前加上反斜线“\”,或者在其后跟着空格、制表符、换行 符、等号“=”或开括号“(”,那么“!”就作为普通字符对待,失去特殊意义。
历史替换可以作为输入的命令行的一部分或全体。当输入行的正文中包含历史替换时,将在完成相应的替换后,在终端上显示输入的命令行,从而用户可以看到实际执行的命令(显示命令后立即执行)。
|
历史文件中能够保留的命令个数有限,其默认值是500。如果用户输入的命令太多,超过限定值,那么最早输入的命令就会从历史表中删除,而新输入的命令会加到该表尾部。用户可以利用HISTSIZE变量重新设定该值。例如:
|
通常用户不必对命令历史表进行管理(如设置HISTSIZE的值等),由系统自动管理。利用命令历史功能,用户可以对先前输入的命令重新进行编辑、修改和执行,从而简化用户的操作。
别名
使用别名可以简化输入,方便用户。对于常用的选项或参数较多的固定命令采用别名替换,既缩短击键次数,又减少出错机率。
定义别名要使用Shell内部命令alias,其一般语法格式为:
|
如果没有指定参数,将在标准输出(屏幕)上显示别名清单,其格式为name=value,其中name是用户(或系统)定义的别名名称,value是别名所代表的内容。注意,在赋值号“=”两边不能有空格。
例如:
|
定义了别名ll,它代表“ls -l”。当输入ll命令后,Shell将寻找它们所维护的别名表(放在内存中的一个内部表格)。若在该表中找到命令行的第一个字段(即“ll”)时,该命 令就会被别名定义的内容所替换。定义别名时,往往用单引号将它代表的内容括起来,从而防止Shell对其中的内容产生歧义,如对空格和特殊字符另作解释。
如果想取消先前定义的别名,可使用如下命令:
|
执行后,就从别名表中删除由name指定的别名。
unalias也可以在一个命令上同时取消多个别名的定义,只须在unalias之后依次列出要取消的别名名称。也可以一次将所有的别名都从别名表中删除,使用如下命令:
unalias -a