




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
11.1 查看命令行历史 第11章Shell到目前为止,本书介绍的都是在bash shell中运行各种命令,一直没有关注shell本身。本章将介绍两个影响shell使用的命令:history和alias,前者可以列出所有在命令行中输入的命令,后者可以为命令创建快捷方式。这两个命令很有用,能够在使用命令行时为你节省大量时间。对于计算机用户,懒惰并不是件坏事。在使用Linux系统时,这两个命令一定能尽可能地满足用户懒惰的要求。11.1查看命令行历史history每当在shell中输入命令时,命令就会保存在主(home)目录中一个名为.bash_history的文件里(文件名之前的点号表示这是一个隐藏文件,只有用ls -a才能显示出来)。在默认情况下,这个文件只保存最新的500条命令行历史记录。要查看命令行历史列表,只需输入history命令。如下所示:1. $history 2. 3. 496ls 4. 497cdrsync_ssh 5. 498ls 6. 499catlinux 7. 500exit因为正在查看的命令可能会有500条,它们会快速地闪过屏幕,在到达最后一条记录之前,快得看不清任何内容。想要一次只查看一个屏幕的内容,就得靠老朋友less命令了。如下所示:1. $history|less现在就能非常容易地逐一查看结果了。警告现在应该明白为什么在命令行中输入密码以及其他敏感信息时,需要谨慎的原因了吧:任何能够查看.bash_history文件的人,都能够看到那些密码。小心些,仔细想想在命令行中直接输入了什么!11.2再次运行最近运行过的命令!如果想再次运行刚刚使用过的那条命令,只要输入两个叹号(!),就能查看命令历史文件,并运行其中的最后一条命令。如下所示:1. $pwd 2. /home/scott 3. $! 4. pwd 5. /home/scott注意,先看到的是将要运行的实际命令,接着看到的是该命令的执行结果。让计算机做些乏味的工作,这是个非常有用的办法。11.3使用数字再次运行以前运行过的命令1. !#当运行history时,它自动在每条命令前加一个数字。如果想运行前面的某条命令,而且也知道history赋予它的数字,这时只需要在感叹号后面跟上命令的历史编号,就能再次运行这个命令。如下所示:1. $pwd 2. /home/scott 3. $whoami 4. scott 5. $!4996. pwd 7. /home/scott如果不确定这个数字是多少,再运行history命令找找看。要注意的是,在这个例子中,pwd命令第一次的历史数字是499,但在用!499再次运行这个命令后,它就变成了498,因为新命令把它在列表中向下推了一位。11.4使用字符串再次运行以前运行过的命令1. !string能够通过引用命令的历史编号来再次运行它,当然不错。但这需要事先知道命令在history中的编号,而查找这个编号多少有点麻烦(虽然把history的输出通过管道传递给grep命令可能会有帮助,但仍然不是最好的办法)。为了引用以前输入的命令,通常更好的办法是按照命令的实际名称来引用。如果在感叹号后面输入某个命令的前几位字母,shell将运行它能够在.bash_history文件中找到的与之匹配的第一个命令。1. $cat/home/scott/todo 2. Buymilk 3. Buydogfood 4. RenewLinuxMagazinesubscription 5. $cd/home/scott/pictures 6. $!cat 7. cat/home/scott/todo 8. Buymilk 9. Buydogfood 10. RenewLinuxMagazinesubscription如果在命令历史中找到3个cat命令的运行记录,即35(cat /home/scott/todo)、412(cat /etc/apt/sources.list)和496(cat /home/scott/todo),而此时输入!cat,就会运行编号为496的那条命令。如果要运行编号为412的命令,要么直接运行!412,要么在感叹号后面提供足够多的信息,让命令可以判断出要引用的是编号为412的命令。1. $!cat/etc 2. cat/etc/apt/sources.list 3. deb/ubuntubreezymainrestricted 4. deb-src/ubuntubreezy 5. ?mainrestricted因为人类记忆单词要比记忆数字容易得多,所以最终可能还是采用通过字符串的方法来调用以前运行过的命令。如果觉得不确定,可以运行history命令看一看。 11.5显示所有命令的别名1. alias如果经常使用某个命令,或者是某个命令特别长、很难拼写,那么为这个命令起个别名,是很值得的。在创建别名以后,只要输入别名,就可以运行它所引用的命令。当然,如果一个命令特别复杂,或者包括好多行,则应该把它转换成脚本或者函数。不过对于小事情来说,别名也算是完美的。所有别名都保存在主目录的一个文件中,可能会在.bashrc中找到它们,但更可能会在.bash_aliases中找到它们。大多数Linux分发版会提供几个事先定义好的别名,要查看这些已有的别名,只需要在命令行中输入alias。如下所示:1. $alias 2. aliasla=ls-a3. aliasll=ls-l大多数Linux分发版尽可能减少默认别名的数量,增加新的别名就得靠你自己了,稍后就会看到。 11.6 查看特定命令的别名1. aliasaliasname在定义了多个别名后,输入alias命令,可能很难找到特定的某个别名。如果想查看一下特定别名的命令内容,只需要在alias命令后面加上这个别名的名字就可以了。如下所示:1. $aliaswgetpage 2. aliaswgetpage=wget-html-extension-recursive 3. ?-convert-links-page-requisites-no-parent$1现在,wgetpage别名到底做了什么,一目了然,既快又简单。说明第15章将会详细介绍wget命令。11.7创建新的临时别名1. aliasalias=command如果你发现自己正在反复地输入一个命令,或许这时就应该为它创建一个别名了。例如,要只查看当前工作目录中的子目录,需要使用ls -d */命令。为这个命令创建一个临时的别名,如下所示:1. $ls-d*/ 2. by_pool/libby_pix/on_floor/ 3. $aliaslsd=ls-d*/4. $lsd 5. by_pool/libby_pix/on_floor/用这种方法使用alias时,应该注意几点内容。别名中不能包含等号(=),在定义别名时,会在名称后面立即跟上一个等号。不过,在别名真正的内容中可以使用等号。此外,用这种方法创建的别名只有在当前shell会话(session)有效时才能存在。会话退出后,别名也就不存在了。想创建会话退出后仍然还能存在的别名吗?请阅读下一节内容。11.8创建新的永久别名1. aliasaliasname=command如果想让别名能够在不同的shell会话中使用,就需要把它们添加到shell用来保存别名的文件中。大多数情况下,这个文件不是 .bashrc,就是.bash_aliases。本例中使用的是.bash_aliases。不管是哪个文件,编辑它们时要十分谨慎,否则,以后登录时可能会造成麻烦。可以在编辑文件之前先做个备份,有备无患。说明如何找出应该使用哪个文件来保存别名?很简单:输入ls -a 。如果在结果中看到.bash_aliases,那就使用这个文件;否则,检查一下.bashrc,看看里面是否定义了其他别名。如果在这个文件中没有看到任何别名,那就再看看.profile,偶尔也会用到它。在.bash_aliases中增加新的别名,先用你喜欢的文本编辑器打开它,然后增加如下所示的一行:1. aliaslsd=ls-d*/11.7节中讨论的规则在这里也同样适用:别名的名称中不能包含等号(=)。在.bash_aliases中增加别名以后,保存文件并退出。但新增加的别名不能用。需要重新加载.bash_aliases(或.bashrc,如果使用的是这个文件),新增加的别名才会生效。有两种办法:第一种办法是退出shell,再登录进来,但这种办法并不好用,不推荐使用;第二种是通过运行命令来重新加载文件,如下所示。1. $.bash_aliases先是一个点号(.),后面跟着一个空格,之后是文件名(该文件名以点号作为开始)。现在新加的别名就能够运行了。因为每次增加新的别名后都需要重新加载别名文件,所以一次多增加几个别名,是个好主意。11.9删除别名1. unalias天下无不散的宴席,别名也会有不再需要使用的时候。可以使用unalias命令删除别名。1. $ls-d*/ 2. by_pool/libby_pix/on_floor/ 3. $aliaslsd=ls-d*/4. $lsd 5. by_pool/libby_pix/on_floor/ 6. $unaliaslsd 7. $lsd 8. $但要注意,正如11.7节所述,这个命令也是永远只对临时的shell 别名有效。前面例子中的lsd别名被删除了。如果对.bash_aliases文件中的别名使用unalias命令,也会删除相应的别名,但前提是一直保持shell登录状态。在退出shell,再登录回来,或是重新加载.bash_aliases时,原来删除的别名依旧存在。要从.bash_aliases中删除别名,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年二级风力发电运维值班员职业技能鉴定考试题库附答案
- 湖南广益实验中学2026届九年级英语第一学期期末复习检测试题含解析
- 2026届湖北省襄阳市宜城市九年级英语第一学期期末统考试题含解析
- 2026届浙江省杭州市西湖区英语九年级第一学期期末统考试题含解析
- 2026届湖南省郴州市资兴市兴华实验学校九年级英语第一学期期末学业水平测试模拟试题含解析
- 吉林省白城地区大安县2026届九年级化学第一学期期中质量跟踪监视模拟试题含解析
- 智能家居:智能家居委托借款合作协议
- 税务局出口退税出口货物劳务专项审计报告合同
- 离婚协议书(涉及离婚后子女心理辅导争议解决)
- 离婚后子女抚养权调整与财产分割及监护权转移合同
- Be-Safe-on-the-Way课件(省一等奖)
- 现代设计方法(修改)课件
- 苏教版四年级下册科学知识点全册
- 儿童口腔保健及不良习惯课件
- 凝结水泵解体检修课件
- 软件系统运维方案
- TDTG提升机说明书
- 管线打开作业工作安全分析(JSA)记录表
- 污水处理池 (有限空间)作业安全告知牌及警示标志
- 住院病人药物使用情况评价表
- 阳宅风水培训讲义课件
评论
0/150
提交评论