shell是一个抽象概念,shell的一切操作都在计算机内部,负责处理人机交互,执行脚本等,是操作系统能正常运行的重要组成部分bash,ash,zsh,tcsh等是shell这个抽象概念的一种具体的实现,都是一个程序,都能生成一个进程对象。
首先,我们回顾一下最为熟悉的一个。 GNU Bash,又名 Bourne Again Shell,它是我这些年使用过的众多 Linux 发行版的默认选择。它最初发布于 1989 年,并且轻松成长为 Linux 世界中使用最广泛的 shell,甚至常见于其他一些类 Unix 系统当中。
Bash 是一个广受赞誉的 shell,当你通过互联网寻找各种事情解决方法所需的文档时,总能够无一例外的发现这些文档都默认你使用的是 bash shell。但 bash 也有一些缺点存在,如果你写过 Bash 脚本就会发现我们写的代码总是得比真正所需要的多那么几行。这并不是说有什么事情是它做不到的,而是说它读写起来并不总是那么直观,至少是不够优雅。
如上所述,基于其巨大的安装量,并且考虑到各类专业和非专业系统管理员已经适应了它的使用方式和独特之处,至少在将来一段时间内,bash 或许会一直存在。
KornShell,或许你对这个名字并不熟悉,但是你一定知道它的调用命令 ksh。这个替代性的 shell 于 80 年代起源于贝尔实验室,由 David Korn 所写。虽然最初是一个专有软件,但是后期版本是在 Eclipse Public 许可下发布的。
ksh 的拥趸们列出了他们觉得其优越的诸多理由,包括更好的循环语法,清晰的管道退出代码,处理重复命令和关联数组的更简单的方式。它能够模拟 vi 和 emacs 的许多行为,所以如果你是一个重度文本编辑器患者,它值得你一试。最后,我发现它虽然在高级脚本方面拥有不同的体验,但在基本输入方面与 bash 如出一辙。
tcsh 衍生于 csh(Berkely Unix C shell),并且可以追溯到早期的 Unix 和计算机时代开始。
tcsh 最大的卖点在于它的脚本语言,对于熟悉 C 语言编程的人来说,看起来会非常亲切。tcsh 的脚本编写有人喜欢,有人憎恶。但是它也有其他的技术特色,包括可以为 aliases 添加参数,各种可能迎合你偏好的默认行为,包括 tab 自动完成和将 tab 完成的工作记录下来以备后查。
tcsh 以 BSD 许可发布。
zsh 是另外一个与 bash 和 ksh 有着相似之处的 shell。诞生于 90 年代初,zsh 支持众多有用的新技术,包括拼写纠正、主题化、可命名的目录快捷键,在多个终端中共享同一个命令历史信息和各种相对于原来的 bash 的轻微调整。
虽然部分需要遵照 GPL 许可,但 zsh 的代码和二进制文件可以在一个类似 MIT 许可证的许可下进行分发; 你可以在 actual license 中查看细节。
之前我访问了 fish 的主页,当看到 “好了,这是一个为 90 后而生的命令行 shell” 这条略带调侃的介绍时(fish 完成于 2005 年),我就意识到我会爱上这个交互友好的 shell 的。

