预览加载中,请您耐心等待几秒...
1/5
2/5
3/5
4/5
5/5

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

查看命令行历史 第11章Shell 到目前为止,本书介绍的都是在bashshell中运行各种命令,一直没有关注shell本身。本章将介绍两个影响shell使用的命令:history和alias,前者可以列出所有在命令行中输入的命令,后者可以为命令创建快捷方式。这两个命令很有用,能够在使用命令行时为你节省大量时间。对于计算机用户,懒惰并不是件坏事。在使用Linux系统时,这两个命令一定能尽可能地满足用户懒惰的要求。 11.1查看命令行历史 history 每当在shell中输入命令时,命令就会保存在主(home)目录中一个名为.bash_history的文件里(文件名之前的点号表示这是一个隐藏文件,只有用ls-a才能显示出来)。在默认情况下,这个文件只保存最新的500条命令行历史记录。要查看命令行历史列表,只需输入history命令。如下所示: $history 496ls 497cdrsync_ssh 498ls 499catlinux 500exit 因为正在查看的命令可能会有500条,它们会快速地闪过屏幕,在到达最后一条记录之前,快得看不清任何内容。想要一次只查看一个屏幕的内容,就得靠老朋友less命令了。如下所示: $history|less 现在就能非常容易地逐一查看结果了。 警告现在应该明白为什么在命令行中输入密码以及其他敏感信息时,需要谨慎的原因了吧:任何能够查看.bash_history文件的人,都能够看到那些密码。小心些,仔细想想在命令行中直接输入了什么! 11.2再次运行最近运行过的命令 !! 如果想再次运行刚刚使用过的那条命令,只要输入两个叹号(!!),就能查看命令历史文件,并运行其中的最后一条命令。如下所示: $pwd /home/scott $!! pwd /home/scott 注意,先看到的是将要运行的实际命令,接着看到的是该命令的执行结果。让计算机做些乏味的工作,这是个非常有用的办法。 11.3使用数字再次运行以前运行过的命令 ![##] 当运行history时,它自动在每条命令前加一个数字。如果想运行前面的某条命令,而且也知道history赋予它的数字,这时只需要在感叹号后面跟上命令的历史编号,就能再次运行这个命令。如下所示: $pwd /home/scott $whoami scott $!499 pwd /home/scott 如果不确定这个数字是多少,再运行history命令找找看。要注意的是,在这个例子中,pwd命令第一次的历史数字是499,但在用!499再次运行这个命令后,它就变成了498,因为新命令把它在列表中向下推了一位。 11.4使用字符串再次运行以前运行过的命令 ![string] 能够通过引用命令的历史编号来再次运行它,当然不错。但这需要事先知道命令在history中的编号,而查找这个编号多少有点麻烦(虽然把history的输出通过管道传递给grep命令可能会有帮助,但仍然不是最好的办法)。为了引用以前输入的命令,通常更好的办法是按照命令的实际名称来引用。如果在感叹号后面输入某个命令的前几位字母,shell将运行它能够在.bash_history文件中找到的与之匹配的第一个命令。 $cat/home/scott/todo Buymilk Buydogfood RenewLinuxMagazinesubscription $cd/home/scott/pictures $!cat cat/home/scott/todo Buymilk Buydogfood RenewLinuxMagazinesubscription 如果在命令历史中找到3个cat命令的运行记录,即35(cat/home/scott/todo)、412(cat/etc/apt/sources.list)和496(cat/home/scott/todo),而此时输入!cat,就会运行编号为496的那条命令。如果要运行编号为412的命令,要么直接运行!412,要么在感叹号后面提供足够多的信息,让命令可以判断出要引用的是编号为412的命令。 $!cat/etc cat/etc/apt/sources.list debhttp://us.archive.ubuntu.com/ubuntubreezymainrestricted deb-srchttp://us.archive.ubuntu.com/ubuntubreezy ?mainrestricted 因为人类记忆单词要比记忆数字容易得多,所以最终可能还是采用通过字符串的方法来调用以前运行过的命令。如果觉得不确定,可以运行history命令看一看。 11.5显示所有命令的别名 alias 如果经常使用某个命令,或者是某个命令特别长、很难拼写,那么为这个命令