1 Qomo Linux 简介
2 新手指南
2.1 前言
2.2 准备
2.3 安装
2.4 适配
2.5 使用
3 安装手册
3.1 安装总览
3.2 获取Qomo
3.3 硬盘安装
3.4 LiveCD/DVD试用
3.5 LiveCD/DVD安装
3.6 U盘安装
3.7 虚拟机安装
3.8 双系统
3.9 网络安装
4 用户手册
4.1 Qomo 1.1用户手册
4.2 使用DOSBox
4.3 桌面应用程序
4.4 Windows应用移植
4.5 文件和资源管理(P22)
4.6 系统和桌面设置(SP2)
4.7 术语表
5 开发手册
5.1 命令行
5.1.1 Shell简介
5.1.2 Shell编程基础
5.1.3 如何进入命令行界面
5.1.4 改变登录方式
5.1.5 Vim
5.1.6 FTP
5.1.7 RPM
5.1.8 Telnet
5.1.9 安装应用软件
5.1.10 常用文件系统管理命令
5.1.11 文件系统
5.1.12 管道
5.1.13 维护文件系统
5.2 KDE
5.2.1 KDE加速
5.3 SSH
5.4 Git
5.4.1 起步
5.4.2 基础
5.4.3 分支
5.4.4 服务器上的 Git
5.4.5 分布式 git(上)
5.4.6 分布式 git(下)
5.4.7 git 工具(上)
5.4.8 git 工具(下)
5.4.9 自定义 git(上)
5.4.10 自定义 git(下)
5.4.11 git 与其它系统
5.4.12 git 内部原理(上)
5.4.13 git 内部原理(下)
5.4.14 Git简易教程
5.5 其他
5.5.1 Bash
6 历史版本
6.1 Qomo Linux 0.7
6.2 Qomo Linux 0.8
6.3 Qomo Linux 1.0
6.4 Qomo Linux 1.1.0
6.5 Qomo Linux 1.2.0
6.6 Qomo Linux 2.0
6.7 Qomo Linux 3.0
6.8 Qomo Linux 3.1
6.9 Qomo Linux 4.0 Beta
6.10 Qomo Linux 4.0
6.11 Qomo Linux 4.1
6.12 Qomo Linux 4.2圣诞版
6.13 Qomo Linux 4.5
6.14 Qomo Linux 4.8七夕版(增加了64位版)

Shell简介

2016-11-14 19:42:44
Cacricornus
388
最后编辑:Cacricornus 于 2016-11-14 21:01:04

Shell简介

Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。

实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。

Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。它虽然不是Linux系统核心的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式协调各个程序的运行。因此,对于用户来说,shell是最重要的实用程序,深入了解和熟练掌握shell的特性极其使用方法,是用好Linux系统的关键。可以说,shell使用的熟练程度反映了用户对Linux使用的熟练程度。

发展历史

在出现图形界面之前,程序员都是使用打字机终端或 ASCII 显示终端连接到 UNIX® 系统的。用户可以使用打字机终端输入命令,输出结果通常会被打印到连续的纸张上。大部分 ASCII 显示终端都是每行 80 个字符,每屏 25 行,不过也有比这更大或更小的终端。程序员输入一条命令并按下回车键之后,系统就会解释并执行这条命令。

尽管在当今这个使用拖拽式图形界面的时代,这一切看起来似乎太过原始,但是与原来编写程序、打卡、对卡迭(card deck)进行汇编并运行程序的方式相比,这已经是非常大的一个进步了。随着编辑器的出现,程序员甚至可以作为卡像来创建程序,并在终端会话中编译程序。

在终端中输入的字节流向 shell 提供了一个标准输入流,shell 返回的字符流可以打印到纸上,也可以显示到标准输出上。

接受并执行命令的程序称为 shell。它位于您和操作系统之间。UNIX shell 和 Linux shell 的功能都非常强大,可以通过组合一些基本的函数来构造非常复杂的操作。通过使用编程结构则可以构建一些函数在 shell 中直接执行,或者将这些函数保存成 shell 脚本 的形式,这样就可以一次次重用这些函数了。

有时需要在系统引导之前就执行一些命令,以便能够进行终端连接;有时又需要周期性地执行命令,而不管您登录与否。shell 可以为您完成这些功能。标准输入和输出并不需要来自于(或定向到)终端处的真实用户。

Shell(或命令行解释器)具有很长的历史了,但我们的讨论从第一个 UNIX® shell 开始。(贝尔实验室的)Ken Thompson 于 1971 年开发了第一个用于 UNIX 的 shell,名为 V6 shell。类似于它在 Multics 中的前身,这个 shell (/bin/sh) 是一个在内核外部执行的独立用户程序。globbing(参数扩展的模式匹配,比如 *.txt)等概念是在一个名为 glob 的独立实用程序中实现的,就像用于评估条件表达式的 if 命令一样。这种独立性可保持 shell 很小,只需不到 900 行 C 源代码(请参见 参考资料 获取原始源代码的链接)。

该 shell 为重定向(< > 和 >>)和管道(| 或 ^)引入了一种紧凑的语法,这种语法已延续到现代 shell 中。您也可以找到对调用顺序命令(使用 ;)和异步命令(使用 &)的支持。 Thompson shell 缺少的是编写脚本的能力。它的唯一用途就是用作一个交互式 shell(命令解释器)来调用命令和查看结果。

