SHELL和vi编辑器本章内容Shell简介Shell命令Shell管道环境变量Vi编辑器Linuxshell简介什么是ShellShell的主要版本Shell中的命令规则,路径和文件Shell中的命令补齐、别名功能和保留字Shell中的重定向和管道ShellScript简介什么是Shellshell是linux的一个外壳,它包在linux内核的外面,为用户和内核之间的交互提供了一个接口。当用户下达指令给操作系统的时候,实际上是把指令告诉shell,经过shell解释,处理后让内核作出相应的动作。而系统的回应和输出的信息也由shell处理,然后显示在用户的屏幕上.硬件外围应用程序命令解释器Shell系统核心Shell中的二种命令1.内建命令:包含在shell自身当中的,在编写shell的时候就已经包含在内了。比如cd,exit。查看内建命令的方法可以使用help命令。2.外部命令:是存放于文件系统某个目录下的具体的可执行程序,比如cp就是在/bin目录下的一个可执行文件,外部命令也可以是某些商业或自由软件,如netscape.用户工作环境环境变量:对环境的设置可以通过给各种环境变量赋值来实现.每一种环境变量控制了一项工作环境的设置.不加任何参数直接使用set命令可以显示出用户当前所有环境变量的设置.路径PATH是shell的一个环境变量。每种shell都有自己的配置文件,用户可以在配置文件里设置各种环境变量。环境变量的配置文件有系统环境配置文件和个人环境配置文件两种。常用shell环境变量说明环境变量说明LOGNAME登陆名,也就是账户名PATH命令搜索路径PS1命令提示符PWD用户的当前目录SHELL用户的shell类型TERM终端类型HOME用户主目录的位置,通常是/home/用户名环境设置文件有两种1.系统环境配置文件:/etc/profile和/etc/bashrcprofile文件在每个用户登陆系统时都会被执行,把其中的设置加入到用户的环境中.bashrc文件用于对subshell的环境进行设置。比如新启动了一个shell,此时启动的shell就是subshell,新的shell会从/etc/bashrc文件中读取环境配置.环境设置文件有两种2.个人环境配置文件:系统环境配置文件对所有用户对会起作用,只有root用户才有权对其进行修改。普通用户如果想定制自己的工作环境。可以编辑自己的个人环境设置文件。个人环境设置文件主要有二个:$HOME/.bash_profile$HOME/.bashrc22.2.2Shell的主要版本sh:sh就是BourneShell的缩写,是UNIX系统最早的shell。bash:bash就是BourneAgainShell的简称,是BourneShell的扩展,完全兼容BourneShell。csh:CShell是一种比Bourneshell更适于编程的shell,是美国加州大学Berkeley分校开发出来的,具有核C语言相似的语法,但和sh不兼容。tcsh:tcsh是EnhancedCShell,是CShell的一个增强版。ksh:ksh是KornShell的缩写,集合了Cshell和Bourneshell的优点并且和Bourneshell完全兼容。其它:ash,zsh如何去查看shell的版本Shell搭起了用户与操作系统间的沟通的桥梁,它提供了基本的操作界面,让用户可以下达各种命令、在系统中进行操作、产生彼此间的交互关系,因此可以将Shell看成是一种用户环境。1.命令提示符[lrj@hostlrj]$这就是命令提示符(提示符主要告诉用户现在可以下达命令,同时也表示先前达的命令已经完成)2.查看默认的Shell的种类[lrj@hostlrj]$echo$SHELL查看当前使用的shell回车后显示为:/bin/bashShell中的命令规则,路径和文件1.命令的一般格式是:命令+选项+参数2.命令一般是小写字符串,注意区分大小写。3.选项通常是以减号“-”加上一个或数个字符表示,当在一个命令中使用,多个选项时,可以在减号后面把代表不同选项的字母合并起来。4.参数就是命令执行时处理的对象,可能是文件,目录或是设备。5.在同一行中可以有数个命令,不同命令间以分号“;”隔开。执行时首先执行前面的命令,执行完后顺序执行后面的命令。6.shell中的命令参数可以由另一个命令执行的结果来替代。shell中的命令补齐、别名功能和保留字所谓命令补齐(Command-LineCompletion)是指当键入的字符足以确定目录下一个唯一的文件时只须按Tab键就可以自动补齐该文件名的剩余部分。Bash还提供了别名功能(alias)。用户可以为一些比较长的命令设置别名,这样以后用户便可以输入相对简单的别名来代替该命令了。shell常用保留字的含义保留字保留字的含义*通配符。用来代表任意字符串。\脱离字符。当命令的参数要用到保留字时,要在保留字前面加上脱离字符。'在“'”中间的字符都会被当作文字处理,指令、文件名、保留字符等都不再具有原来的意义。&后台执行字符。在一个命令之后加上字符“&”,该命令就会以后台方式执行。$变量值替代,如:$PATH表示环境变量PATH的值。输入重定向字符。输出重定向字符。|管道字符。Shell命令定义别名别名的作用是让用户自定义新的命令名称来替代原有的命令。[lrj@hostlrj]$typetest.txt显示test.txt内容bash:copy:commandnotfound没有此命令[lrj@hostlrj]$aliastype=‘cat’定义别名[lrj@hostlrj]$typetest.txt效果同[lrj@hostlrj]$cattest.txt取消别名命令unalias[lrj@hostlrj]#unaliastype在命令行下所输入的别名只是暂时的,当退出系统后,再次登录时所有输入的别名命令都会消失。若希望每次登录时系统会自动设置别名,将alias命令加入该账号的自家目录的.bashrc文件中。aliastype=‘cat’加入此行命令补全命令补全的功能可以帮助用户完成还未全部输入的命令[lrj@hostlrj]#chm此时按下Tab键,未输入完的命令就会变成最类似的chmod命令Shell中的重定向和管道命令文件:输入重定向。以文件中的内容作为命令的输入,以取代标准输入。命令文件:输出重定向。表示把命令的输出输出到文件里,以取代标准输出。命令文件:输出重定向。(用“”进行输出重定向会把原来的文件覆盖掉,而“”是把输出添加到原文件的末尾。)命令A|命令B:“|”是管道符号,表示把命令A运行的结果,也就是命令A的标准输出作为命令B的标准输入。(重定向)、命令重定向(redirect)可将某命令的结果输出到文件中,它有两种命令:和。可将结果输出到文件中,该文件原有的内容会被删除。则将结果附加到文件中,原文件内容不会被清除。[rlj@hostlrj]$ls-aldir.txt将ls–al命令执行结果输出到dir.txt文件中[rlj@hostlrj]$catdata1.txtdir.txt将data1.txt内容附加到dir.txt文件之后管道“|”命令管道(pipe)命令的符号是“|”,可将某命令A的结果输出给另一命令B去执行。格式:A|B[root@hostetc]#ls|grephosts搜索并显示ls命结果中包含有“hosts”字符串的行hostshosts.allow显示结果hosts.denyShellScript简介shell脚本(ShellScript)就是linux中的批处理文件vi编辑器的使用vi是一种广泛存在于各种UNIX和Linux系统中的文本编辑程序Vi的功能十分强大,但是命令繁多,不容易掌握Vi的发明者:billjoyvi简介vi是标准的Linux文本编辑程序vi不是基于窗口的,所以,这个多用途编辑程序可以用于在任何类型的终端上编辑各式各样的文件创建一个文件vifilename如果filename已经存在,vi会打开现存文件如果是一个新文件,vi会创建它状态行屏幕的最后一行被称为状态行,用于显示文件名及文件中行和字符的个数输入文本执行命令执行特定命令输入模式命令模式末行模式vi的三种模式输入模式vi被运行时,通常处在命令模式下键入以下命令可以使vi退出命令模式,进入输入模式:IiAaOo命令模式在该模式中,可以输入命令来执行许多种功能大多数的vi命令都是由一个或两个字母加上一个可选数字组成以冒号开头的命令实际上是ex命令,即进入末行模式进行保存、退出等操作保存及退出vi保存:w后面接回车键保存并退出输入:wq后面接回车键退出但不保存输入:q后面接回车键使用q!强行退出在文件中移动光标向左移动一个字符:按h向右移动一个字符:按l向下移动一行:按j向上移动一行:按k移动到当前行的开头处:按^(即Shift-6)移动到当前行的结尾处:按$(即Shift-4)移动到顶部:按H(大写)使光标移动到屏幕的顶部移动到中部:按M(大写)使光标移动到屏幕的中间移动到底部:按L(大写)使光标移动到屏幕的底部在文件中移动光标(续)向前翻页一屏:要向前滚动(向下移动)一整屏,需按下Ctrl-f。光标将移动到新屏的左上角向前滚动半屏:要向前滚动半屏,需按Ctrl-d向后翻页一屏:要向后滚动(即向上移动)一整屏,需按下Ctrl-b向后滚动半屏:要向后滚动半屏,需按下Ctrl-u插入文本添加:输入a后,在光标的右边插入文本输入A,在一行的结尾处添加文本插入:通过在命令模式下输入i,在光标的左边插入文本通过在命令模式下输入I,在行首插入文本插入新行:输入o,在当前光标位置下面打开一行输入O,在当前光标位置上面打开一行撤消更改撤消前一个命令:在最后一个命令之后立即输入u来撤消该命令重复某个命令.撤消对一行的更改:输入U来撤消你对一行所做的所有更改这个命令只有在你没将光标移动到该行以外时才生效删除文本删除一个字符:为删除一个字符,需将光标放置在要删除的字符上并输入x为删除光标之前(其左边)的一个字符,需输入X删除一个词或词的部分内容:为删除一个词,需将光标放置到该词的开头并输入dw为删除词的部分内容,需将光标放置到该词要保存部分的右边。输入dw来删除该词余下的部分删除一行:将光标放置到该行的任意处并输入dd删除多行ndd删除文本(续)删除行的部分内容:将光标放置到该行要保存部分的右边,并输入D。为删除光标左边的所有内容,须将光标放置到该行要删除部分的右边,并输入d0(d-零)。删除到文件的结尾:为删除从当前行到文件结尾的所有内容,需输入dG复制和移动文本复制一行命令:yy粘贴命令:p移动文本:先将要移动的部分用删除命令删除,然后再粘贴就可以了复制指定文件的内容:rfilename查找一个字符串查找一个字符串:•输入/,并在/后面输入要查找的串,然后按下回车•输入“n”跳转到该串的下一个出现处•输入“N”跳转到该串的上一个出现处替换一个字符串在一行内替换头一个字符串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设置vi显示行号:setnumber取消行号显示:setnonumber设置显示用户模式:setshowmode设置文件只读:setreadonly本章小结掌握shell命令机制和shell管道的使用方法。掌握vi编辑器的使用方法。