shell? shell是一种具备特殊功能的程序,它是介于使用者和 UNIX/Linux 操作系统之核心程序(kernel)间的一个接口。为什么我们说 shell 是一种介于系统核心程序与使用者间的中介者呢?读过操作系统概论的读者们都知道操作系统是一个系统资源的管理者与分配者,当您有需求时,您得向系统提出。从操作系统的角度来看,它也必须防止使用者因为错误的操作而造成系统的伤害?众所周知,对计算机下命令得透过命令(command)或是程序(program),程序有编译器(compiler)将程序转为二进制代码,可是命令呢?其实shell 也是一支程序,它由输入设备读取命令,再将其转为计算机可以了解的机器码,然后执行它。 Shell编程是Unix/Linux系统中的一种重要工具,它作为用户与操作系统内核之间的接口,负责接收用户的命令,并将这些命令转化为操作系统能理解的机器指令。Shell不仅是一个命令解释器,更是一门强大的编程语言,允许用户编写脚本来实现自动化任务,特别适用于系统管理和批处理。 在不同的Unix/Linux系统中,存在多种不同类型的Shell,每种都有其特点和适用场景。例如: 1. **bash**:Bourne-Again SHell,是目前大多数Linux发行版的默认Shell,具有Bourne Shell的所有功能,并增加了一些改进和扩展,支持命令历史和命令补全等功能。 2. **bsh**:Bourne Shell,由Steven Bourne编写,是最初的Unix Shell,提供了强大的外壳编程能力,但缺乏用户交互特性。 3. **csh**:C Shell,由Bill Joy开发,引入了命令补全、历史记录等功能,其语法类似于C语言,但编程能力相对于Bourne Shell较弱。**tcsh**是C Shell的一个增强版本,保持向后兼容。 4. **ksh**:Korn Shell,由Dave Korn设计,结合了Bourne Shell和C Shell的优点,既有良好的命令交互界面,也有高效的编程环境。**pdksh**是Public Domain Korn Shell,是Korn Shell的开源版本,同样保持与Korn Shell的兼容性。 编写Shell脚本时,首先需要创建一个文本文件,使用像vi这样的文本编辑器。脚本的第一行通常会指定解释器,如`#!/bin/bash`,这告诉系统使用哪个Shell来执行脚本。执行脚本的方式有两种:直接通过Shell执行,如`bash scriptname`,或者赋予脚本执行权限后再运行,如`chmod +x scriptname`后直接运行`./scriptname`。 在编写Shell脚本时,会遇到一些特殊的符号,它们在脚本中有特定含义: - **#**:用于注释,除了`#!`引导的解释器声明外,其余以#开头的行都被视为注释。 - **;**:命令分隔符,允许在一行中放置多个命令。 - **;;**:在`case`语句中表示选项的结束。 - **. (点)**:用于 sourcing 文件,即将文件中的命令在当前Shell环境中执行。 - **"STRING"**:部分引用,防止内部的某些特殊字符被解释。 - **'STRING'**:完全引用,比部分引用更强,所有特殊字符都不会被解释。 - **, (逗号)**:在某些运算中用于连接操作,但仅返回最后一个结果。 - **\ (反斜杠)**:转义字符,用来取消特殊字符的特殊含义。 - **/ (斜线)**:在路径中用于分隔目录和文件名。 - **`COMMAND` (反引号)**:命令替换,将命令的结果替换到命令行中。 掌握Shell编程对于Linux系统管理员和开发者来说非常重要,因为它提供了强大而灵活的自动化能力,可以简化日常的重复性工作,提高工作效率。通过熟练运用各种Shell特性,可以编写出高效、易维护的系统管理脚本。






























剩余7页未读,继续阅读


- 粉丝: 0
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 网络建设项目技术方案建议书.doc
- SmartSQL-C#资源
- MDword-PHP资源
- layui-JavaScript资源
- ERD-ONLINE-SQL资源
- NCRE-计算机二级资源
- 基于SVM的简单机器学习分类,可以使用svm, knn, 朴素贝叶斯,决策树四种机器学习方法进行分类
- OJCode-ACM资源
- MCM_2024C-美赛资源
- 基于 Keras 框架用 RNN 与 LSTM 实现古诗自动生成
- 《机器学习必备课程:经典算法及 Python 实战配套代码》
- 吴恩达机器学习课程笔记
- XIUNO官方版本4.04
- 机器学习代码实践操作指南与实例解析
- 李宏毅 (HUNG-YI LEE) 机器学习作业思路与代码分享
- rk2206-智能车资源


