首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 网络编程-> Shell教程
shell介绍_shell教程
作者:网友供稿 点击:0
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
#版权宣告:1999CopyrightOLS3Allrightsreserved.

#作者:OLS3(卧龙小三)
#本讲义仅供台南县87学年度网路管理进阶研习班上课之用.
#学员可保存一份自用,供日後网管时参考备查.
#作者保有一切形式的着作权.
#欲作其它用途者,需经作者授权同意.
#未经作者授权同意之前,请勿转载刊登.

Shell

当我们登入Linux之後,第一个接触到的,便是Shell.我们必须对它有点初步的认识才行.

一.Shell简介.

Linux系统分成三个重要的部份

核心
Shell
工具程式
核心的部份相当低阶,操作者不易和它直接沟通,因此,必须要有一个友善的介面(interface),使得操作时能更为方便,这个介面便是Shell.

换言之,Shell就是一个居於核心和操作者之间的一层使用者介面.

那麽,为何称它为Shell呢?Shell的本意是"壳"的意思呢!

没错,在核心的外面,包覆着一层外壳,用来负责接收使用者输入的指令,然後将指令解译成核心能够了解的方式,传给核心去执行,再将结果传回至预设的输出周边.

如图所示:



例如:键入

ls-l

shell给你以下回应:


档有
案档
种案档案大小最近修改的
类档案权限数拥有人组别(byte单位)日期及时间档案名称
drwxr-xr-x14rootroot1024Jul2121:31.
drwxr-xr-x17rootroot1024Apr1112:01..
drwxr-xr-x882821024Feb2519:23apache
-rw-r--r--1rootroot1335460Feb2517:45apache_1_3_4.tar.gz
drwxr-xr-x6rootroot1024Aug311998ftp
drwxr-xr-x5rootroot1024Aug311998httpd
drwx------2jamesjames1024Apr2306:47james
drwxr-xr-x2rootroot12288Aug311998lost found
drwxr-xr-x2msqlnobody1024Dec281998msql
drwxr-xr-x28ols3ols32048Jul1921:38ols3
drwxr-xr-x31022nobody1024Jan2523:40ols3cgi
drwxrwxr-x3perlols31024Feb207:11perl
-rw-------1rootroot2097152Jul2118:39quota.group
-rw-------1rootroot1278656Jul2118:39quota.user
drwxrwxr-x2rootnobody1024May111998samba
drwxr-xr-x3apachenobody1024Feb2516:58temp
drwxrwxr-x2webadmnobody1024Mar1416:34webadm



其实不只是Linux有这一层Shell,其它作业系统也有.
比如DOS的command.com,Windows的GUI(GraphicalUserInterface),Mac的GUI.

Shell按着表现的方式与读取使用者输入种类的不同,可分为二大类:

Textbase:文字导向
Graphbase:图型导向
所谓"读取使用者输入种类不同"是指:读取自键盘,或读取自滑鼠,其它serialinput,萤幕触控等.

这样说来,Shell好像只是命令直译器罢了?!
嗯,这倒要按不同的OS所附给的Shell其功能和选择性的自由度而定.

以DOS的COMMAND.COM而言,它就是一个十足的命令直译器,除了一点点batch档的能力之外,它的功能并不多.Win平台的GUI,则是一个图型式的命令直译器,介面十分友善.不过,这二种OS,不能让你自由而简单地选择Shell.(以前DOS有4dos可选用)

Linux的shell,除了做为命令直译器之外,它也是一个不错的程式语言,是系统管理维护时的重要工具.

由於Unix家族,对Shell的处理,采独立自由开放的方式,因此,Shell的种类相当地多,更可以让人自由地更换(chsh).

目前流行的shell有:

Bourneshell:sh
Cshell:csh
Kornshell:ksh(商业软体)
tcsh(free)
BourneAgainshell:bash(GNU)
Linux的标准shell是采用bash.它也是我们要学习的主要对象.

二.Shell的简史

第一个重要的shell是Bourneshell(如此命名是为了纪念此shell的发明者StevenBourne),1979年第一个流行的Unix版本7发行时,开始使用Bourneshell.

Bourneshell的主档名为sh,因此,日後人们便以sh为Bourneshell的主要识别名称.

虽然Unix上的shell有许多种,但Bourneshell的地位至今仍然没有改变.许多Unix系统中仍然使用sh做为重要的管理工具.(它的工作从开机到关机,几乎无所不包)

第一个广为流行使用的shell变种是Cshell.Cshell主要附在BSD版的Unix系统中.它的作者是柏克莱大学的BillJoy.Cshell主要是因为其语法和C语言相类似,因而得名.这使得Unix系统的程式师,在学习Cshell时,感到相当地方便容易.

以上这二种形成shell的二大主流,後来的变种shell大都攫取这二种shell的优点.

