linux中的shell究竟是什么??

作者&投稿:虫侨 (若有异议请与网页底部的电邮联系)
linux下的 shell到底是什么啊~

在计算机科学中,是指“提供用户使用界面”的软件,通常指的是命令行界面的解析器。一般来说,shell是指操作系统中,提供访问内核所提供之服务的程序。
一、shell的分类:
1、图形界面shell(Graphical User Interface shell 即 GUI shell)
例如:应用最为广泛的 Windows Explorer (微软的windows系列制作系统),还有也包括广为人知的 Linux shell,其中linux shell 包括 X window manger (BlackBox和FluxBox),以及功能更强大的CDE、GNOME、KDE、 XFCE。
2、命令行式shell(Command Line Interface shell ,即CLI shell)
例如:bash / sh / ksh / csh(Unix/linux 系统)(MS-DOS系统);
cmd.exe/ 命令提示字符(Windows NT 系统);
Windows PowerShell(支援 .NET Framework 技术的 Windows NT 系统)。
二、shell的命令描述:
1、使用用户的缺省凭证和环境执行 shell。
2、在UEFI环境下,EFI的shell环境提供了一组丰富的扩展和增强的命令,在以后的计算机中,传统的DOS界面将会被shell环境所取代,所有的.exe文件将不会在以后支持shell的环境中出现,取而代之的文件后缀是.efi。

ll程序呢? 简单的说shell程序就是一个包含若干行
shell或者linux命令的文件.
象编写高级语言的程序一样,编写一个shell程序需要一个文本编辑器.如VI等.
在文本编辑环境下,依据shell的语法规则,输入一些shell/linux命令行,形成一个完整
的程序文件.
执行shell程序文件有三种方法
(1)#chmod +x file(在/etc/profile中,加入export PATH=$:~/yourpath,就可以在命令行下直接运行,像执行普通命令一样)
(2)#sh file
(3)# . file
(4)#source file
在编写shell时,第一行一定要指明系统需要那种shell解释你的shell程序,如:#! /bin/bash,
#! /bin/csh,/bin/tcsh,还是#! /bin/pdksh .
2.shell中的变量
(1)常用系统变量
$ # :保存程序命令行参数的数目
$ ? :保存前一个命令的返回码
$ 0 :保存程序名
$ * :以("$1 $2...")的形式保存所有输入的命令行参数
$ @ :以("$1""$2"...)的形式保存所有输入的命令行参数
(2)定义变量
shell语言是非类型的解释型语言,不象用C++/JAVA语言编程时需要事先声明变量.给一
个变量赋值,实际上就是定义了变量.
在linux支持的所有shell中,都可以用赋值符号(=)为变量赋值.
如:
abc=9 (bash/pdksh不能在等号两侧留下空格 )
set abc = 9 (tcsh/csh)
由于shell程序的变量是无类型的,所以用户可以使用同一个变量时而存放字符时而存放
整数.
如:
name=abc (bash/pdksh)
set name = abc (tcsh)
在变量赋值之后,只需在变量前面加一个$去引用.
如:
echo $abc
(3)位置变量
当运行一个支持多个命令行参数的shell程序时,这些变量的值将分别存放在位置变量里.
其中第一个参数存放在位置变量1,第二个参数存放在位置变量2,依次类推...,shell保留
这些变量,不允许用户以令外的方式定义他们.同别的变量,用$符号引用他们.

