5.1shell简介5.2帮助命令5.3shell基本命令的体验5.4shell应用技巧5.5环境变量5.6shell内部命令5.7vi编辑器Linux内核、shell和用户之间的关系如图所示。1.进入shell在UbuntuGNOME桌面环境下,用户可以通过终端进入shell命令行界面。打开终端的方法是单击“应用程序”→“附件”→“终端”,屏幕上显示类似“user@ubuntu:~$”的信息。2.shell脚本shell脚本就是由Linux命令或可执行程序组成的文本文件。shell脚本可以由任意的Linux命令组成。当执行shell脚本文件时,除了脚本的控制结构语句外,脚本命令都是从上到下顺序执行的。5.2.1man工具man工具可以显示系统手册页中的内容,这些内容基本上都是对命令的解释信息。man为每个命令都提供了详细的信息,所以对所有Linux用户来说,man是一种非常实用的工具。格式:man[选项参数]命令名称选项参数:man命令常用的选项参数如表5.1所示。选项参数参数含义-M指定搜索man手册页的路径,通常这个路径由环境变量MANPATH预设,如果在命令行上指定另外的路径,则覆盖MANPATH的设定-a显示所有的手册页-f只显示命令的功能,而不显示详细的说明文件-d只显示排错信息,不显示帮助内容-w显示该命令的man手册页的文件所在位置man手册页组成内容:man手册页内容一般会分为HEADER、NAME、SYNOPSIS、DESCRIPTION、OPTIONS、SEEALSO等内容。Linux系统下man手册页组成内容的说明如表5.2所示。手册页内容说明HEADER标题NAME命令/函数的功能简单说明SYNOPSIS命令/函数用法的简单描述。即对于命令来说是命令的语法,对于函数来说是函数的定义AVAILABILITY可用性说明DESCRIPTION命令/函数的详细描述OPTIONS命令的所有可选项参数的详细说明RETURNVALUE如果是函数,则列出函数返回值ERRORS如果函数调用出错,则列出所有出错的值和可能引起错误的原因FILES命令/函数所用到的相关系统文件ENVIRONMENT与该命令/函数相关的环境变量NOTES不常用的用法或实现的细节BUGS命令或函数已知的错误和警告HISTORY命令/函数的历史发展SEEALSO可以参照的其他的相关命令/函数OTHERS与一些具体命名/函数有关的特殊信息【例5.1】显示ls命令的man手册页。命令及显示信息。【例5.2】显示ls命令的功能,而不显示详细的说明文件。命令及显示信息如下:user@ubuntu:~$man-flsls(1)-listdirectorycontentshelp命令主要用来显示shell内部命令的说明或列出全部shell内部命令。格式:help[shell内部命令]例如:显示所有shell内部命令。命令及结果显示如下:[user@ubuntu:~]$helpGNUbash,version4.0.33(1)-release(i386-redhat-linux-gnu)Theseshellcommandsaredefinedinternally.Type`help'toseethislist.Type'helpname'tofindoutmoreaboutthefunction'name'Use'infobash'tofindoutmoreabouttheshellingeneral.Use'man-k'or'info'tofindoutmoreaboutcommandsnotinthislist.Astar(*)nexttoanamemeansthatthecommandisdisabled.job_spec[&]history[-c][-doffset][n]orhist((expression))ifCOMMANDS;thenCOMMANDS;[elifC.filename[arguments]jobs[-lnprs][jobspec...]orjobs:kill[-ssigspec|-nsignum|-sigs[arg...]letarg[arg...]...与man工具相比,info工具可显示更完整的最新的GNU工具信息。若man页包含的某个工具的概要信息在info中也有介绍,那么man页中会有“请参考info页更详细内容”的字样。格式:info[选项参数]命令info的参数一般情况下用的不多,用户可以使用命令“info--help”来查看info命令的参数。【例5.3】显示ls命令的info信息。命令如下:user@ubuntu:~$infols1.进入shell如果用户名为user,主机是名为ubuntu的主机,当前所在用户主目录为/home/user,提示符如下:user@ubuntu:~$要运行命令的话,只要在提示符后面输入命令,然后按回车键。shell将在它的路径中搜索这个命令,找到该命令后就运行它,并在终端输出相应的结果。命令结束后,系统将会给出新的提示符。例如:user@ubuntu:~$ls公共的模板视频图片文档下载音乐桌面user@ubuntu:~$2.查看当前路径命令pwdpwd(PrintWorkingDirectory),是打印当前工作目录的命令。如果用户想知道当前所处的目录,可以用pwd命令,该命令显示完整路径名,此路径名为绝对路径名。【例5.4】显示当前路径。命令及显示信息如下:user@ubuntu:~$pwd/home/user3.改变目录命令cdcd命令主要实现将当前用户的当前工作目录更改至cd命令中指定的目录。【例5.5】用cd命令进入/user/local/bin/目录下,然后查看当前工作目录。命令及显示结果如下:user@ubuntu:~$cd/usr/local/bin/user@ubuntu:/usr/local/bin$pwd/usr/local/bin【例5.6】使用cd命令进入根目录“/”。命令及显示结果如下:user@ubuntu:~$cd/user@ubuntu:/$user@ubuntu:/$pwd/5.4.1Tab自动补全命令例如需要快速地从当前所在的用户主目录/home/user跳转到/usr/local/bin/目录,可以执行下面的操作:user@ubuntu:~$cd/uTab/loTab/bTab其中Tab是按下Tab键的意思,使用Tab键可以将命令自动补全,这在Linux命令的日常应用中是不可缺少的。1.上下方向键Linux用户通过向上方向键向后遍历最近在该控制台下输入的命令,用向下方向键可以向前遍历命令。2.历史记录命令historyhistory命令是用于读取、显示或清除命令历史记录的shell命令。【例5.7】用history命令列出命令历史缓冲区或文件记录中记录的所有命令。命令及结果显示如下:user@ubuntu:~$history1history2cd/usr/3ls4cdlocal/5ls6cdbin/7ls…【例5.8】假设用户想列出最近执行的10条命令。命令及显示结果如下:user@ubuntu:~$history103ls4cdlocal/5ls6cdbin/7ls8history9cd..10cd11history12history10【例5.9】用户想清除历史缓冲区中的命令。命令及运行结果如下:user@ubuntu:~$history-cuser@ubuntu:~$history1history3.重复执行先前命令“!”在shell中为了重复执行先前的命令,用户可以用“!”引用命令实现。常用的“!”命令如表5.3所示。命令命令功能!引用历史缓冲区或文件中的命令!!重复执行前面刚执行的命令!n重复执行命令历史缓冲区或文件中序号为n的命令!-n重复执行从当前命令位置开始倒数的第n个命令!string重复执行以给定的部分字符“string”为起始字符的最近一次执行的命令!?string[?]重复执行包含给定的字符串“string”的最近一次执行的命令!!string引用前一条刚执行完的命令,将给定的字符串“string”放在该命令后,重新执行!#引用迄今为止已经输入的所有字符!$引用前一个命令的最后一个参数【例5.10】使用“!!”命令,重复执行刚执行的ls命令。命令及结果如下:user@ubuntu:~$lsa?Desktopexamples.desktop公共的模板视频图片文档下载音乐桌面user@ubuntu:~$!!lsa?Desktopexamples.desktop公共的模板视频图片文档下载音乐桌面【例5.11】重复执行最近一次执行的history10命令。命令及执行结果如下:user@ubuntu:/home$history105ls\?6ls\?7ls*\?…14history10user@ubuntu:~$lsa?Desktopexamples.desktop公共的模板视频图片文档下载音乐桌面user@ubuntu:~$!hhistory108ls9history…16ls17history10【例5.12】用mkdir在当前用户目录下新建一个目录han,然后使用cd!$,完成进入目录han的功能。命令及结果显示如下:user@ubuntu:~$mkdirhanuser@ubuntu:~$cd!$cdhanuser@ubuntu:~/han$4.编辑命令行快捷键用户可以通过光标和Home、End等功能键对命令行进行操作,用户还可以通过键盘的快捷方式对命令行进行编辑,常用的快捷键及功能如表5.4所示。主要功能键按键功能Ctrl+a将光标移到行首Ctrl+e将光标移到行尾Ctrl+k删除从光标到行尾的部分Ctrl+u删除从光标到行首的部分Ctrl+w删除从光标到当前单词开头的部分Ctrl+y插入最近删除的单词Alt+a将光标移到当前单词头部Alt+e将光标移到当前单词尾部Alt+d删除从光标到当前单词结尾的部分1.“;”的使用格式:命令1;命令2先执行命令1,不管命令1是否出错,接下来再执行命令2。【例5.13】先查看当前路径然后再列出目录中所有的内容,使用“;”实现。命令及显示信息如下:user@ubuntu:~$pwd;ls/home/userDesktopexamples.desktop公共的模板视频图片文档下载音乐桌面2.“&&”的使用格式:命令1&&命令2&&…先查看当前路径然后再列出目录中所有的内容。使用“&&”实现。命令及显示信息如下:user@ubuntu:~$pwd&&ls/home/userDesktopexamples.desktop公共的模板视频图片文档下载音乐桌面用户可以用简单的命令别名来定义烦琐的命令以便解决这个问题。别名相当于给命令起一个新名字,原来的命令名还是存在的。别名定义格式如下:格式:alias[别名]=[需要定义别名的命令]【例5.14】将cd/usr/local/bin命令行另起别名为“bin”。命令及运行结果如下:user@ubuntu:~$aliasbin='cd/usr/local/bin'user@ubuntu:~$binuser@ubuntu:/usr/local/bin$管道是Linux系统中信息通信的重要方式,它是一种先进先出的单向数据通路。利用管道线“|”把一个程序的输出直接连接到另一个程序的输入,而不经过任何中间文件。管道线“|”,可以把一个命令的标准输出连接到管道线是指连接两个或更多程序管道的通路。格式:命令1|命令2【例5.15】使用命令more分页显示/usr/bin目录中的内容.命令及系统显示信息。用户可以在shell的命令行中使用通配符作为特殊结构的字符串模式操作。用于shell模式匹配的常用通配字符及其功能如表5.5所示。字符功能*用于匹配任意字符?用于匹配一个字符[x-y]用于匹配字符范围。例如[0-9][!x-y]用于