Linux学习之路-Shell 工作原理

Shell 工作原理

什么是shell

   shell是命令语言、命令解释程序及程序设计语言的统称,是用户和Linux内核之间的接口程序,为用户提供使用操作系统的接口。

shell的特性

shell的一个重要特性是它自身是一个解释型的程序设计语言,程序运行时由解释器全程参与运行过程,每次读取一行,运行一行。shell程序设计语言支持绝大多数在高级语言中能见到的程序元素,如函数、变量、数组和程序控制结构。shell编程语言简单易学,任何在提示符中能键入的命令都能放到一个可执行的shell程序中。

shell是如何执行命令解析的

(1)读取用户由键盘输入的命令行。

(2)分析命令,以命令名作为文件名,并将其它参数改造为系统调用execve( )内部处理所要求的形式。

(3)终端进程调用fork( )建立一个子进程。

(4)终端进程本身用系统调用wait4( )来等待子进程完成(如果是后台命令,则不等待)。当子进程运行时调用execve( ),子进程根据文件名(即命令名)到目录中查找有关文件(这是命令解释程序构成的文件),将它调入内存,执行这个程序(解释这条命令)。

(5)如果命令末尾有&号(后台命令符号),则终端进程不用系统调用wait4( )等待,立即发提示符,让用户输入下一个命令,转⑴。如果命令末尾没有&号,则终端进程要一直等待,当子进程(即运行命令的进程)完成处理后终止,向父进程(终端进程)报告,此时终端进程醒来,在做必要的判别等工作后,终端进程发提示符,让用户输入新的命令,重复上述处理过程。

Shell基本执行过程及父子进程之间的关系如图所示:

shell 如何启动

shell在你成功地登录进入系统后启动,并始终作为你与系统内核的交互手段直至你退出系统。你系统上的每位用户都有一个缺省的shell。每个用户的缺省shell在系统里的/etc/passwd文件里被指定。

shell的种类

bash

bash shell 是 Bourne shell 的一个免费版本,它是最早的 Unix shell,包括许多附加的特点。Bash 有可编辑的命令行,可以回查历史命令,支持 tab 键补齐以使用户避免输入长的文件名。

csh

C shell 使用的是“类C”语法,借鉴了 Bourne shell 的许多特点,只是内部 shell 命令集有所不同。

ksh

Korn shell 的语法与 Bourne shell 相同,同时具备了 C shell 的易用特点。许多安装脚本都使用 ksh ,即使您不把它作为您的主 shell,您也应该在系统中安装它。

tcsh

TC shell 是 C shell 的一个增强版本,与 C shell 完全兼容。

zsh

Z shell 是 Korn shell 的一个增强版本,具备 bash shell 的许多特色。

时间: 2024-11-07 12:01:35

Linux学习之路-Shell 工作原理的相关文章

Linux学习之路-http通信原理

http通信原理 应用通讯的基本模型分析 基本通讯流程: 客户端http应用使用本机IP+随机注册生成的TCP端口,形成套接字socket,调用系统socket api 再经过网络层.数据链路层.物理层层层封装,把数据送达请求的服务器,经过层层解封,送达对应的http服务监听的套接字socket监听的相应的端口上. 期间涉及到的N种技术: (1)TCP和UDP协议 TCP特点: a.面向连接:收发数居前必须和对方建立可靠连接,一个连接必须经过3次握手 简单过程: 主机A向主机B发出连接请求数据包

Linux学习之路-Shell编程

Shell的编程 Bash是用得最广泛的shell,是大多数Linux 系统的缺省 shell.Bourne Again shell (bash), 正如它的名字所暗示的,是Bourne shell 的扩展.bash 与Bourne shell 完全向后兼容,并且在 Bourne shell 的基础上增加和增强了很多特性.bash 也包含了很多 C 和 Korn shell 里的优点.bash 有很灵活和强大的编程接口,同时又有很友好的用户界面. 下面具体来介绍bash. Bash语法基本介绍

linux学习之路之创建私钥CA及使用CA为客户端颁发证书