3.shell中引号的使用方法
shell使用引号(单引号/双引号)和反斜线("\")用于向shell解释器屏蔽一些特殊字符.
反引号(")对shell则有特殊意义.
如:
abc="how are you" (bash/pdksh)
set abc = "how are you" (tcsh)
这个命令行把三个单词组成的字符串how are you作为一个整体赋值给变量abc.
abc1='@LOGNAME,how are you!' (bash/pdksh)
set abc1='$LOGNAME,how are you!' (tcsh)
abc2="$LOGNAME,how are you!" (bash/pdksh)
set abc2="$LOGNAME,how are you!" (tcsh)
LOGNAME变量是保存当前用户名的shell变量,假设他的当前值是:wang.执行完两条命令后,
abc1的内容是:$LOGNAME, how are you!.而abc2的内容是;wang, how are you!.
象单引号一样,反斜线也能屏蔽所有特殊字符.但是他一次只能屏蔽一个字符.而不能屏蔽
一组字符.
反引号的功能不同于以上的三种符号.他不具有屏蔽特殊字符的功能.但是可以通过他将
一个命令的运行结果传递给另外一个命令.
如:
contents=`ls` (bash/pdksh)
set contents = `ls` (tcsh)
4.shell程序中的test命令
在bash/pdksh中,命令test用于计算一个条件表达式的值.他们经常在条件语句和循环
语句中被用来判断某些条件是否满足.
test命令的语法格式:
test expression
或者
[expression]

在test命令中,可以使用很多shell的内部操作符.这些操作符介绍如下:
(1)字符串操作符 用于计算字符串表达式
test命令 | 含义
-----------------------------------------
Str1 = str2 | 当str1与str2相同时,返回True
Str1! = str2| 当str1与str2不同时,返回True
Str | 当str不是空字符时,返回True
-n str | 当str的长度大于0时,返回True
-z str | 当str的长度是0时,返回True
-----------------------------------------
(2)整数操作符具有和字符操作符类似的功能.只是他们的操作是针对整数
test表达式 | 含义
---------------------------------------------
Int1 -eq int2|当int1等于int2时,返回True
Int1 -ge int2|当int1大于/等于int2时,返回True
Int1 -le int2|当int1小于/等于int2时,返回True
Int1 -gt int2|当int1大于int2时,返回True
Int1 -ne int2|当int1不等于int2时,返回True
-----------------------------------------
(3)用于文件操作的操作符,他们能检查:文件是否存在,文件类型等
test表达式 | 含义
------------------------------------------------
-d file |当file是一个目录时,返回 True
-f file |当file是一个普通文件时,返回 True
-r file |当file是一个刻读文件时,返回 True
-s file |当file文件长度大于0时,返回 True
-w file |当file是一个可写文件时,返回 True
-x file |当file是一个可执行文件时,返回 True
------------------------------------------------
(4)shell的逻辑操作符用于修饰/连接包含整数,字符串,文件操作符的表达式
test表达式 | 含义
----------------------------------------------------------
! expr |当expr的值是False时,返回True
Expr1 -a expr2|当expr1,expr2值同为True时,返回True
Expr1 -o expr2|当expr1,expr2的值至少有一个为True时,返回True
-----------------------------------------------------------
注意:
tcsh shell 不使用test命令,但是tcsh中的表达式同样能承担相同的功能.tcsh
支持的表达式于C中的表达式相同.通常使用在if和while命令中.
tcsh表达式 | 含义
-------------------------------------------------------
Int1 <= int2 |当int1小于/等于int2时,返回True
Int1 >= int2 |当int1大于/等于int2时,返回True
Int1 < int2 |当int1小于int2时,返回True
Int1 > int2 |当int1大于int2时,返回True
Str1 == str2 |当str1与str2相同时,返回True
Str1 != str2 |当str1与str2不同时,返回True
-r file |当file是一个可读文件时,返回True
-w file |当file是一个可写文件时,返回True
-x file |当file是一个可执行文件时,返回True
-e file |当file存在时,返回True
-o file |当file文件的所有者是当前用户时,返回True
-z file |当file长度为0时,返回True
-f file |当file是一个普通文件时,返回True
-d file |当file是一个目录时,返回True
Exp1 || exp2 |当exp1和exp2的值至少一个为True时,返回True
Exp1 && exp2 |当exp1和exp2的值同为True时,返回True
! exp |当exp的值为False时,返回True

linux是早期是个内核,后来添加了其他功能成了操作系统。

内核就是操作系统的核心,管理设备,cpu调度,内存管理等。

内核有些api可以被外面程序员调用。这些api叫做“系统调用”。

常用的系统调用被集合成一个个命令程序。如ls,cd,rm等。。

shell是linux系统的一个解释程序。用于方便执行一些命令程序。就是外壳程序,编写shell脚本,用来批量执行命令来管理系统。 相当于windows的cmd程序吧


我的一个简单理解。有误请指正。



【一】
shell的含义:
首先shell的英文含义是“壳”;
它是相对于内核来说的,因为它是建议在核的基础上,面向于用户的一种表现形式,比如我们看到一个球,见到的是它的壳,而非核。
Linux中的shell,是指一个面向用户的命令接口,表现形式就是一个可以由用户录入的界面,这个界面也可以反馈运行信息;
【二】shell在Linux中的存在形式:
由于Linux不同于Windows,Linux是内核与界面分离的,它可以脱离图形界面而单独运行,同样也可以在内核的基础上运行图形化的桌面。
这样,在Linux系统中,就出现了两种shell表现形式,一种是在无图形界面下的终端运行环境下的shell,另一种是桌面上运行的类型Windows
的MS-DOS运行窗口,前者我们一般习惯性地简称为终端,后者一般直接称为shell
【三】shell如何执行用户的指令
shell有两种执行指令的方式,一种方法是用户事先编写一个sh脚本文件,内含shell脚本,而后使用shell程序执行该脚本,这种方式,我们习惯称为shell编程。
第二种形式,则是用户直接在shell界面上执行shell命令,由于shell界面的关系,大家都习惯一行行的书写,很少写出成套的程序来一起执行,所以也称命令行。
总结:shell可以说只是为用户与机器之间搭建成的一个桥梁,让我们能够通过shell来对计算机进行操作和交互,从而达到让计算机为我们服务的目的。
以上。
参考资料:
【shell的定义】http://baike.baidu.com/view/849.htm
【shell学习】http://wiki.ubuntu.org.cn/Shell%E7%BC%96%E7%A8%8B%E5%9F%BA%E7%A1%80

在计算机科学中,Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器)。它类似于DOS下的command和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。同时它又是一种程序设计语言。作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支

这个,你要是对*nix系统不熟悉的话,还真不好解释。

*nix的核心是一个执行效率非常高的,对计算机硬件操作进行了封装的一个.....怎么说,执行模块。
*nix中所有对计算机硬件的操作都是通过这个核心的模块进行的。
而Shell是利用这个核心提供的操作(或称接口),提供了一些较为人性化的使用方式。
简单理解:*nix的内核就是提供计算机硬件操作的东东,用户不能直接使用它。
Shell是用户能够直接使用的命令集,它是利用内核来进行操作的。

简单的很,你这样理解就好了:
Shell就是传说中的神仙姐姐,能够做任何事情,前提是你必须念对咒语。而这些不同的咒语,可以合起来变成一条接一条的葵花宝典,就是武功秘籍了(也就是常说的脚本script了),武功秘籍让神仙姐姐可以做一整套广播体操。如果你牛皮,就可以自己编一套广播体操,让神仙姐姐去跳去。

也许我需要写一本书,叫做《计算机中的江湖》……


linux shell编程的环境是什么啊,初次接触。比如JAVA用clise,那Shell在...
解释型语言,只有解释器,不用编译 另外eclipse只是java的一个IDE,不是java编译器或者java字节码解释器 linux有很多种类的shell,例如最常用的bash,语法和c很像的csh,甚至连python这样的脚本语言都可以作为linux的系统shell,如果想自己写脚本就用vi或者emacs什么的编辑器来写,直接用解释器执行就行 ...

不过时的技术——Bash脚本
甚至Unix/Linux系统本身的很多功能,也是由Bash实现的。随意打开 \/etc\/init.d\/ 目录下的某个文件,会发现就是一个Bash脚本,在Linux中,存在这大量这样的脚本。上面的脚本看似复杂,但从结构上可以简单划分为四部分:1. 第一行 #! \/bin\/sh 叫 shebang ,标明这是一个Shell脚本。 2. 后面以...

在linux中java web环境需要哪些配置文件
在linux中java web环境配置方法步骤如下:1、远程连接:a) Xsheel连接:跟一般ssh连接工具差不多,输入服务器IP及用户名密码等。b) Ssh连接:这里用的是filezilla,也可以用8uftp。注意:远程工具可以根据自己的喜好任意选择。附:如果中途连接时遇到连接不通时先重启服务再连接,注意防火墙。Ssh服务重启...