Bourne shell

撇开 Thompson shell,我们开始将目光转移到 1977 年引入 Bourne shell 时的现代 shell。Bourne shell 由 Stephen Bourne 在 AT&T Bell Labs 为 V7 UNIX 创建,它在如今仍然是一个有用的 shell(在一些情况下还被用作默认的根 shell)。作者在研究 ALGOL68 编译器之后开发了 Bourne shell,所以您会发现它的语法比其他 shell 更加类似于 Algorithmic Language (ALGOL)。尽管使用 C 开发,源代码本身甚至使用了宏赋予它一种 ALGOL68 特色。 Bourne shell 有两个主要目标:用作一个命令解释器来交互式执行操作系统命令,以及用于编写脚本(编写可通过 shell 调用的可重用脚本)。 除了取代 Thompson shell,Bourne shell 还提供了相对于其前身的多项优势。Bourne 向脚本中引入了控制流、循环和变量,提供了一种更加强大的语言来与操作系统交互(包括交互式和非交互式)。该 shell 还允许您使用 shell 脚本作为过滤器,提供对处理信号的集成支持,但缺乏定义函数的能力。 最后,它整合了我们如今使用的许多功能,包括命令替换(使用反引号)和用于将保留的字符串文字嵌入到脚本中的 HERE 文档。 Bourne shell 不仅是向前发展的重要一步,也是众多衍生的 shell 的基础,其中许多 shell 如今应用在典型的 Linux 系统中。图 1 演示了重要 shell 的系列。Bourne shell 导致了 Korn shell (ksh)、Almquist shell (ash) 和流行的 Bourne Again Shell(或 Bash)的开发。在 Bourne shell 发布时,C shell (csh) 正在开发。图 1 显示了主要系列,但没有展示所有影响,也没有展示一些具有重要贡献的 shell。

C shell

C shell 是 Bill Joy 1978 年在加州大学伯克利分校攻读研究生期间为 Berkeley Software Distribution (BSD) UNIX 系统开发的。5 年后,该 shell 引入了来自 Tenex 系统(在 DEC PDP 系统上很流行)的功能。Tenex 引入了文件名和命令完成功能,以及命令行编辑功能。Tenex C shell (tcsh) 仍然向后兼容 csh,但改进了它的整体交互式功能。tcsh 是 Ken Greer 在 Carnegie Mellon University 开发的。

该 C shell 的一个重要的设计目标是创建一种类似 C 语言的脚本语言。这是一个有用的目标,因为 C 语言是所使用的主要语言(此外,该操作系统也是主要使用 C 语言开发的)。

Bill Joy 在 C shell 中引用的一项有用功能是命令历史。此功能维护以前执行的命令的历史,允许用户检查并轻松选择之前的命令来执行。例如,键入命令 history 将显示以前执行的命令。可使用向上和向下箭头来选择命令,或者可以使用 !! 执行前一个命令。也可以引用以前的命令的参数,例如 !* 引用前一个命令的所有参数,其中 !$ 引用前一个命令的最后一个参数。

Korn shell

Korn shell (ksh) 由 David Korn 设计,是在与 Tenex C shell 相同的时期引入的。Korn shell 的一项最有趣的功能是,它除了向后兼容原始的 Bourne shell,还可用作脚本语言。

Korn shell 在 2000 年以开源形式发布(依据 Common Public License)以前一直是专用的软件。除了提供与 Bourne shell 强大的向后兼容性,Korn shell 还包含其他 shell 的功能(比如 csh 的历史功能)。该 shell 还提供了可在现代脚本语言(比如 Ruby 和 Python)中找到的一些更加高级的功能 — 例如,关联数组和浮点算法。Korn shell 可用于多种操作系统,包括 IBM® AIX® 和 HP-UX,致力于支持 Portable Operating System Interface for UNIX (POSIX) shell 语言标准。

Korn shell 是 Bourne shell 的衍生物,因此看上去更像 Bourne shell 和 Bash 而不是 C shell。

Bourne-Again Shell

Bourne-Again Shell(或 Bash)是一个开源 GNU 项目,旨在取代 Bourne shell。Bash 由 Brian Fox 开发,已成为世上最流行的 shell 之一(出现在 Linux、Darwin、Windows®、Cygwin、Novell、Haiku 等系统中)。顾名思义,Bash 是 Bourne shell 的一个超集,大部分 Bourne 脚本都可原封不动地执行。

除了支持脚本的向后兼容性,Bash 还整合了来自 Korn 和 C shell 的功能。您将找到命令历史、命令行编辑、一个目录栈(pushd 和 popd)、许多有用的环境变量和命令完成等。 Bash 继续在发展,拥有许多新功能,支持正则表达式(类似于 Perl)和关联数组。尽管其中一些功能可能在其他脚本语言中不存在,但可以编写兼容其他语言的脚本。

Qomo下Shell

用户在命令行下工作时,并非直接与操作系统内核打交道,而是由命令解释器接受命令,分析后再传给相关的程序。进入Qomo Linux环境时系统将自动启动相应的shellQomo Linux下默认的shell是bash。

发表评论
评论通过审核后显示。