比如Korn,tcsh及bash.

Bashshell是GNU计划的重要工具软体之一,也是GNU作业系统中标准的shell.

Bash相容於sh,因此,许多早期开发出来的Bourneshell都可以继续在bash中运作.现在我们安装好的RedHatLinux便是完全使用Bash.(/bin/sh->/bin/bash)

Bash在1988年诞生,最初的作者是BrianFox,ChetRamey於1989加入,现在官方正式的维护者是ChetRamey,他的工作便是持续不断地增强bash的功能.

1995~1996期间推出bash2.0,在这之前,广为使用的版本是1.14.x,它增加了许多新的功能,以及更好的相容性.

当然,Bash是完全免费的,它是OpenSource的一员,原始码全部开放.

二.Bash的功能.

Bash具有以下功能:

相容於Bourneshell(sh)
包含有Cshell以及Kornshell中最好的功能.
具命令列编修的能力(您记得以前DOS中的doskey吗?)
工作控制(jobcontrol)的能力,可控制前景及背景程式
具shell程式设计的能力,可让您自订shell及设计程式,管理系统.
三.新版的Bash哪里抓取?

若欲抓取新版的bash,可至http://www.gnu.org或其mirror站台.

中研院FTP也是不错的选择.ftp://ftp.sinica.edu.tw或ftp://linux.sinica.edu.tw

三.开始使用Bash

当你login进Linux主机时,便开始和bash互动,一直到你logout主机(下exit,logout,或按^D)为止.

Bash的提示符号为$(代表一般身份使用者),当您具有root权限时,提示符号则变为#.

一旦出现提示符号时,您便可以开始键入操作命令列(commandline)了.

命令可分为二大类:

bash内建的指令
程式
如果是bash内建的指令,则由bashshell负责回应;若是程式,则shell会找出该程式,然後将控制权交给核心,由核心执行该程式,执行完之後,再将控制权交回给shell.

怎麽知道那些指令是bash内建的,那些是程式呢?通常用"which指令",若没有任何回应,表示是内建的指令(除非该指令错误、不存在,或该程式不在预设的搜寻路径之内),例如下:

[ols3@ols3/ols3]$whichecho   [没有回应,表示是内建的指令]

[ols3@ols3/ols3]$whichls

/bin/ls

四.命令列的格式.

命令列通常由好几个字串组成,中间用空白或tab键分开.如下所示:

commandoptionsarguments(或称为parameters)
命令选项参数
rm-rf/home/ols3

除了空白和tab键之外,每一部份,我们称之为token,比如上面的例子中,便有三个token:rm,-rf,/home/ols3.

当键入此一命令列时,shell首先将它分解成个别的token,然後判断是内建的指令,或是程式,再按之前提过的方式去执行.

怎麽知道一个命令或程式,它有那些选项和参数呢?通常man一下该指令,就可以得到了.例如:

manrm

另外,多行指令也可以一下全部写在同一命令列中,只要中间用;分开,如:

ls;mkdirtest;clear

五.现行目录和自家目录.

所谓现行目录(currentdirectory)是指:你现在所处的位置,又称为工作目录(workingdirectory).

欲知现行目录为何?可下pwd指令便知.

所谓自家目录(homedirectory)是指:当初root为你建立帐号时,所指定给你的一个私人专用的目录,也是你登入系统之後,第一个进入的地方.

欲知自家目录,可用下列方式:

cd   (然後直接按Enter)
cd~  (~代表自家目录)
cat/etc/passwd|grep您的帐号
相关的技巧

cd./myway(进入目前目录下的myway目录中) 
cd.. (回到上一层目录)
cd- (回到先前的目录)
六.万用字元.

如果命令列的参数中,含有档名,那麽万用字元(wildcards)可以带来十分便利的操作.(不过若使用不当,也是恶梦的开始)

如果各位以前有过DOS的操作经验,应该还记得*及?所代表的意义吧?!

以下是bash中使用的万用字元:

?代表任何单一字元(character)
*代表任何字串(注意:0个以上的字元,例:*yes将包含yes或yes-or-not)
[字元组合]在中括号中的字元皆符合,如:[a-z]代表所有的小写字母
[!字元组合]不在中括号中的字元皆符合,如:[!0-9]代表非数字的字元皆符合



七.输入和输出与重新导向.

当Linux系统完成开机之後,预设上,便开有三个档案,这三个档案是做为输入、输出以及显示错误之用的.

我们称之为:

标准输入:通常是键盘,档案代码为0
标准输出:通常是萤幕,档案代码为1
标准错误:通常标准输出相同(也就是萤幕),档案代码为2
虽然系统已帮你设好了这三个档案,但我们仍然可以视需要,适时地改变输入,输出,及错误这三者至不同的地方.这种改变标准输出入的动作,我们称之为"I/O重新导向"(I/ORedirection).