linux培训学的是什么内容?
其次,千锋教育注重培养学员的实际操作能力。在Linux培训中,我们通过大量的实验和项目,帮助学员掌握Linux操作系统的实际应用技巧。我们提供完善的实验环境和支持,让学员能够亲自动手实践,加深对知识的理解和掌握。千锋教育还提供灵活的学习方式和时间安排。我们提供线下课程和在线课程两种学习方式,学员可根据...

学习linux需要什么基础
2) Linux运维工程师岗位职责 一般从企业入门到中级Linux运维工程师的工作大致有:挑选IDC机房及带宽、购买物理服务器或云服务、购买及使用CDN服务、搭建部署程序开发及用户的访问系统环境(例如:网站运行环境)、对数据进行备份及恢复、处理网站运行中的各种故障(例如:硬件故障、软件故障、服务故障、数据损坏及...

学习linux操作系统需要掌握哪些东西?
学习linux环境下的简单组网 建议:买一本不需要太厚的linux教材,大致可以满足要求 \/\/现在的书越来越多了,还带很多图,我当时可没这么多书:)四.高级应用 澄清一些概念:linux的普通操作与真正的系统管理不能相提并论,后者需要很多知识 我个人认为比较重要几种linux语言 1.英语 即使你不学linux,我...

webshell是Linux下用的吗??最近学到Linux的shell,书上说的都是bashshe...
webshell 是网页文件形式存在的一种命令执行环境,一般指被黑客利用的网页工具页面 shell是Linux内核和用户界面的中间人,翻译交流作用 小白点就当是两种东西,有差异。

