和高级语言相比,shell编程有什么特点?

和高级语言相比,shell编程有什么特点?,第1张

Shell 是系统的用户界面,提供了用户与内核进行交互的接口,它接收用户输入的命令并把它送到内核去执行,是一种命令解释器(图1)。另外,作为一门语言Shell编程语言具有普通编程语言的很多特点。Shell有很多版本,包括Bourne Shell、BASH、C Shell等,常用的就是BASH。

Linux下命令解释器称为Shell,Shell是一种具备特殊功能的程序,它是介于使用者和 UNIX/Linux *** 作系统之核心程序(kernel)间的一个接口。它接收用户输入的命令并把它送入内核去执行。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。

Linux系统提供多种不同的Shell以供选择。常用的有Bourne Shell(简称sh)、C-Shelll(简称csh)、Korn Shell(简称ksh)和Bourne Again Shell (简称bash)。----以下内容来自于教材。

(1)Bourne Shell是AT&T Bell实验室的 Steven Bourne为AT&T的Unix开发的,它是Unix的默认Shell,也是其它Shell的开发基础。Bourne Shell在编程方面相当优秀,但在处理与用户的交互方面不如其它几种Shell。

(2)C Shell是加州伯克利大学的Bill Joy为BSD Unix开发的,与sh不同,它的语法与C语言很相似。它提供了Bourne Shell所不能处理的用户交互特征,如命令补全、命令别名、历史命令替换等。但是,C Shell与BourneShell并不兼容。

(3)Korn Shell是AT&T Bell实验室的David Korn开发的,它集合了C Shell和Bourne Shell的优点,并且与Bourne Shell向下完全兼容。Korn Shell的效率很高,其命令交互界面和编程交互界面都很好。

(4)Bourne Again Shell (即bash)是自由软件基金会(GNU)开发的一个Shell,它是Linux系统中一个默认的Shell。Bash不但与Bourne Shell兼容,还继承了C Shell、Korn Shell等优点。

Shell是Linux系统的外壳,它是用户和Linux *** 作系统之间的接口,并且具有很多种类型。那么什么是Shell?Shell分为哪几类?linux

Shell有什么特性?我们来看看具体的内容介绍。

什么是Shell?

Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的。Shell既是一个命令语言,又是一个程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。

Shell是一个应用程序,是用户管理应用程序的一个接口。

广义上Shell的分类?

GUI:图形用户界面,KDE、GNOME、XFCE。

CLI:命令行接口,bash、zsh、fishsh、csh、tcsh、ksh。

linux Shell有什么特性?

Shell是一个简单得脚本语言,适合自动化命令执行。

Shell是Linux系统必备的语言,我们 *** 作Linux就是通过命令行bash解释给系统的。

大多数应用软件的启动和配置都是Shell脚本完成的。

要想学好Linux,掌握shell是必不可少的。

命令历史:shell进程会在会话中保存此前用户提交执行过的命令;

查看历史命令:

~]# history

定制history的功能,可通过环境变量来实现

HISISIZE:shell进程可保留的命令历史条数

HISIFILE:持久保存命令历史的文件 (.bash_history)

HISIFILESIZE:命令历史文件的大小

用法:

-c:清空当前历史命令; -a:将历史命令缓冲区中命令写入历史命令文件中; -r:将历史命令文件中的命令读入当前历史命令缓冲区; -w:将当前历史命令缓冲区命令写入历史命令文件中;-d:删除指定命令历史条目;

显示最近#条历史命令 (history #)

调用历史列表中的命令 ( ! number)

再次执行上一条命令 (!!)

再一次执行历史列表中最近一个以STRING开头的命令 (!STRING)

调用上一条命令的最后一个参数 (ESC+.、file !$、file alt+.

控制命令历史的方法

环境变量:HISICONTROL

参数:

ignorespace:忽略以空白字符开头的命令

ignoredups:忽略以空白字符开头的命令

ignoreboth:以上两者同时生效

echo $HISTCONTROL

修改变量值

HISICONTROL=Ignorespace

bash 基础特性之:命令补全

命令补全:

shell程序在接收到用户执行命令的请求,分析完成后,最左侧的字符串会被当作命令;

命令查找机制:

根据PATH环境变量中设定的目录,自左而右逐个搜索目录下的文件名\

给定的打头字符串如果能唯一标识某命令程序文件,则直接补全\

不能惟一标识某命令程序文件,再击打一次tab键,会给出列表;

路径补全:

在给定的起始路径下,以对应路径下的打头字符串来逐一匹配起始路径下的每个文件 (tab)    《Linux就该这么学》 一起学习linux

如果能惟一标识,则直接补全。否则,再一次tab给出列表;

bash 基础特性之:命令行展开

~:自动展开为用户的家目录,或指定的用户家目录;

{}:可承载一个以逗号分割的路径列表;

例如:

[options] [directory] 列出树形目录中目录的内容; -l:level 指定显示的层级

tree命令:

mkdir /tmp/{a,b},相当于 mkdir /tmp/a,mkdir /tmp/b;

创建/tmp/sysroot目录下包含以下文件

|--bin

|--etc

|--sysconfig

|--network-scripts

|--sbin

|--usr

|--local

|--bin

|--sbin

|--var

|--cache

bash 基础特性之:命令的执行状态结果

命令执行的状态结果

bash通过状态返回值来输出此结果 (成功:0,失败:1-255);

命令执行完成后,其状态返回值保存于bash的特殊变量中 " $? ";

命令正常执行时,有的还会有命令返回值,其根据命令及其功能不同,结果各不相同;

两种引用命令的执行结果

$(COMMAND)

`COMMAND`

示例:mkdir $(date +%H-%M-%S)

bash 基础特性之:引用

强引用:' '

弱引用:" "

命令引用: ` `

bash 基础特性之:快捷键

Ctrl+a:跳转至命令行行首

Ctrl+e:跳转至命令行行尾

Ctrl+u:删除行首至光标所在处之间的所有字符

Ctrl+k:删除光标所在处至行尾的所有字符

Ctrl+l:清屏(等同clear)

bash 基础特性之:globbing

globbing:文件名通配

星号 :匹配任意长度的任意字符 (pa,pa,pa,pa);

问号?:匹配任意单个字符(pa?,??pa,p?a,p?a?);

中括号[]:匹配指定范围内的任意单个字符 ([a-z] [A-Z] [0-9] [a-z0-9]);

[^]:匹配指定范围外的任意单个字符([^[:upper:]],[^0-9],[^[:alnum:]]);

bash 基础特性之:命令hash

hash命令:

-d COMMAND,删除

-r 情况hash缓存

执行命令的查找顺序: hash、alias、path;

解释:

把命令的查找结果,缓存在缓存中就叫hash;

什么时候需要清空hash表,hash缓存不正确时;

bash 基础特性之:变量

转载于:https://blog.51cto.com/51eat/2409637


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/12152456.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存