第8章 SHELL环境基础及设置_第1页
第8章 SHELL环境基础及设置_第2页
第8章 SHELL环境基础及设置_第3页
第8章 SHELL环境基础及设置_第4页
第8章 SHELL环境基础及设置_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第八章SHELL环境基础及设置一、shell基本概述1.Shell——是用户与操作系统内核之间的接口,起着协调用户与系统的一致性和在用户和系统之间进行交互的作用。Shell在Linux中具有及其重要的地位,如图8.1命令行SHELL图8-2shell的角色用户shellkernel硬件2.Shell基础Shell——如同其名所示,它就像是一个壳,而这个壳介于用户和操作系统(Kernel)中间,负责将用户的命令解释为操作系统可以接受的低级语言,同时将操作系统响应的信息以用户了解的方式来显示,如此可避免用户执行不当的命令而对系统产生危害。每个用户在登录Linux后,系统会出现不同的提示符号,例如#,$或~等,之后您就可以开始输入需要的命令了。如果命令正确,系统就可根据命令的要求来执行,直到用户退出系统为止。在登录到退出期间,用户输入的每个命令都会经过解释及执行,而这个负责的机制就是Shell。3shell分类一般用户的命令可分为两大类:程序和Shell内置命令。如果该命令为程序类型,则Shell会找出该程序,然后将控制权交给内核,并由内核负责执行该程序,而在内核将程序执行完毕后,再将控制权交回给Shell。但如果是Shell内置命令,则由Shell直接响应,因此速度较快。8.2进入SHELL8.2.1启动默认进入SHELL

在系统启动的时候,核心程序会被加载到内存,负责管理系统的工作,直到系统关闭为止。当用户登录(login)时,一个交互式的shell会跟着启动,并提示输入命令。8.2.2桌面终端SHELL

进入:主菜单|应用程序|附件|终端退出:单击SHELL提示窗口右上角的关闭按钮提示符下输入exit按Ctrl+D组合键8.2.3远程登录SHELL