linux shell if语句中~是什么意思
2013-04-13 linux sheel脚本里面,在if语句里“$? -eq ... 39 2011-12-14 如何在linux shell中if表达语句 更多类似问题 > if语句的相关知识2009-03-29 vb中if语句的嵌套 8 2011-02-11 if语句在Excel中运用问题 7 2013-09-13 if语句变switch语句 2010-02-28 if语句的用法 9 2009-12-10 if...

linux文件系统与目录树到底有什么关系?什么是文件系统啊?比如说根目...
根目录就是linux文件系统的某一种或几种文件管理模式把文件和体现为文件的设备组织出来的一个整体。在 Windows 中,存储空间首先分为“盘符”,在盘符下再分为“分区”,在分区下再分成“目录”,在目录下再分成“子目录”。但在linux中,所有的存储空间和设备共享一个根目录,不同的磁盘块、不同的...

翻译成中文
在试验被呈现的很多的内在电子邮件中,微软主管注意买了计算机漫游英特网的消费者没有需要窗口作业系统。不只做了网景涉及多种作业系统的 s 浏览器,包括窗口和 Linux,它有了它自己的申请规画接口 (美国石油协会) 促成开发者写没有任何其他的操作 system.Moreover 涉及浏览器的顶端的软件,这软件在整个...

黑水县15250244743: Linux下的shell工作原理是什么? -
长兴寇索拉: Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口.它是命令语言、命令解释程序及程序设计语言的统称. shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的中心,shell就是围绕内核的外层.当从...

黑水县15250244743: Linux中,Shell具体是什么东西,是在系统中干什么的? -
长兴寇索拉: shell是命令解释器,简说就是人与操作系统的交互窗口,通过shell你可以输入各种命令告诉linux操作系统要执行什么动作,操作系统执行完也可以把结果通过shell反馈给你

黑水县15250244743: Linux里,什么是shell环境? -
长兴寇索拉: 楼主,你好 何谓shell shell是用户与作业系统之间的交互层,用户修改其环境,设置或 取消shell的环境变量,迎合用户的需要和爱好. shell本身就是一个电脑程序,用C语言编写,为协助用户与作业系统之间通讯而设计,管理用户与核心(...

黑水县15250244743: shell究竟是什么东西 -
长兴寇索拉: 1. 首先shell是个好东西~2. 从技术角度来说,shell 是一个使用者与系统的互动界面(interface),主要是让使用者透 过命令行(command line)来使用系统以完成工作.因此,shell 的最简单的定义就是---命令解译器(Command Interpreter):...

黑水县15250244743: 谁能详解一下Linux中的shell
长兴寇索拉: Linux中的shell有多种类型,其中最常用的几种是Bourne shell(sh)、C shell(csh)和Korn shell(ksh).三种shell各有优缺点.Bourne shell是UNIX最初使用的shell,并且在每种UNIX上都可以使用.Bourne shell在shell编程方面相当优秀,但在处理与用...

黑水县15250244743: linux系统中的shell是负责什么模块 -
长兴寇索拉: shell只是负责用户与内核交互的工具,也可以是环境

黑水县15250244743: shell linux下怎么理解 -
长兴寇索拉: shell可以理解一种用户界面,你敲命令,它给你返回东西它其实是一种命令解析器,把你输入命令传递给linux内核,然后把内核执行命令后的结果返回给你 但我个人认为不能把它理解为编程语言

黑水县15250244743: Linux 中的shell是什么作用跟C语言有什么关系
长兴寇索拉: c shell是一种脚本语言,是用c语言写的,基本上所有的高级语言都是用c写的,语法上跟c语言差别很大,跟VB比较像,它的作用就跟widows的dos命令差不多.很容易学的..

黑水县15250244743: 在linux下 什么是bash.什么又是shell -
长兴寇索拉: bash 是一个为GNU项目编写的Unix shell,也就是linux用的shell.Shell俗称壳(用来区别于内核),是指“提供使用者使用界面”的软件,就是一个命令行解释器.BASH是SHELL的一种,是大多数LINUX发行版默认的SHELL,除BASH SHELL...

黑水县15250244743: linux里面bash是什么? -
长兴寇索拉: Bash,Unix shell的一种,在1987年由布莱恩·福克斯为了GNU计划而编写.1989年发布第一个正式版本,原先是计划用在GNU操作系统上,但能运行于大多数类Unix系统的操作系统之上,包括Linux与Mac OS X v10.4都将它作为默认shell. Bash...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网