例如:

ls-la>myfile就是将查询的结果重新导向至myfile中(本来是应该出现在萤幕上的)

catmyfile便可以看见ls-la的结果.

catyoufile就是将myfile的内容拷贝给youfile.

>代表将输出转向

<代表将输入转向

另一个会将输出入转向的机制是"管线"(Pipelines).

所谓的管线就是将一个程式的输出当成另一个程式的输入.

例如:cat/etc/passwd|grepols3

上面这段指令的意思是说:把/etc/passwd档的内容显示结果(即输出)丢给grep这个指令当作输入值,然後由grep从中找出包含关键字ols3的资料列.



八.前景与背景工作.

Linux是多人多工的作业系统,这意谓Linux可以让多人同时使用,更可以同时执行许多程式.

一般而言,你所执行的指令会一直握着控制权,一直到程式结束为止,我们称为这样的执行工作是在前景工作(foregroundjobs),如果,执行指令时,你仍然可以再做其它的事情,那我们就称它是在背景工作.

通常比较耗时间的工作,我们会把它丢到背景去执行,而这期间,我们仍然可以和shell继续沟通,下达其它命令给shell去执行.

例如:我们想从中研院的FTP伺服器下载某一个目录中所有的档案,但又不想等它执行完毕(因为这样耗时间,也很无聊),可以用以下的方式来达成:

ncftp-Rftp://linux.sinica.edu.tw/pub1/redhat/powertools&

其中&这个符号便是将命令列丢到背景去执行的指令.

如果您想离线之後,仍然令系统继续传档,可以在前面再加一个nohup的指令,如下:

nohupncftp-Rftp://linux.sinica.edu.tw/pub1/redhat/powertools&

nohup是nohangup即不挂断之意.

八.特殊字元及引号.

有许多字元,对shell来说,是具有特殊意义的.详列於下:

符号意义
~自家目录
`命令取代
#解
$变数取值
&背景工作
*万用字元
(子shell开始
)子shell结束
\使特殊字元恢复本意
|管线
[字元组合开始
]字元组合结束
{命令区块开始
}命令区块结束
;命令分隔号
单引号(不具变数置换的功能)
"双引号(具置换的功能)
<输入转向
>输出转向
/路径分隔号
?万用字元
!管线逻辑意义上的NOT

九.常用控制组合键.

我们在操作Linux时,常会使用一些组合键来控制shell的活动.

详列如下:

组合键意义
Ctrl-C中止目前的命令
Ctrl-\同上
Ctrl-D输入结束,即EOF之意(如使用mail信件结束时);或logout登出Linux
Ctrl-Z暂停目前的命令
Ctrl-M相当按Enter
Ctrl-S暂停萤幕输出
Ctrl-Q恢复萤幕输出
Ctrl-U将命令列整列删除
Ctrl-?删除最後一个字元,相当於按Del

十.指令练习.

指令选项或参数意义
ls
pwd
which
more
less
passwd
man
cat
touch
cd
mkdir
rmdir
cp
rm
head
tail
wc
grep
ps





文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·jsp设置页面过期-JSP教程,Jsp/Servlet
·用SqlDataAdapter更新数据库的方法介绍-.NET教程,数据库应用
·用java关闭IE窗口-JSP教程,Java技巧及代码
·ADO.NET 2.0 Feature Matrix-ASP教程,ASP应用
·Jsp & Servlet 会话控制-JSP教程,Jsp/Servlet
·xmlhttp 乱码 的解决方法 (UTF8,GB2312 编码 解码)-ASP教程,XML相关
·使用C#编写Ice应用程序-.NET教程,C#语言
·用PHP实现WEB动态网页静态-PHP教程,PHP应用
·DataGrid基于Access的快速分页法-.NET教程,数据库应用
·HTML文档中小meta的大作用-ASP教程,XML相关
最新文章
·photoshop打造数码照片“像素块”特效_photoshop教程
·css中如何正确的使用id和class_css教程
·保证让新手轻松月挣500以上_网赚技巧
·记住10个关键词让你作一名成功的站长_站长心得
·对新人站长得一些善意得提醒_站长心得
·在windows vista中安装telnet客户端_windows vista
·怎样提高你的google adsense收入_站长心得
·googleadsense新手指南及常见问题整理_google推广
·高网站访问量的必胜之道:访google adwords经理(上)_google推广
·成功经验谈:运营blog的21个具体方法_网络编辑
相关主题
  • shell技巧_shell教程
  • shell初学者的入门知识_shell教程
  • shell编程_shell教程
  • shell编程例子--一个.login例子_shell教程
  • shell编程例子--一个简单的目录菜单_shell教程
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