Oracle/DB2/Postgresql/Mysql/Hadoop/Greenplum/Postgres-xl/Mongodb
分类:LINUX
2006-11-2021:16:31
RedHatLinux033实验部分
任务:1.以用户名student密码student在tty1上登陆。
2.在您登陆系统以后,你将进入您的home目录.你可以使用"打印工作目录"检查这一情况$pwd/home/student
3.使用如下每条命令检查您是否还有文件在您的home目录下:$ls$ls-a$ls–al为什么第一和第二条命令返回不同的文件数?第三条命令返回的在您当前的home目录下最大的文件是多少?您的home目录下有子目录吗?
4.您现在使用touch为以后的步骤建立文件。这种扩展在接下来的命令中是如何工作的在以后的章节中进行讨论。现在,仅仅按照下面的行键入就行了(在集合与集合之间使用包括花括号{}和下划线的字符)$touch{report,memo,graph}_{sep,oct,nov,dec}_{a,b,c}{1,2,3}
5.使用命令ls检查最后一条命令的结果,你会发现它在您的home目录下生成了108个新的空文件(您不必数)。这些文件代表了您将使用的在这个步骤中的代表的数据文件。如果您看不到这些文件,向教师寻找帮助,没有这些文件,该试验后面的步骤就无法进行。
6.为了组织您的文件,您必须先建立一些新目录,使用mkdir在您的home目录中直接建立一些子目录:$mkdira_reports$mkdirseptemberoctobernovemberdecember再使用ls检查您的工作。
7.使用如下命令在您的一个新的目录中生成一些附加子目录$cda_reports为了切换到目录,接下来:$mkdir123使用ls检查你的子目录a_reports下的名为1,2,3的三个新的子目录。
8.首先把所有带”b”的报告从home目录中移出并且按月份分组,先验证要使用的复杂的通配符模式,是个好方法。这样做以确保它对于正确的文件进行操作。如果你打算使用这种通配符模式,您可以使用一个无害的命令来替换您的命令。$cd$ls-l*decb你将看到列出了9个”december”,”b”文件,把其中的一个移到december目录中:$mvgraph_dec_b1december用下面的语句移动其余的:$mv*decbdecember列出december目录的内容验证移动操作是否成功:$ls-ldecembertotal0-rw-rw-r--1studentstudent0Sep1817:45graph_dec_b1-rw-rw-r--1studentstudent0Sep1817:45graph_dec_b2-rw-rw-r--1studentstudent0Sep1817:45graph_dec_b3-rw-rw-r--1studentstudent0Sep1817:45memo_dec_b1-rw-rw-r--1studentstudent0Sep1817:45memo_dec_b2-rw-rw-r--1studentstudent0Sep1817:45memo_dec_b3-rw-rw-r--1studentstudent0Sep1817:45report_dec_b1-rw-rw-r--1studentstudent0Sep1817:45report_dec_b2-rw-rw-r--1studentstudent0Sep1817:45report_dec_b3
9.把其余所有带”b”的报告分别移动到各自对应的目录中:$mv*octboctober$mv*sepbseptember
10.现在你将把”a”报告收集到它们各自对应的目录中。注意使用~代替“你的home目录”。通配符和模式的组合指定了您的home目录下所有以_a1结尾的文件。$cda_reports$mv~/*_a11/“september””a1”文件陈旧并且不再需要,使用echo确定您已经建立了一个只匹配该类文件的模式,然后删除它们,并且检查剩下的”a1”文件是否正确移动:$cd1$echo*sep*$rm*sep*$lsgraph_dec_a1graph_oct_a1memo_nov_a1report_dec_a1report_oct_a1graph_nov_a1memo_dec_a1memo_oct_a1report_nov_a1
11.最后移动”a2”和”a3”报告到各自对应的目录中。为了使过程变得有趣,我们将把它们移出当前目录,使用相对和绝对的的路径名。第一步,使用pwd确定当前目录:
$pwd/home/student/a_reports/1
用echo检查涉及到”a2”文件的模式,然后使用绝对路径名:$echo/home/student/*a2*$mv/home/student/*a2*/home/student/a_reports/2即使您当前在/home/student/a_reports/1目录下,也能把文件从/home/student移动到/home/student/a_reports/2目录中,因为您指定了文件的路径名称(在本例中为绝对路径名称)
现在使用相对路径移动“a3”文件。再一次的,首先确信模式指定的是正确的文件名称。
$echo../../*a3*$mv../../*a3*../3
12.返回您的home目录,并且使用ls来校验仅存在该目录中的文件都是“c”文件(例如:graph_dec_c1,graph_dec_c2,…)
13.“c1”和“c2”报告文件对于每个月来说都非常重要,并且您打算把它们备份到另外一个目录:
$mkdir/tmp/archive$cpreport*[12]/tmp/archive/
另外的,所有的对于十二月份的报告文件应该备份到/tmp/archice目录下面。注意,-i选项使得cp程序在覆盖任何文件之前进行提示:
$cp-ireport_dec*/tmp/archive/cp:overwrite`/tmp/archive/report_dec_c1'ncp:overwrite`/tmp/archive/report_dec_c2'n
14.现在您备份了一些对您重要的“c”文件,您现在要删除位于您的home目录下面所有的文件。使用通配符“*c*”检查剩下的含有c的文件。您为什么不想执行命令rm*c*?(作为提示:尝试:ls*c*)15.删除您的home目录下的剩余*c*文件。在发出一个破坏性的命令之前我们再次使用echo命令。$echo*c[1-3]$rm*c[1-3]$lsa_reportsdecembernovemberoctoberseptember
试验的结果一个组织良好的home目录,文件放置在合理的位置,一些文件备份到了/tmp/archive目录中
第二步:决定磁盘的使用率场景/情节您想记录您的系统中的每一个文件系统总共有多少剩余空间。另外,您想有一个关于哪些目录消耗了系统的多数的空间的列表。
任务1.使用df获取文件系统总的剩余空间,您的输出应该是类似于下面的例子(尽管输出依赖于您的特定的安装,输出可能不同)$dfFilesystem1k-blocksUsedAvailableUse%Mountedon/dev/hdc21412956818097281160209614%//dev/hdc14974388473832819%/bootnone633120633120%/dev/shm2.注意缺省的命令df操作是以块为单位报告信息,试用-h,-H选项,则是用“用户可读的“形式报告$df-hFilesystemSizeUsedAvailUse%Mountedon/dev/hdc213G1.8G11G14%//dev/hdc149M8.7M37M19%/bootnone62M061M0%/dev/shm$df-HFilesystemSizeUsedAvailUse%Mountedon/dev/hdc214G1.9G11G14%//dev/hdc151M9.1M39M19%/bootnone65M064M0%/dev/shm这两个开关有什么不同(使用mandf)?2.在您的home目录使用du(磁盘使用率)命令来决定您所有的文件消耗的空间。确保尝试-h选项获得更可读的输出。
第三步:检视文本文件任务1.我们需要一个可供我们工作的文本文件:$cd$cp/usr/share/dict/words.2.使用cat显示文件:$catwordsAarhusAaronAbaba…输出省略….ZuluZulusZurich
3.在这种情况下cat是一个坏的选择,因为很多输出快速的滚屏,试用less:$lesswordsAarhusAaronAbaba…输出省略…abidingAbidjanAbigail…输出省略…使用less的时候,您可以向前翻页(使用b),向后翻页(使用空格键)在整个输出中,每次一屏.
4.如果你只需要快速的看看某个文件的最前几行和最后几行,你要使用head或者tail:$headwordsAarhusAaronAbabaabackabaftabandonabandonedabandoningabandonmentabandons$tailwordszoologicallyzoomzoomszoosZornZoroasterZoroastrianZuluZulusZurich
哪个命令您能使用显示文件从第25,000行到结束的内容
第一步:本地用户登陆任务:1.完全从工作站中退出。确定您已经推出所有虚拟终端和XWindows系统2.转换到虚拟终端1(tty1)通过按:3.使用密码redhat进入root帐号登陆您的工作站4.确定指定的登陆信息,使用下列命令:#whoami#groups#id检查这些命令的输出。5.获取工作站当前所有登陆者信息,当前,应该只有一个用户登陆系统,按如下顺序键入的命令的输出是很有趣的。#users#who#w检查这些命令的输出。6.转换到虚拟终端2(tty2)通过按7.以用户student,密码:student登陆你的工作站。8.获取指定登陆者的信息,运行下列命令:$whoami$groups$id检查这些命令的输出。9.获取工作站上当前所有登陆者的信息:$users$who$w检查这些命令的输出。10.转换到虚拟终端3(tty3)通过按
11.以用户visitor,密码:visitor登陆你的工作站
12.获取指定登陆者的信息,运行下列命令:$whoami$groups$id检查这些命令的输出。13.获取工作站上当前所有登陆者的信息:$users$who$w检查这些命令的输出。
步骤2:切换帐户
任务:
1.按下如下的键切换到虚拟终端3(tty3)
2.运行id命令来决定您的用户信息,pwd来喜爱能使您目前的工作目录$id$pwd
记录结果:id=__________________________________________
pwd=_________________________________________3.使用su–来切换到root用户,运行id和pwd来获取您的当前的目录
$su–#id#pwd
pwd=_________________________________________
4.从root帐户退出,返回到visitor帐户
#exit5.使用不含-的su切换到root用户,运行pwd和id。$su#id#pwd
pwd=_________________________________________为什么和第3步骤的结果不同呢?6.登出所有您在这个步骤中本地的和远程的shell。
第一步:创建和使用links任务:1.在早些时候的试验,你已经拷贝了一个文件/usr/share/dict/words到你使用的用户student的主目录~/words.在这个案例里,你不需要编辑文件-拷贝一个文件到你的主目录就可以在试验的期间使用了。
2.为了要避免原始文件和副本之间的混乱。在student’s主目录中删除words的副本$cd$rmwords
3.虽然你可能没有在那时了解它,这个文件/usr/share/dict/words的副本实际上是一个软link。列出内容下面目录/usr/share/dict的内容查看link和它的参数。$ls–l/usr/share/dicttotal404-rw-r—r--1rootroot409305Apr310:29linux.wordslrwxrwxrwx1rootroot11Apr2017:33words->linux.wordsa.你能告诉我words是一个软链接吗?
b.为什么words的文件大小是11?
c.words允许所有人访问。这和linux.words文件用什么冲突?除了root用户,其他用户能够能在linux.words上面写数据吗?
4.再一次列出文件,这次显示相应的indeds号。为什么两个文件会有相同或不同的inodes号?$ls–I/usr/share/dict
5.现在在你的主目录中产生两个的代号和硬链接到/usr/share/dict/linux.words:$ln–s/usr/share/dict/linux.wordssoft$ln/usr/share/dict/linux.wordshard
6.测试一下,你新建的链接两者都指到linux.words文件:$headhardsoft7.检查你所有文件的link,然后在下面回答问题:$ls–ilhardsoft$stathadsoft报告文件大小,hard_______和soft_______.被占用的真实的空间,hard_______和soft_______.你怎样解释这两个link占用空间的差别。列出链接的记数,hard_______和soft_______.所有权,hard_______和soft_______.文件硬链接的所有者和root用户可以完全访问,其他用户是只读权限。学生将会可以删除这个新的文件吗为什么?
步骤2:使用find命令
2.在/var目录下查找所有文件其所有者是root用户的文件。_________________________________________________________
3.查找所有文件其所有者不是root,bin和student用户并用长格式显示(如ls–l的显示结果)。_________________________________________________________
4.查找/usr/bin目录下所有大小超过一百万byte的文件并用长格式显示(如ls–l的显示结果)。_________________________________________________________
7.对于查到的上述文件,用-ok选项删除。_________________________________________________________
步骤3:归档和压缩
情景/故事:你的系统上的主硬盘在你使用它的时候有可怕的噪音,但是它上面有有价值的数据。自从系统在两年半以前备份过,你有决定手动备份少数几个你最紧要的文件。那/tmp目录里储存在不同的硬盘的分区上快怀的分区,这样你想临时的把文件备份到那里。
任务:1.在/home目录里,用find命令定位文件所有者是student的文件。然后将其压缩。$find/home–userstudent–exectarrvf/tmp/backup.tar{}\;
2.保存/etc目录下的文件到/tmp目录下:$tarcvf/tmp/confbackup.tar/etc
3.列出两个文件的大小$ls–lh/tmp/*.tar-rw-rw-r--1studentstudent1.9MOct1723:06/tmp/backup.tar-rw-rw-r--1studentstudent5.4MOct1800:27/tmp/confbackup.tarbackup.tar文件的大小________confbackup.tar文件的大小________
4.使用gzip压缩你的文档。然后报告文件的大小:$cd/tmp$gzip–v*.tar$ls–lh*tar*-rw-rw-r--1studentstudent580KOct1723:06backup.tar.gz-rw-rw-r--1studentstudent913KOct180:27confbackup.tar.gzbackup.tar.gz文件大小为____________backup.tar.gz文件的压缩百分比________confbackup.tar.gz文件大小为____________confbackup.tar.gz文件的压缩百分比________
5.先解压缩bzip2文件然后在压缩,然后比较新文件的大小:$gunzip*.gz$ls–lh*tar-rw-rw-r—11studentstudent1.9MOct1723:06backup.tar-rw-rw-r—11studentstudent5.4MOct1800:27confbackup.tar
$bzip2–v*tar$ls–lh*tar-rw-rw-r—11studentstudent510KOct1723:06backup.tar.bz2-rw-rw-r—11studentstudent791KOct1800:27confbackup.tar.bz2
backup.tar.bz2文件大小为____________backup.tar.bz2文件的压缩百分比________confbackup.tar.bz2文件大小为____________confbackup.tar.bz2文件的压缩百分比________
6.在传统UNIX系统,
$rmconfbackup.tar.bz2$tarczftest1.tgz/etc$tarcjftest2.tbz/etc
$filetest*test1.tgz:gzipcompresseddata,deflated,lastmodified:WedOct1801:52:112000,os:Unixtest2.tbz:bzip2compresseddata,blocksize=900K
结果:你的“重要数据”被压缩备份到/tmp目录里了。
问题答案2
2.find/var–userroot–groupmail2>/dev/mull3.find/-not–userroot–not–userbin–not–userstudent–ls2>/dev/nullorfind/!–userroot!–userbin!–userstudent–execls–ld{}\;2>/dev/null
4.find/usr/bin–size+1000000c–ls2>/dev/null5.find/etc/maill–execfile{}\;2>/dev/null6.find/tmp–userstudent–and–mmin+120–and–typef–ls2>/dev/null7.find/tmp–userstudent–and–mmin+120–and–typef–okrm{}\;
试验的起点:一个RedHatLinux系统。
查找包含下列的文字:#Userspecificaliasesandfunctions添加到你的别名命令行:aliascls=’clear’保存并推出。
目标:一条新的清屏命令和一条新的列文件命令。(都是别名)
步骤2:改变你的bash提示
情景/故事:你决定定制你的bash提示以能够显示完全的路径和命令的序列号。
任务:5.在终端窗口,显示当前主要提示符的值。$echo$PS1
6.改变你的提示符为一个字符串。$PS1=’RedHatLinux->’
7.这个不常使用,因此恢复到有$提示符的情况下,同时加上主机名。$PS1=’\h$’
8.在主机名和$符号之间插入bash表示历史纪录提示符的特殊字符\!。
9.查找bash的man手册,把当前的工作目录放入提示符中。
10.你定制的提示符显示实例,如不同请继续修改。station1:~21$cd/tmpstation1:/tmp22$
11.编辑你重新定义的PS1到你的.bashrc,然后打开新的终端窗口看看结果如何.
步骤3:配置shell选项
情景/故事:使用set和shopt你定制几个bashshell。
13.察看目前ignoreeof的属性,用ctrl+d键看是否能logout.
15.当试图执行命令的时候可以看到提示信息.使用type的命令:$typecatcatishashed(/bin/cat)$typeclsclsisaliasedto‘clear’$typesetshoptisashellbuiltin$typewhilewhileisashellkeyword
结果:现在你有一个更好的shelloptions.
问题答案4:命令替代
1.确定完全路径名
$whichmetacity$which.-message$^message^window-demo
2.重复执行上一个包含字符串ig的命令:$ig
3.当一个命令在另一个命令的后面用(‘‘)起来的时候,bash会先执行后面的命令并把执行的结果作为第一个命令的输入.使用这个技术,看看下面命令的执行结果.$ls–l‘whichnautilus‘
第一步:定制窗口管理任务:1.在你的桌面的左边点击RedHat图标,选择”属性”然后点击”控制中心”.Nautilus将打开显示的可以定制你的桌面环境的窗口.
2.双击”背景”图标.点击”选择图片”按钮,可用的图片在/usr/share/backgrounds下,有一些图片作为墙纸很漂亮;你可以在”图片选项”中选择居中拉伸.
选择一个你喜欢的,或者选”没有图片”然后你可以使用”背景风格”颜色和属性.当你完成的后,关闭”背景属性”对话框.
假如你伸左撇子,你也可以在这里选择左收习惯
当完成后选择关闭”鼠标属性”对话框.
4.打开”桌面主题”面板.你可以选择一个主题,默认的主题是”Bluecurve”.选一个你喜欢的,然后关闭这个面板.
5.最后,打开”工具栏”,你能够选择你可以选择下列特性中的一个:显示工具条,或小的图标.然后关闭面板.
目标:RedHatLinux的桌面环境已经按你的要求定制好了。
步骤1:标准输入和输出任务:
1.使用你熟悉的编辑器创建两个文件:
packages1.txt应该包含以下八行:
amandagalleonmetacitymozillapostgresqlprocinforpmfindsquid
packages2.txt应该包含以下6行
anacondaopensshgnome-coresambasendmailxscreensaver
2.cat工具是最简单的linux过滤器,它会默认把跟在后面的参数当作文件名,并把这个文件作为输入,如果没有文件名则把标准的输入作为自己的输入,然后将它们发送到标准的输出上去。现在我们来实验一下:
$catpackages1.txt
3.如果cat后没有参数,则它会等待标准的输入,所以当你输入cat命令后,再回车,然后什么也没有显示。输入cat后,cat命令会监视标准输入,等待输入的到达。如果这个时候输入一些文本,再按回车,cat就会把输入的内容当作自己的输入,然后输出到标准的输出——显示器上,结束cat的命令为按下ctrl-d,这是结束输入的标志。$cat输入一些文字,然后按回车。^d(就是按ctrl-d)
4.大多数的文本处理命令是执行过滤操作,他们可以读标准输入,对输入做一些动作,然后把结果发送到标准输出去。这些命令就向cat一样,只是对输入的处理不太一样。
tr命令,也是过滤器命令,如果给tr后加两个字符串做为参数,它会读取标准输入,然后把输入中包含着前一个字符串的字符变成第二个字符串,然后输出到标准输出去。
把刚才的命令换成tr,tr将把字符串中有的字符变成大写的。
$tr'aeiou''AEIOU'输入一些文字,然后按回车。^d
5.定义shell不要把命令的输出发到标准输出上,而是重定向到一个文件中,我们使用>来重定向
重复cat的例子重定向标准的输出到packages1.catfile,这样把输出到屏幕的东西输出到了文件中,效果就和重新copy了一份文件是一样的,cat这个输出文件,然后用diff和ls确认原文件与package1.catfile内容一样。
$catpackages1.txt>packages1.catfile$catpackages1.catfile$diffpackages1.txtpackages1.catfile$ls–lpackages1*
6.使用>>来重定向会把输出附加到已存在的文件的末尾。
把packages2.txt文件中的内容附加到packages1.catfile之后,然后检验结果。
$catpackages2.txt>>packages1.catfile$catpackages1.catfile
7.如果输出重定向时cat没有直接跟文件名的参数,那么cat就会等待标准的输入,直到按下ctrl-d作为结束,然后把所有输入的东西重定向到这个文件中去。这样可以很容易的创建一个文本文件,
$cat>typedin.txtThistime,whentextistypedatthekeyboard,Itisnotechoedbacktothescreen.Instead,itisredirectedtothefiletypedin.txt.^d
$ls–ltypedin.txt$cattypedin.txt
8.使用tr取代cat,重复刚才的命令
$tr'aeiou''AEIOU'>trfile.txtThistime,whentextistypedatthekeyboard,Itisnotechoedbacktothescreen.Instead,itisredirectedtothefiletypedin.txt.^d
$ls–ltrfile.txt$cattrfile.txt
9.使用set–o命令,确认显示出目前bash的noclobber选项是关闭状态,确认当输出重定时向你可以重写文件
$set–o$ls–l/tmp>trifle.txt$ls–ltrfile.txt$cattrifle.txt
10.使用set命令更改noclobber选项,如下操作:
$set–onoclobber$echo“newcontents”>trfile.txtbash:trfile.txt:cannotoverwriteexistingfile
11.cat可以接受一个文件名或者是一个输入重定向的文件,测试以下两个命令:
$catpackages1.txt$cat
12.但是tr不能接受文件名作为参数,它只希望输入是标准输入。
$tr'aeiou''AEIOU'
13.下面的例子中标准输入和输出都被重定向,输入还是packages1.txt文件,这回改为输出到文件packages1.trfile.txt中去了。
$tr'aeiou''AEIOU'packages1.trfile.txt$ls–lpackages1.txtpackages1.trfile.txt$catpackages1.trfile.txt步骤2:管道
1.把一个命令的标准输出直接传输给另一个命令作为它的标准输入,这样特殊的机制叫做管道。
如果没有管道,你要想打印你的目录中文件的列表至少要两步,还需要把没用的文件删除,(lpr命令可以把文件的内容发给默认的打印机,它的用法会在第12章讲)(注意只有当你没有打印机时可以使用以下的例子)
$ls–l>/tmp/ls.txt$lpr/tmp/ls.txt$rm/tmp/ls.txt
使用管道,这些命令可以仅仅用以下短短的一条命令,将ls–l的输出直接发送给lpr作为输入,lpr也不需要别的参数。
$ls–l|lpr
2.管道经常的用法是一个命令产生了很多页的输出,可以把这些输出直接给less,管道左边是你的命令,右边是less,less不需要参数。(空格键是翻页,q键是退出less)
$ls–l/usr/bin|less
步骤3:练习
答案在下面,可以使用manpage来帮助你解决问题
1.拷贝一份cal命令的manpage,放在你的主目录下,取名叫cal.man。
2.只在一行上输入什么样的命令,可以使你从键盘上输入的文本输出到打印机上
3.怎样把/usr/bin下以c或d开头的文件列表发送到打印机上?
步骤3:练习-答案
1.mancal>cal.man2.lprlpr打印出以后面的参数命名的文件中的内容,如果没有参数,lpr就会从标准输入中读取,标准的输入是键盘,直到你按下ctrl-d表示键盘输入结束。3.ls–l/usr/bin/[cd]*|lpr
试验的起点:一个RedHatLinux系统,把/etc/passwd拷贝到你的主目录下。
第一步:字符串处理基本知识任务:1..拷贝/etc/passwd到你的主目录下:$cd$cp/etc/passwd
2.在/etc/passwd里面有系统里的每一个帐户.使用wc,在passwd文件里计算有多少行。$wc–lpasswd在你的系统里有多少个帐户____________
3.找出本机中所有用户使用的各种shell并把其放置在一个文件内:$cut–d:-f7passwd>shells
4.使用cat命令查看你新的shells文件的内容,为了使输出结果更为友好.用sort命令输出这些数据在一个新的文件里:$sortshells>sorted.shells
5.你的文件包含许多同样的内容.使用uniq命令可以计算出有多少个相同的行:$uniq–csorted.shells>uniq.sorted.shells
为什么在使用uniq之前要使用sort命令
6.按照数字由大到小的顺序列出在你的机器上使用的各种shell:$sort–nruniq.sorted.shellsi./sbin/nologin6/bin/bash1/sbin/shutdown1/sbin/halt1/bin/sync结果:按照数字由大到小的顺序列出你机器上所有用户使用的各种shell:
步骤2:更多的练习
为每一个练习写下解决办法.记住,答案是一个你想出办法的命令,不是输出.答案在实验的最后被列出来了,但是在对答案之前,你可以试着完成每个任务.每个答案将显示单独的一行.这个命令aspell没有manpage;你将怎样获得帮助呢
7.有多少文件在/usr/bin目录下输出是一个单一的整数.提示:设计一个命令列出文件名到每一行,然后计算一共有多少行.
__________________________________________________________
8.列出下列文件/usr/share/doc/nautilus-*/NEWS中拼错的单词.
12.多少唯一的单词从上述练习中输出__________________________________________________________
步骤2答案:
1ls–1/usr/bin|wc-l(注意ls的参数是数字1)
2aspell–l
3aspell–l
步骤1:使用grep进行字符处理
1.在copy到你主目录中的/etc/passwd文件的副本中,使用grep显示出所有以“g”开头的帐户:2.显示出所有使用bashshell的帐户:
$grep‘bash$’passwd
3.显示出没有使用bash作为shell的帐户:
$grep–v‘bash$’passwd
4.为了做一个使用diff的例子,我们要更改这个passwd文件的拷贝,先用grep把原文件中所有含有“N”和“P”的行删除:
$grep–v‘[NP]’passwd>modified.passwd
5.最后再用tr将含有的所有大写字母变成小写:
$tr“A-Z”“a-z”modified2.passwd
6.这时使用cat命令看原来的passwd文件和改过的modified2.passwd文件,不仔细看看不出其中的区别,这只是小文件,如果文件大一些,想象一下拥有几千个用户的文件。使用diff可以产生两个文件中不同之处的列表。
$diffmodified2.passwdpasswd14a15,16>ftp:x:14:50:FTPUser:/var/ftp:/sbin/nologin>nobody:x:99:99:Nobody:/:/sbin/nologin……
步骤2:正则表达式及字符处理在任务下面的横线上写下你的解决方案,你要写出你的命令而不是命令的输出,答案在实验最后,但是要先试着自己解决,可以使用manpage来帮助你解决问题。
任务:1.使用grep显示出/usr/share/dict/words文件中还有某参数的行,例如显示出所有含有fish的行:
$grepfish/usr/share/dict/wordsblowfishbluefishcodfish…outputtruncated…unselfishunselfishlyunselfishness
2.使用grep的manpage作为帮助,输出任何包含fish的所有行,还要输出紧接着这行的上下各两行的内容:
—————————————————————————————————————3.使用grep的manpage作为帮助,找出相应的命令,来显示出在words文件中有多少行含有fish。
—————————————————————————————————————4.使用grep的帮助文件,找出相应的命令,显示出那些行含有fish,并将行号一块输出,看一看starfish在哪行?
—————————————————————————————————————5.想列出/usr/share/dict/words中包含先有字母t然后有一个元音字母,之后是sh的单词,命令为:
—————————————————————————————————————6.在/usr/share/dict/words文件中,创建可以符合abominable,abominate,anomie和atomize的正则表达式,但是不要选到别的单词。
—————————————————————————————————————7.在/usr/share/dict/words文件中包含多少先有字母t然后有一个元音字母,之后是sh的单词,只输出数量。
—————————————————————————————————————8.列出/usr/share/dict/words中刚好包含16个字母的单词:
—————————————————————————————————————9.我们将要使用/usr/share/doc文件夹来完成我们的下几个任务。列出/usr/share/doc/bash-2.05b文件夹中,所有包含单词expansion的文件,
—————————————————————————————————————10.显示出“Linux”在/usr/share/doc/bash-2.05b文件夹的文件中出现的次数,但是不要显示没有这个单词的文件。提示:先列出所有的文件,然后想如何使输出符合要求:
—————————————————————————————————————11.列出所有包含Havoc的文件名:
—————————————————————————————————————
步骤3:使用正则表达进行文本流编辑任务:
想象你创建一个了名叫“cats”的文件包含以下单词:
catcatalogconcatenatepolecatCat
猜想执行以下每个sed命令之后,把cats文件的每一行的执行后的结果写在后面:
1.sed's/cat/dog/'catscat__________catalog__________concatenate__________polecat__________Cat__________
2.sed's/[Cc]at/dog/'catscat__________catalog__________concatenate__________polecat__________Cat__________
3.sed's/\<[Cc]cat/dog/'catscat__________catalog__________concatenate__________polecat__________Cat__________4.sed's/[Cc]at\>/dog/'catscat__________catalog__________concatenate__________polecat__________Cat__________
5.sed's/\<[Cc]at\>/dog/'catscat__________catalog__________concatenate__________polecat__________Cat__________
6.sed's/\<[Cc]at\>/&anddog/'catscat__________catalog__________concatenate__________polecat__________Cat__________
7.创建一个'cats'文件,运行sed命令,测试你的答案。
步骤2的答案:2.grep–B2–A2"fish"/usr/share/dict/words3.grep–c"fish"/usr/share/dict/words4.grep–n"fish"/usr/share/dict/words5.grep"t[aeiou]sh"/usr/share/dict/words6."^a.omi.*e$"或"\"诀窍是判断哪些字母是变化的哪些是不变的,注意想代替任意个任意字符要使用“.*”。7.grep–c"t[aeiou]sh$"/usr/share/dict/words8.grep"^…………….$"/usr/share/dict/words或者:grep–c"^.\{16\}$"/usr/share/dict/words9.grep–lexpansion/usr/share/doc/bash-2.05b/*10.grep–c"Linux"/usr/share/doc/bash-2.05b/*|grep–v":0"11.grep–R–l"Havoc"/usr/share/doc
步骤1:进程控制
场景描述:在这个任务中,大家会启用几个进程,然后使用bash的进程控制方法来控制它们。你将会在几个控制台间切换,注意你在哪个控制台上运行命令。
1.开始使用student用户在第一、二个控制台(tty1、tty2)上登陆
2.到tty1上,然后运行以下命令:
$(whiletrue;doecho–nA>>log;sleep1;done)
3.注意这个控制台现在因为在运行你的进程,所以处于忙的状态(进程在前台运行),这个进程不断把字母“A”添加进~/log文件中去,到tty2上运行以下命令:
$tail–flog
你会看到“A”不断增长
4.切换回控制台tty1,按下,shell会告诉你进程停止了,告诉你job号码为1,切换回控制台2,你会看到文件不变了。
5.回到tty1,再次启动进程,运行jobs会显示job[1]在运行了,到tty2上看到文件继续增长了:
$bg$jobs
6.到tty1上,按向上的箭头,重新找回第二步时的命令,把A换成B,在最后加上&,然后在把B换成C:
$(whiletrue;doecho–nB>>log;sleep1;done)$^B^C
7.输入jobs确认三个进程都在运行,到tty2上看到每秒钟会有三个字母增长。
8.在第4步你按ctrl-z时,实际上是给进程发一个信号,使用kill命令也可以给它们发信号,使用kill来显示信号列表和标号,然后发一个SIGSTOP(19)的信号给job[1],到tty1上执行:
$kill–l$kill-19%1
9.输入jobs,确认job[1]停止,到tty2上看结果是否停止。
10.用kill重新启动进程,使用SIGCONT(18)信号,你会看到进程又重新启动了。(参考第8步的实现方法)
11.使用kill命令的SIGTERM(15)信号,也是kill的默认信号,来结束三个进程,先结束job[2]和job[3]时,用jobs来看一下它们的状态是不是terminated的:
$kill%2%3$jobs
12.结束最后的进程:
$fg$
13.在tty1上使用jobs命令来看一下,然后在tty2上看是否进程真的结束了,然后按结束tail进程,注销。
14.在tty1上删除~/log文件
在提示符下键入:vimtutor你会看到英文的试验教程第一讲第一节∶移动光标
※※要移动光标,请依照说明分别按下h、j、k、l键。※※
^k提示∶h的键位于左边,每次按下就会向左移动。l的键位于右边,每次按下就会向右移动。jj键看起来很象一支尖端方向朝下的箭头。v
1.请随意在屏幕内移动光标,直至您觉得舒服为止。
2.按下下行键(j),直到出现光标重复下行。
--->现在您应该已经学会如何移动到下一讲吧。
3.现在请使用下行键,将光标移动到第二讲。
提示∶如果您不敢确定您所按下的字母,请按下键回到正常(Normal)模式。然后再次从键盘输入您想要的命令。
提示∶光标键应当也能正常工作的。但是使用hjkl键,在习惯之后您就能够快速地在屏幕内四处移动光标了。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~第一讲第二节∶VIM的进入和退出
!!特别提示∶敬请阅读完整本一节的内容,然后才能执行以下所讲解的命令。
1.请按键(这是为了确保您处在正常模式)。
2.然后输入∶:q!<回车>
--->这种方式的退出编辑器绝不会保存您进入编辑器以来所做的改动。如果您想保存更改再退出,请输入∶:wq<回车>
3.如果您看到了命令行提示符,请输入能够带您回到本教程的命令,那就是∶
vimtutor<回车>
通常情况下您也可以用这种方式∶
--->这里的'vim'表示进入vim编辑器,而'tutor'则是您准备要编辑的文件。
4.如果您自信已经牢牢记住了这些步骤的话,请从步骤1执行到步骤3退出,然后再次进入编辑器。接著将光标移动到第一讲第三节来继续我们的教程讲解。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~第一讲第三节∶文本编辑之删除
**在正常(Normal)模式下,可以按下x键来删除光标所在位置的字符。**
1.请将光标移动到本节中下面标记有--->的那一行。
2.为了修正输入错误,请将光标移至准备删除的字符的位置处。
3.然后按下x键将错误字符删除掉。
4.重复步骤2到步骤4,直到句子修正为止。
--->Theccowjumpeddovverrthhemooon.
5.好了,该行已经修正了,下一节内容是第一讲第四节。
特别提示∶在您浏览本教程时,不要强行记忆。记住一点∶在使用中学习。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~第一讲第四节∶文本编辑之插入
**在正常模式下,可以按下i键来插入文本。**
1.请将光标移动到本节中下面标记有--->的第一行。
2.为了使得第一行内容雷同于第二行,请将光标移至文本第一个字符准备插入的位置。
3.然后按下i键,接著输入必要的文本字符。
4.所有文本都修正完毕,请按下键返回正常模式。重复步骤2至步骤4以便修正句子。
--->Thereistextmisngthis.--->Thereissometextmissingfromthisline.
5.如果您对文本插入操作已经很满意,请接著阅读下面的小结。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~第一讲小结
1.光标在屏幕文本中的移动既可以用箭头键,也可以使用hjkl字母键。h(左移)j(下行)k(上行)l(右移)
2.欲进入vim编辑器(从命令行提示符),请输入∶vim文件名<回车>
3.欲退出vim编辑器,请输入以下命令放弃所有修改∶
:q!<回车>
或者输入以下命令保存所有修改∶
:wq<回车>
4.在正常模式下删除光标所在位置的字符,请按∶x
5.在正常模式下要在光标所在位置开始插入文本,请按∶
i输入必要文本
特别提示∶按下键会带您回到正常模式或者取消一个不期望或者部分完成的命令。
好了,第一讲到此结束。下面接下来继续第二讲的内容。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~第二讲第一节∶删除类命令
**输入dw可以从光标处删除至一个单字/单词的末尾。**
1.请按下键确保您处于正常模式。
2.请将光标移动到本节中下面标记有--->的那一行。
3.请将光标移至准备要删除的单词的开始。
4.接著输入dw删除掉该单词。
特别提示∶您所输入的dw会在您输入的同时出现在屏幕的最后一行。如果您输入有误,请按下键取消,然后重新再来。
--->Thereareasomewordsfunthatdon'tbelongpaperinthissentence.
5.重复步骤3至步骤4,直至句子修正完毕。接著继续第二讲第二节内容。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~第二讲第二节∶其他删除类命令
**输入d$从当前光标删除到行末。**
3.请将光标移动到该行的尾部(也就是在第一个点号‘.’后面)。
4.然后输入d$从光标处删至当前行尾部。
--->Somebodytypedtheendofthislinetwice.endofthislinetwice.
5.请继续学习第二讲第三节就知道是怎么回事了。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~第二讲第三节∶关于命令和对象
删除命令d的格式如下∶
[number]dobject或者d[number]object
一个简短的对象列表∶w-从当前光标当前位置直到单字/单词末尾,包括空格。e-从当前光标当前位置直到单字/单词末尾,但是*不*包括空格。$-从当前光标当前位置直到当前行末。
特别提示∶对于勇于探索者,请在正常模式下面仅按代表相应对象的键而不使用命令,则将看到光标的移动正如上面的对象列表所代表的一样。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~第二讲第四节∶对象命令的特殊情况
**输入dd可以删除整一个当前行。**
鉴于整行删除的高频度,VIM的设计者决定要简化整行删除,仅需要在同一行上击打两次d就可以删除掉光标所在的整行了。
1.请将光标移动到本节中下面的短句段落中的第二行。2.输入dd删除该行。3.然后移动到第四行。4.接著输入2dd(还记得前面讲过的number-command-object吗?)删除两行。
1)Rosesarered,2)Mudisfun,3)Violetsareblue,4)Ihaveacar,5)Clockstelltime,6)Sugarissweet7)Andsoareyou.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~第二讲第五节∶撤消类命令
**输入u来撤消最后执行的命令,输入U来修正整行。**
1.请将光标移动到本节中下面标记有--->的那一行,并将其置于第一个错误处。2.输入x删除第一个不想保留的字母。3.然后输入u撤消最后执行的(一次)命令。4.这次要使用x修正本行的所有错误。5.现在输入一个大写的U,恢复到该行的原始状态。6.接著多次输入u以撤消U以及更前的命令。7.然后多次输入CTRL-R(先按下CTRL键不放开,接著输入R键),这样就可以执行恢复命令,也就是撤消掉撤消命令。
--->Fiixtheerrorsoonthhislineandreeplacethemwitthundo.
8.这些都是非常有用的命令。下面是第二讲的小结了。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~第二讲小结
1.欲从当前光标删除至单字/单词末尾,请输入∶dw
2.欲从当前光标删除至当前行末尾,请输入∶d$
3.欲删除整行,请输入∶dd
4.在正常模式下一个命令的格式是∶
[number]commandobject或者command[number]object其意是∶number-代表的是命令执行的次数command-代表要做的事情,比如d代表删除object-代表要操作的对象,比如w代表单字/单词,$代表到行末等等。$(totheendofline),etc.
5.欲撤消以前的操作,请输入∶u(小写的u)欲撤消在一行中所做的改动,请输入∶U(大写的U)欲撤消以前的撤消命令,恢复以前的操作结果,请输入∶CTRL-R
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~第三讲第一节∶置入类命令
**输入p将最后一次删除的内容置入光标之后**
1.请将光标移动到本节中下面示范段落的首行。
2.输入dd将该行删除,这样会将该行保存到vim的缓冲区中。
3.接著将光标移动到准备置入的位置的上方。记住∶是上方哦。
4.然后在正常模式下(键进入),输入p将该行粘贴置入。
5.重复步骤2至步骤4,将所有的行依序放置到正确的位置上。
d)Canyoulearntoob)Violetsareblue,c)Intelligenceislearned,a)Rosesarered,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~第三讲第二节∶替换类命令
**输入r和一个字符替换光标所在位置的字符。**
2.请移动光标到第一个错误的适当位置。
3.接著输入r,这样就能将错误替换掉了。
4.重复步骤2和步骤3,知道第一行是已经修改完毕。
--->Whanthislimewastuoedin,someonepresswdsomewrojgkeys!--->Whenthislinewastypedin,someonepressedsomewrongkeys!
5.然后我们继续学校第三讲第三节。
特别提示∶切记您要在使用中学习,而不是在记忆中学习。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~第三讲第三节∶更改类命令
**要改变一个单字/单词的部分或者全部,请输入cw**
2.接著把光标放在单词lubw的字母u的位置那里。
3.然后输入cw就可以修正该单词了(在本例这里是输入ine。)
4.最后按键,然后光标定位到下一个错误第一个准备更改的字母处。
5.重复步骤3和步骤4,知道第一个句子完全雷同第二个句子。
--->Thislubwhasafewwptfdthatmrrfchangingusfthechangecommand.--->Thislinehasafewwordsthatneedchangingusingthechangecommand.
提示∶请注意cw命令不仅仅是替换了一个单词,也让您进入文本插入状态了。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~第三讲第四节∶使用c指令的其他更改类命令
**更改类指令可以使用同删除类命令所使用的对象参数。**
1.更改类指令的工作方式跟删除类命令是一致的。操作格式是∶
[number]cobject或者c[number]object
2.对象参数也是一样的,比如w代表单字/单词,$代表行末等等。
3.请将光标移动到本节中下面标记有--->的第一行。
4.接著将光标移动到第一个错误处。
5.然后输入c$使得该行剩下的部分更正得同第二行一样。最后按键。
--->Theendofthislineneedssomehelptomakeitlikethesecond.--->Theendofthislineneedstobecorrectedusingthec$command.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~第三讲小结
1.要重新置入已经删除的文本内容,请输入小写字母p。该操作可以将已删除的文本内容置于光标之后。如果最后一次删除的是一个整行,那么该行将置于当前光标所在行的下一行。
2.要替换光标所在位置的字符,请输入小写的r和要替换掉原位置字符的新字符即可。
3.更改类命令允许您改变指定的对象,从当前光标所在位置直到对象的末尾。比如输入cw可以替换当前光标到单词的末尾的内容;输入c$可以替换当前光标到行末的内容。
4.更改类命令的格式是∶
下面我们继续学习下一讲。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~第四讲第一节∶定位及文件状态
**输入CTRL-g显示当前编辑文件中当前光标所在行位置以及文件状态信息。输入SHIFT-G则直接跳转到文件中的某一指定行。**
提示∶切记要先通读本节内容,之后才可以执行以下步骤!!!
1.按下CTRL键不放开然后按g键。然后就会看到页面最底部出现一个状态信息行,显示的内容是当前编辑的文件名和文件的总行数。请记住步骤3的行号。
2.按下SHIFT-G键可以使得当前光标直接跳转到文件最后一行。
3.输入您曾停留的行号,然后按下SHIFT-G。这样就可以返回到您第一次按下CTRL-g时所在的行好了。注意∶输入行号时,行号是不会在屏幕上显示出来的。
4.如果愿意,您可以继续执行步骤1至步骤三。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~第四讲第二节∶搜索类命令
**输入/以及尾随的字符串可以用以在当前文件中查找该字符串。**
1.在正常模式下输入/字符。您此时会注意到该字符和光标都会出现在屏幕底部,这跟:命令是一样的。
2.接著输入errroor<回车>。那个errroor就是您要查找的字符串。
3.要查找同上一次的字符串,只需要按n键。要向相反方向查找同上一次的字符串,请输入Shift-N即可。
4.如果您想逆向查找字符串,请使用代替/进行。
--->Whenthesearchreachestheendofthefileitwillcontinueatthestart.
"errroor"isnotthewaytospellerror;errroorisanerror.
提示∶如果查找已经到达文件末尾,查找会自动从文件头部继续查找。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~第四讲第三节∶配对括号的查找**按%可以查找配对的括号)、]、}。**
1.把光标放在本节下面标记有-->那一行中的任何一个(、[或{处。
2.接著按%字符。
3.此时光标的位置应当是在配对的括号处。
4.再次按%就可以跳回配对的第一个括号处。
--->This(isatestlinewith('s,['s]and{'s}init.))
提示∶在程序调试时,这个功能用来查找不配对的括号是很有用的。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~第四讲第四节∶修正错误的方法之一
**输入:s/old/new/g可以替换old为new。**
2.输入:s/thee/the<回车>。请注意该命令只改变光标所在行的第一个匹配串。
3.输入:s/thee/the/g则是替换全行的匹配串。
--->thebesttimetoseetheeflowersisintheespring.
4.要替换两行之间出现的每个匹配串,请输入:#,#s/old/new/g(#,#代表的是两行的行号)。输入:%s/old/new/g则是替换整个文件中的每个匹配串。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~第四讲小结
1.Ctrl-g用于显示当前光标所在位置和文件状态信息。Shift-G用于将光标跳转至文件最后一行。先敲入一个行号然后按Shift-G则是将光标移动至该行号代表的行。
2.输入/然后紧随一个字符串是则是在当前所编辑的文档中向后查找该字符串。输入问号然后紧随一个字符串是则是在当前所编辑的文档中向前查找该字符串。完成一次查找之后按n键则是重复上一次的命令,可在同一方向上查找下一个字符串所在;或者按Shift-N向相反方向查找下该字符串所在。
3.如果光标当前位置是括号(、)、[、]、{、},按%可以将光标移动到配对的括号上。
4.在一行内替换头一个字符串old为新的字符串new,请输入:s/old/new在一行内替换所有的字符串old为新的字符串new,请输入:s/old/new/g在两行内替换所有的字符串old为新的字符串new,请输入:#,#s/old/new/g在文件内替换所有的字符串old为新的字符串new,请输入:%s/old/new/g进行全文替换时询问用户确认每个替换需添加c选项,请输入:%s/old/new/gc
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~第五讲第一节∶在VIM内执行外部命令的方法
**输入:!然后紧随著输入一个外部命令可以执行该外部命令。**
1.按下我们所熟悉的:命令设置光标到屏幕底部。这样就可以让您输入命令了。
2.接著输入感叹号!这个字符,这样就允许您执行外部的shell命令了。
3.我们以ls命令为例。输入!ls<回车>。该命令就会列举出您当前目录的内容,就如同您在命令行提示符下输入ls命令的结果一样。如果!ls没起作用,您可以试试:!dir看看。
--->提示∶所有的外部命令都可以以这种方式执行。
--->提示∶所有的:命令都必须以<回车>告终。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~第五讲第二节∶关于保存文件的更多信息
**要将对文件的改动保存到文件中,请输入:wFILENAME。**
1.输入:!dir或者:!ls获知当前目录的内容。您应当已知道最后还得敲<回车>吧。
2.选择一个尚未存在文件名,比如TEST。
3.接著输入:wTEST(此处TEST是您所选择的文件名。)
4.该命令会以TEST为文件名保存整个文件(VIM教程)。为了确保正确保存,请再次输入:!dir查看您的目录列表内容。
--->请注意∶如果您退出VIM然后在以文件名TEST为参数进入,那么该文件内容应该同您保存时的文件内容是完全一样的。
5.现在您可以通过输入:!rmTEST来删除TEST文件了。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~第五讲第三节∶一个具有选择性的保存命令
**要保存文件的部分内容,请输入:#,#wFILENAME**
1.再来执行一次:!dir或者:!ls获知当前目录的内容,然后选择一个合适的不重名的文件名,比如TEST。
2.接著将光标移动至本页的最顶端,然后按CTRL-g找到该行的行号。别忘了行号哦。
3.接著把光标移动至本页的最底端,再按一次CTRL-g。也别忘了这个行好哦。
5.最后,用:!dir确认文件是否正确保存。但是这次先别删除掉。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~第五讲第四节∶提取和合并文件
**要向当前文件中插入另外的文件的内容,请输入:rFILENAME**
1.请键入:!dir确认您前面创建的TEST文件还在。
2.然后将光标移动至当前页面的顶端。
特别提示∶执行步骤3之后您将看到第五讲第三节,请届时再往下移动回到这里来。
3.接著通过:rTEST将前面创建的名为TEST的文件提取进来。
特别提示∶您所提取进来的文件将从光标所在位置处开始置入。
4.为了确认文件已经提取成功,移动光标回到原来的位置就可以注意有两份第五讲第三节,一份是原本,另外一份是来自文件的副本。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~第五讲小结
1.:!command用于执行一个外部命令command。
请看一些实际例子∶:!dir-用于显示当前目录的内容。:!rmFILENAME-用于删除名为FILENAME的文件。
2.:wFILENAME可将当前VIM中正在编辑的文件保存到名为FILENAME的文件中。
3.:#,#wFILENAME可将当前编辑文件第#行至第#行的内容保存到文件FILENAME中。
4.:rFILENAME可提取磁盘文件FILENAME并将其插入到当前文件的光标位置后面。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~第六讲第一节∶打开类命令
**输入o将在光标的下方打开新的一行并进入插入模式。**
2.接著输入小写的o在光标*下方*打开新的一行并进入插入模式。
3.然后复制标记有--->的行并按键退出插入模式而进入正常模式。
--->AftertypingothecursorisplacedontheopenlineinInsertmode.
4.为了在光标*上方*打开新的一行,只需要输入大写的O而不是小写的o就可以了。请在下行测试一下吧。当光标处在在该行上时,按Shift-O可以在该行上方新开一行。
OpenupalineabovethisbytypingShift-Owhilethecursorisonthisline.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~第六讲第二节∶光标后插入类命令
**输入a将可在光标之后插入文本。**
1.请在正常模式下通过输入$将光标移动到本节中下面标记有--->的第一行的末尾。
2.接著输入小写的a则可在光标之后插入文本了。大写的A则可以直接在行末插入文本。
提示∶输入大写A的操作方法可以在行末插入文本,避免了输入i,光标定位到最后一个字符,输入的文本,回复正常模式,箭头右键移动光标以及x删除当前光标所在位置字符等等诸多繁杂的操作。
3.操作之后第一行就可以补充完整了。请注意光标后插入文本与插入模式是基本完全一致的,只是文本插入的位置定位稍有不同罢了。
--->Thislinewillallowyoutopractice--->Thislinewillallowyoutopracticeappendingtexttotheendofaline.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~第六讲第三节∶另外一个置换类命令的版本
**输入大写的R可连续替换多个字符。**
2.移动光标到第一行中不同于标有--->的第二行的第一个单词的开始,即单词last处。
3.然后输入大写的R开始把第一行中的不同于第二行的剩余字符逐一输入,就可以全部替换掉原有的字符而使得第一行完全雷同第二行了。
--->Tomakethefirstlinethesameasthelastonthispageusethekeys.--->Tomakethefirstlinethesameasthesecond,typeRandthenewtext.
4.请注意∶如果您按退出置换模式回复正常模式,尚未替换的文本将仍然保持原状。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~第六讲第四节∶设置类命令的选项
**设置可使查找或者替换可忽略大小写的选项**
1.要查找单词ignore可在正常模式下输入/ignore。要重复查找该词,可以重复按n键。
2.然后设置ic选项(ic就是英文忽略大小写IgnoreCase的首字母缩写词),即输入∶:setic
3.现在可以通过键入n键再次查找单词ignore。重复查找可以重复键入n键。
4.然后设置hlsearch和incsearch这两个选项,输入以下内容∶:sethlsis
5.现在可以再次输入查找命令,看看会有什么效果∶/ignore
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~第六讲小结
1.输入小写的o可以在光标下方打开新的一行并将光标置于新开的行首,进入插入模式。输入大写的O可以在光标上方打开新的一行并将光标置于新开的行首,进入插入模式。
2.输入小写的a可以在光标所在位置之后插入文本。输入大写的A可以在光标所在行的行末之后插入文本。
3.输入大写的R将进入替换模式,直至按键退出替换模式而进入正常模式。
4.输入:setxxx可以设置xxx选项。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~第七讲∶在线帮助命令
**使用在线帮助系统**
Vim拥有一个细致全面的在线帮助系统。要启动该帮助系统,请选择如下三种方法之一∶-按下键(如果键盘上有的话)-按下键(如果键盘上有的话)-输入:help<回车>
输入:q<回车>可以关闭帮助窗口。
提供一个正确的参数给":help"命令,您可以找到关于该主题的帮助。请试验以下参数(可别忘了按回车键哦。:)∶
:helpw<回车>:helpc_:helpinsert-index<回车>:helpuser-manual<回车>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~第八讲∶创建一个启动脚本
**启用vim的功能**
Vim的功能特性要比vi多得多,但大部分功能都没有缺省激活。为了启动更多的功能,您得创建一个vimrc文件。
1.开始编辑vimrc文件,这取决于您所使用的操作系统∶
:edit~/.vimrc这是Unix系统所使用的命令:edit$VIM/_vimrc这是Windows系统所使用的命令
2.接着导入vimrc范例文件∶
:read$VIMRUNTIME/vimrc_example.vim
3.保存文件,命令为∶
:write
在下次您启动vim的时候,编辑器就会有了语法高亮的功能。
UNIT16Lab基本网络客户
目标:使用工具在本地和远程计算机传输文件。实验1使用lftp1.使用ping测试连通性:ping–c3stationxx2.使用lftp连接到远程计算机cdlftpstationxx
cdpubls
getgetme
exit
3.检查并修改得到的软件catgetme
picogetme存为getme.xy
catgetme.xy4.使用lftp把文件传到用户目录lftp–ustudentstationxxputgetme.xyexit
实验2:加密通讯ssh套件1.复制getme.xy。cdcpgetme.bdgetme.bd.secure2.scpgetme.bd.secure3.ssh
实验3:和远程计算机同步文件1.cdrsync––rsh=ssh*.lsgetme*
UNIT17Lab系统工具
实验2使用rpm检查包和文件的情况1.使用rpm列出安装的包rpm–qa|less