假如当前主机的系统已经具有ssh服务或telnet服务,那就可以直接使用系统的ssh或telnet命令登录到远程的主机上。如果是在Windows下想要登录到远程的Linux主机,有两种方式。第一种可以打开“命令提示符”,使用Windows内置的telnet命令来登录。第二种就是使用远程登录软件PUTTY(http://putty.nl/download.html)或使用pieTTY(/~piaip/pietty/)

如果远程主机没有提供SSH服务,那么就需要安装和配置SSHEBTL。一般情况下,我们OpenSSH来实现远程主机的SSH功能。OpenSSH介绍及安装默认情况下,UBUNTU是不会安装OpenSSH的,因此用户OpenSSH用户之前必须先安装。在命令行终端输入:

sudoapt-getinstallopenssh-serverOpenSSH服务器端设置

OpenSSH守护进程sshd使用/etc/ssh/sshd_config配置文件。UBUNTU安装的置信配置文件在多数情况下应该是相当完备,可以直接使用。但也可以修改,修改完配置文件,注意重启ssh服务,以便修改能及时生效。OpenSSH客户端应用要从客户端连接到OpenSSH服务器上,必须在客户机器上装有openssh-clients或者符合ssh标准的客户端软件。启动OpenSSH服务root@ubuntu:-$/etc/init.d/sshstart停止OpenSSH服务root@ubuntu:-$/etc/init.d/sshstop重启OpenSSH服务root@ubuntu:-$/etc/init.d/sshrestart使用ssh命令例:要登录到一个IP地址为03的远程机器上,在shell提示下输入下面的命令:

root@ubuntu:-$ssh03

使用sftp命令

sftp工具可以用来打开一次安全互动的FTP会话。它与ftp相似,只不过它使用安全、加密的连接。它的一般语法是:

sftp

username@

然后输入密码,一旦通过验证,就可以使用一组和FTP相似的命令。OpenSSH使用帮助我们可以参考以下网站:http://8.3SHELL简单使用在使用SHELL之前,建议大家平常应用中不要用root账号运行Shell,如果还是新手,这上点非常要注意。作为普通用户,不管有意还是无意,都无法破坏系统。8.3.1初次面对Shell

当登入系统或打开一个xterm窗口,首先看到的是提示符。UBUNTU的标准提示符包括用户名、登入的主机名,当前所在的目录和提示符号。例如,以用户名user登入名为ubuntuer的主机,当前的用户的主目录——/home/user中。提示符如下:

user@ubuntuer:~$Root的提示符如下:

root@ubuntuer:~#8.3.2基本命令体验pwd、cd、ls使用pwd查看当前路径当输入pwd时,系统便会在Shell提示窗口中打印当前目录名作为回应。使用cd命令改变所在目录使用ls查看目录内容

8.3.3定位文件和目录locate

有时候,知道某一文件或目录存在,但却不知该到哪里去找到它。可以使用locate命令来搜寻文件或目录。8.3.4从命令行中打印

lpr命令紧跟着一个文件名,会把指定的文件发送到打印队列中。如,lpr

foo.txt会打印foo.txt文件。要查看在打印队列中等待的作业,在命令行中输入lpq。输入lpq后,会看到和以下相似的输出

activeroot389foo.txt

取消作业输入lprm,再跟打印作业的号码。8.3.5清除和重设终端清除终端用clear命令8.4Shell应用技巧TAB自动补齐如何用‘cd’(改变目录,changedirectory)最快地从您当前所在的home目录跳到‘/usr/local/games’呢?cd/u<TAB>lo<TAB>g<TAB>

这称为‘命令行自动补齐’(automaticcommandlinecompletion),这在平常应用中是不可缺少的。让我们仔细看看这个例子:cd/u<TAB>扩展成了cd/usr/,很简单吧。下面的cd/u<TAB>sr<TAB>扩展为cd/usr/src/。如果您只敲了cd/u<TAB>s<TAB>,‘/usr’下匹配的(‘cd/u*/s*’)三个子目录将列出供您选择:‘/usr/sbin’、‘/usr/share’和‘/usr/src’。因此,<TAB>键可以很方便地用于根据前几个字母,来查找匹配的文件或子目录。比如,ls/usr/bin/zip<TAB>将列出所有‘/usr/bin’下面,以字符串‘zip’开头的文件或子目录。当然,完成这类任务还有更厉害的命令,但这个方法确实很管用。

另外,碰到长文件名时就显得特别方便。假设您要安装一个名为‘boomshakalakwhizbang--mdk586.rpm’的RPM包,您输入rpm-iboom<TAB>,如果目录下没有其他文件能够匹配,那shell就会自动帮忙补齐。

cd/u<TAB>sr<TAB>l<TAB>8.4.2命令行的历史记录通过按向上方向键,您可以向后遍历近来在该控制台下输入的命令。用向下方向键可以向前遍历。与SHIFT键连用的话,您还可以遍历以往在该控制台中的输出。您也可以编辑旧的命令,然后再运行。按<CTRL+R>后,shell就进入“reverse-i(ncremental)-search”(向后增量搜索)模式。现在输入您要找的命令的首字母:(reverse-i-search)`':.敲入‘i’可能会变成:(reverse-i-search)`i':isdnctrl

hangupippp0

如果您再按<ENTER>键,上面的命令将再次执行。而如果您按了向右、向左方向键或<ESC>,上面的命令将回到普通的命令行,这样您就可以进行适当编辑。例如,用命令mkdir/homezcq/a/b新建了一个目录,现在想用命令cd进入到该目录,可以用cd!$,shell将把子前一个命令mkdir的参数添加到现在的cd后面。8.4.3命令的别名在使用shell的过程中记住所有的命令及各自带的可选项,然后每次一一输入,这确实前点枯燥。但幸运的是,可以为常用命令定义快捷方式。这些快捷方式可以用较简单的命令别名或复杂一些的shell函数的语法来定义。例,用下面的命令来上传MUO中的文件:

user@ubuntuer:~$rsync–essh–z–t–vv–progress/home/learner/web/muo/rsmuo/docs

muo://www/mandrakeuser/docs显然,如果每次都要逐一输入,那真是太痛苦了!因此我们可以在~/.bashrc中定义了别名。Aliasupmuo=‘rsync–essh–z–t–vv–progress/home/learner/web/muo/rsmuo/docs

muo://www/mandrakeuser/docs’现在,只要输入upmuo就可以完成上传任务了。定义别名的语法是:

aliasshortcut=‘command’8.4.4shell快捷方式

~就是home/user目录的简写。例:把一个名为bb的文件复制到home目录下的a子目录中。方法一:cpbb/home/user/a方法二:cpbb~/a8.4.5多命令执行在shell的使用中,有时候用户希望在一次执行中使用多个命令,然后在执行过程中把注意力转移到其他地方。这都是没问题的,shell允许在不同的命令之间放上特殊的排列字符,实现多命令执行。常用的有以下两种:分号使用方式:command1;command2

先执行command1,不管command1是否出错,接下来执行command2

例:cd

a;ls

将先进入到a目录,再显示a目录。&&

使用方式:command1&&command2

只有当command1正确运行完毕后,才执行command2例:cd

a&&ls8.4.6命令的替换命令替换是一项很实用的功能。假设用户想看看XFree86文档中的.mouse文件,但不知道这个文件的位置。如果你已经听说了locate命令,也安装了slocate包,就可以用locateREADME.mouse,发现那个文件在/usr/X11R6/lib/X11/doc中,现在就可以在终端用less或在文件管理器中进入那个目录然后读取文件。而命令替换可以给带来一些便捷。如:

less$(locateREADME.mouse)

一步到位。命令locateREADME.mouse的输出(=/usr/X11R6/lib/X11/doc/README.mouse

语法:command1$(command2)

除了$(),还可以用后引号(backquote)command1,‘command2’除此之外,还有一个例子,假设打算结束一个gThumb的程序,须用命令pidof找出相应的进程号,然后以这个进程号为参数,这样就可以结束gThumb程序了。

pidof

gThumb256kill256

还可以试试:

kill‘pidof

gThumb’8.4.7命令的任务调度当在终端运行一个命令或开启一个程序时,终端要等到命令或程序运行完毕后,才能再被使用,在Linux中,我们称这样的命令或程序在前台运行。如果想在终端下运行另一个命令,则需要打开一个新的终端。有一个便捷的办法,即任务调度。当运用任务的高度或将命令置于后台,终端就立即解放了,这样一来,终端立即就可以接收新的输入。我们只需在后面添加一个&。如:~gqview&

命令jobs将显示在这个终端窗口中运行着哪些命令与程序:

~$jobs[1]+Runninggqview&

当要关闭终端窗口中进,这一点就很重要,因为关闭终端将导致所有在其中运行机制的作罢针被中止,在此例子中,如果关闭了终端,由这个终端开启的GQview程序也将被关闭。但如何将前台运行的一个程序放到后台去?可以使用bg命令。

~$gqview

按Ctrl+Z[2]+stoppedgqview~$bg[2]+gqview&

组合键Ctrl+Z将挂起终端中正在运行的程序,然后就可以用bg命令将其放到后台去执行了。8.5BashShell的配置文件在使用Shell时,可以通过对用户的Shell环境进行一定的设置,以满足个性化或习惯上的要求。8.5.1Bash配置文件

Bash文件在用户的主目录下。在用户的主目录下运行ls.bash*,如下:ls.bash*.bash_history.bash_logout.bash_profile.bashrc~/.bash_profile:定义了个人路径(PATH)与环境变量的文件名称.

~/.bashrc:

对于个人喜好的bash设定是最重要的,在这里设定个人变量.

~/.bash_history:此文件用于记录曾经用过的命令.

~/.bash_logout:

此文件是在注销shell时bash要为你做的事情.区别:.bash_profile只在会话开始时被读取一次,而.bashrc则每次打开新的终端时,都要被读取。按照传统,须将定义的变量,如PATH,放到.bash_profile中,而像aliases和函数之类,则放在.bashrc中。但由于.bash_profile经常被设置成先读取.bashrc的内容,如果图省事的话,就把所有配置都放进.bashrc。这些文件是每一位用户的设置。系统级的设置存储在/etc/profile、/etc/bashrc及目录/etc/profile.d下的文件中,但最好用各自的配置文件,这样编辑不需要root权限,还可以使设置更有个性,同时也不会受到别人设置的影响。当系统级与用户级的设置发生冲突时,将采用用户的设置。8.5.2提示符设置在默认设置下,提示符将显示的是用户名、主机名和当前所在目录,如usr@hostname~$

一般来说,最后一个字符可以标识是普通用户($),还是root(#)。但对于一些用户来说,默认设定可能有些不友好,因为提示符只显示当前目录的最后一部分。能不能用Shell自动提示当前目录呢?

Shell的大部分设定,包括提示符,一般都包含在文件/etc/bashrc中,可以通过编辑各自主目录下的.bash_profile和.bashrc来改变设置你可以通过改变bash的PS1变量的值来改变你的缺省提示符,例如:

PS1="Pleaseenteracommand"

把bashshell的提示符该为指定的字符串。如果退出刚刚设定的变量读取系统默认的变量的话,暂时没有什么好办法,crtl+d

退出再次登陆读取系统默认变量。

第二级:当bash期待输入更多的信息以完成命令时显示第二级提示符。缺省的第二级提示符是>。如果你要改变第二级提示符,可以通过设置PS2变量的值来实现:

PS2="Ineedmoreinformation"8.6Shell环境命令

'$PATH'与'$PS1'一样,也是环境变量。输入set将列出所有当前定义的环境变量。您看到的这些环境变量在shell的配置文件中定义,可能是用户自己的配置文件,也可能是由'root'通过'/etc'下面的系统级文件定义的。如果您使用X,更多的一些变量将由X、您的窗口管理器或桌面环境的启动文件配置。

如果对这些设置不很清楚,您暂时最好不要随便改动。了解如何改变$PATH变量很有用,因为这个变量决定了shell将到哪些目录中寻找命令或程序。如果要执行的命令的目录在$PATH中,您就不必输入这个命令的完整路径,直接输入命令就可以了。一些第三方软件没有将可执行文件放到Linux的标准目录中。因此,将这些非标准的安装目录添加到$PATH是一种解决的办法。此外,您也将看到如何处理一般的环境变量。

首先,作为惯例,所有环境变量名都是大写。由于Linux区分大小写,这点您要留意。当然,您可以自己定义一些变量,如'$path'、'$pAtH',但shell不会理睬这些变量。

第二点是变量名有时候以'$'开头,但有时又不是。当设置一个变量时,您直接用名称,而不需要加'$':

PATH=/usr/bin:/bin:/usr/local/bin:/usr/X11R6/bin

要获取变量值的话,就要在变量名前加'$':

echo$PATH

/usr/bin:/bin:/usr/local/bin:/usr/X11R6/bin

否则的话,变量名就会被当作普通文本了:

echoPATH

PATH

处理$PATH变量要注意的第三点是:您不能只替换变量,而是要将新的字符串添加到原来的值中。在大多数情况下,您不能用'PATH=/some/directory',因为这将删除$PATH中其他的所有目录,这样您在该终端运行程序时,就不得不给出完整路径。所以,只能作添加:

PATH=$PATH:/some/directory

这样,PATH被设成当前的值(以$PATH来表示)+新添的目录。

到目前为止,您只为当前终端设置了新的$PATH变量。如果您打开一个新的终端,运行echo$PATH,将返回旧的$PATH值,而看不到您刚才添加的新目录。因为您先前定义的是一个局部环境变量(仅限于当前的终端)。

要定义一个全局变量,使在以后打开的终端中生效,您需要将局部变量输出(export),可以用'export'命令:

exportPATH=$PATH:/some/directory

现在如果您打开一个新的终端,输入echo$PATH,也能看到新设置的$PATH了。请注意,命令'export'只能改变当前终端及以后运行的终端里的变量。对于已经运行的终端没有作用。为了将目录永久添加到您的$PATH,只要将'export'的那行添加到您的'.bash_profile'文件中。

请不要在'.bashrc'中设置PATH,否则会导致PATH中目录的意外增长。您每次打开一个新的shell,'.bashrc'都会作用。所以如果在该文件中添加目录,您每次打开一个终端,目录又会被添加。这将导致PATH变量由于目录复制,不断地增长。8.6.1echo指令

echo用于显示变量内容语法:user@ubuntuer

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论