创建CA(Certificate Authority) CA的储存格式主要有2种:x509和pkcs12 x509是目前最主流的CA储存格式,在x509格式的证书中,储存的内容主要有: 证书的公钥和使用期限 证书的合法拥有着 证书该如何被使用 CA的信息 CA签名的校验码 默认情况下,TCP/IP模型和OSI模型,并没有实现数据的加密,而要实现数据的加密需要使用TLS/SSL协议,TLS和SSL在有些Linux版本上实现的机制是相同的,因此在这里我们之介绍SSL协议 SSL(Secure Soc

linux学习之路之磁盘管理和文件系统三

ext3文件系统和ext2文件系统的区别? 在某些时候,某个用户在linux系统上写入数据,这时系统正好断电或者系统核心出现错误,写入的数据仅有inode table和datablock而已,可能会导致之前写过的数据没有保存在磁盘上.而当系统重启后,系统可能会对没有保存的数据进行数据恢复.但是,由于系统并不知道是哪个文件不完整,因此会遍历整个文件系统中inode,来查看block是否完整.不过,当某个文件的数据太大时,数据的恢复时间可能会比较长,而这对于服务器来说是不利的.所以在这种情况下,也就

linux学习之路之sed命令使用

本章主要介绍sed的命令使用 sed(Stream Editor)是一种流编辑器,或者叫做行编辑器,以行为单位进行编辑处理,而后续会介绍的vi编辑器是一种全屏编辑器. sed的工作原理: 逐行读取文件中的每一行,并将其放在内存空间中,在对内存空间中的数据进行处理,将处理后的结果打印到屏幕上.而这种内存空间也叫做模式空间. 所谓模式空间:就是将放在内存空间的数据根据模式来匹配,匹配成功的数据进行相应的编辑处理,将处理后的数据打印到屏幕上去. 说明:sed命令默认将文件中所有的行打印到屏幕上去. s

linux学习之路之bash及其特性

我们知道当我们用鼠标点击,或输入一个命令,系统就玩帮我们完成一个任务,那么当我们点击一个链接时,系统由是如何知道要去完成相应的操作呢?这是因为通过shell来完成的. 那么什么是shell呢? shell就是用户和操作系统之间的一个接口,通过这个接口shell接受来自用户的命令,并调用相应的应用程序来呼叫kernel来处理相应的工作. 在linux系统上面存放着多种类型的shell,这些shell存放在/etc/shells文件里,默认RedHat使用的shell为bash 下面介绍一些bash

linux学习之路之ssh协议

SSH协议 SSH英文全称Secure SShell,是一种安全的协议,也是用于远程登入的. SSH相比telenet而言,具有更高的安全性,使用telent远处登入某台主机,存在着以下两个隐患: 1.用户认证是明文的 2.数据传输也是明文的 因此,处于数据安全考虑,使用SSH来远处登入更安全. SSH有2个版本,SSHv1和SSHv2,SSH1由于无法抵挡中间人攻击,因此,现在很少使用SSHv1版了.所以使用更多的还是SSHv2版,毕竟它要安全多了. SSH是工作在TCP层,端口号是22:te

linux学习之路之加密类型及其相关算法

加密类型及其相关算法 随着互联网越演越烈,互联网上的各种攻击层出不穷,因此在互联网上相互传递的信息越来越不安全,因此为了防止用户在互联网上传递的数据被窃取,因此我们很有必须加强传递的数据的安全性. 数据的安全性主要包括以下三个方面: 数据的机密性:保证传递的数据不被读取 要想使传递的数据不被读取,可以对这些数据进行加密,因为默认这些数据是以明文来传递的 整个加密过程可以这么来理解: 加密:plaintext--->转换规则--->ciphertext 解密:ciphertext--->转

linux学习之路之磁盘阵列RAID及硬件RAID和软件RAID的区别

我们知道单个磁盘存储数据的容量是有限的,为了让磁盘的容量增大,我们可以将多个较小的磁盘组合在一起,形成一个较大的磁盘装置,这就是RAID(独立式磁盘阵列),RAID不仅可以提高数据的存储容量,也可以提高数据保护功能,不同级别的RAID,所提供的的功能各不一样. RAID常见的级别有RAID0,RAID1,RAID5,RAID10,RAID01,RAID5,RAID50 下面逐个介绍这些级别的工作原理. RAID0:首先将磁盘分成等量的数据块(CHUNK),然后在将存储的数据切分成符合CHUNK大