fish 的作者提供了若干切换过来的理由,这些理由有点小幽默并且能戳中笑点,不过还真是那么回事。这些特性包括自动建议(“注意, Netscape Navigator 4.0 来了”,LCTT 译注:NN4 是一个重要版本。),支持“惊人”的 256 色 VGA 调色,不过也有真正有用的特性,包括根据你机器上的 man 页面自动补全命令,清除脚本和基于 web 界面的配置方式。
fish 的许可主要基于 GPLv2,但有些部分是在其他许可下的。你可以查看资源库来了解完整信息。
Linux由哪几部分组成?
一、Linux shellShell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。 它接收用户输入的命令并把它送入内核去执行。 实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。 不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。 Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。 Linux提供了像Microsoft Windows那样的可视的命令输入界面--X Window的图形用户界面(GUI)。 它提供了很多窗口管理器,其操作就象Windows一样,有窗口、图标和菜单,所有的管理都是通过鼠标控制。 现在比较流行的窗口管理器是KDE和GNOME。 每个Linux系统的用户可以拥有他自己的用户界面或Shell,用以满足他们自己专门的Shell需要。 同 Linux本身一样,Shell也有多种不同的版本。 目前主要有下列版本的Shell: Bourne Shell:是贝尔实验室开发的。 BASH:是GNU的Bourne Again Shell,是GNU操作系统上默认的shell,大部分linux的发行套件使用的都是这种shell。 Korn Shell:是对Bourne SHell的发展,在大部分内容上与Bourne Shell兼容。 C Shell:是SUN公司Shell的BSD版本。 二、Linux 实用工具标准的Linux系统都有一套叫做实用工具的程序,它们是专门的程序,例如编辑器、执行标准的计算操作等。 用户也可以产生自己的工具。 实用工具可分三类:编辑器:用于编辑文件。 过滤器:用于接收数据并过滤数据。 交互程序:允许用户发送信息或接收来自其他用户的信息。 Linux的编辑器主要有:Ed、Ex、Vi和Emacs。 Ed和Ex是行编辑器,Vi和Emacs是全屏幕编辑器。 Linux的过滤器(Filter)读取从用户文件或其他地方的输入,检查和处理数据,然后输出结果。 从这个意义上说,它们过滤了经过它们的数据。 Linux有不同类型的过滤器,一些过滤器用行编辑命令输出一个被编辑的文件。 另外一些过滤器是按模式寻找文件并以这种模式输出部分数据。 还有一些执行字处理操作,检测一个文件中的格式,输出一个格式化的文件。 过滤器的输入可以是一个文件,也可以是用户从键盘键入的数据,还可以是另一个过滤器的输出。 过滤器可以相互连接,因此,一个过滤器的输出可能是另一个过滤器的输入。 在有些情况下,用户可以编写自己的过滤器程序。 交互程序是用户与机器的信息接口。 Linux是一个多用户系统,它必须和所有用户保持联系。 信息可以由系统上的不同用户发送或接收。 信息的发送有两种方式,一种方式是与其他用户一对一地链接进行对话,另一种是一个用户对多个用户同时链接进行通讯,即所谓广播式通讯。 三、Linux 文件系统文件结构是文件存放在磁盘等存储设备上的组织方法。 一个文件系统的好坏主要体现在对文件和目录的组织上。 目录提供了管理文件的一个方便而有效的途径。 我们能够从一个目录切换到另一个目录,而且可以设置目录和文件的权限,设置文件的共享程度。 使用Linux,用户可以设置目录和文件的权限,以便允许或拒绝其他人对其进行访问。 Linux目录采用多级树形结构,用户可以浏览整个系统,可以进入任何一个已授权进入的目录,访问那里的文件。 文件结构的相互关联性使共享数据变得容易,几个用户可以访问同一个文件。 Linux是一个多用户系统,操作系统本身的驻留程序存放在以根目录开始的专用目录中,有时被指定为系统目录。 内核,Shell和文件结构一起形成了基本的操作系统结构。 它们使得用户可以运行程序,管理文件以及使用系统。 此外,Linux操作系统还有许多被称为实用工具的程序,辅助用户完成一些特定的任务。 四、Linux内核内核、Shell、文件系统这三个部分构成了linux系统;Linux内核内核是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序。 它从用户那里接受命令并把命令送给内核去执行。 在dos系统下:内核 在windows操作系统中:NT核心 在linux操作系统中:Kernel
linux有几种shell
Linux系统提供多种不同的Shell以供选择。
常用的有Bourne Shell(简称sh)、C-Shelll(简称csh)、Korn Shell(简称ksh)和Bourne Again Shell (简称bash)。 Bourne Shell是AT&T Bell实验室的 Steven Bourne为AT&T的Unix开发的,它是Unix的默认Shell,也是其它Shell的开发基础。 Bourne Shell在编程方面相当优秀,但在处理与用户的交互方面不如其它几种Shell。 C Shell是加州伯克利大学的Bill Joy为BSD Unix开发的,与sh不同,它的语法与C语言很相似。 它提供了Bourne Shell所不能处理的用户交互特征,如命令补全、命令别名、历史命令替换等。 但是,C Shell与BourneShell并不兼容。 Korn Shell是AT&T Bell实验室的David Korn开发的,它集合了C Shell和Bourne Shell的优点,并且与Bourne Shell向下完全兼容。 Korn Shell的效率很高,其命令交互界面和编程交互界面都很好。 Bourne Again Shell (即bash)是自由软件基金会(GNU)开发的一个Shell,它是Linux系统中一个默认的Shell。 Bash不但与Bourne Shell兼容,还继承了C Shell、Korn Shell等优点
linux 和window 的批处理有区别?
批处理是用来自动地批量地执行命令以实现特定操作的脚本。 windows常用的是利用ms-dos命令。 linux常用批处理是shell脚本,Linux中的shell有多种类型,其中最常用的几种是Bourne shell(sh)、C shell(csh)和Korn shell(ksh)。 要学会写批处理脚本,就要先熟悉种系统下的命令。 如:windows要熟悉ms-dos命令。 linux要熟悉常用的linux命令。 到比较高级的时候就可使用perl,Python,java,php等语言来实现常的命令所不能实现的功能。 在windows中批处理是及为扩展名的文件。 而linux经常是,有些没有扩展名的文件。
发表评论