shell基本知识
创始人
2024-05-30 20:23:13
0

为什么学习和使用Shell编程

什么是Shell

 shell的起源

shell的功能

 shell的分类

如何查看当前系统支持的shell?

如何查看当前系统默认shell?  

驼峰语句

shell脚本的基本元素

shell脚本编写规范 

 shell脚本的执行方式      

shell脚本的退出状态 (查看状态echo $?)

执行脚本的方法


为什么学习和使用Shell编程

对于一个合格的系统管理员来说,学习和掌握Shell编程是非常重要的。通过编程,可以在很大程度 上简化日常的维护工作,使得管理员从简单的重复劳动中解脱出来。 shell程序的特点: 1、简单易学 2、解释性语言,不需要编译即可执行

什么是Shell

在学习Shell编程之前,必须弄清楚什么是Shell。为了能够使读者在学习具体的Shell编程之前对 Shell有个基本的了解,本节将对Shell进行概括性的介绍,包括Shell的起源和功能。

 shell的起源

1964年,美国AT&T公司的贝尔实验室、麻省理工学院及美国通用电气公司共同参与开始研发一套 可以安装在大型主机上的多用户、多任务的操作系统,该操作系统的名称为Multics。 1970年,丹尼斯•里奇和汤普逊启动了另外一个新的多用户、多任务的操作系统的项目,他们把这 个项目称之为UNICS。 1973年,使用C语言重新编写了Unix。通过这次编写,使得Unix得以移植到其他的小型机上面。 1979年,第一个重要的标准UNIX Shell在Unix的第7版中推出,并以作者史蒂夫•伯恩(Stephen Bourne)的名字命名,叫做Bourne Shell,简称为sh。 20世纪70年代末,C Shell作为2BSD UNIX的一部分发布,简称csh。 之后又出现了许多其他的Shell程序,主要包括Tenex C Shell(tcsh)、Korn Shell(ksh)以及 GNU Bourne-Again shell(bash)。

shell的功能

Shell又称命令解释器,它能识别用户输入的各种命令,并传递给操作系统。它的作用类似于 Windows操作系统中的命令行,但是,Shell的功能远比命令行强大的多。在UNIX或者localhost中, Shell既是用户交互的界面,也是控制系统的脚本语言。

 shell的分类

Bourne Shell:标识为sh,该Shell由Steve Bourne在贝尔实验室时编写。在许多Unix系统中,该 Shell是root用户的默认的Shell。 Bourne-Again Shell:标识为bash,该Shell由Brian Fox在1987年编写,是绝大多数localhost发行 版的默认的Shell。 Korn Shell:标识为ksh,该Shell由贝尔实验室的David Korn在二十世纪八十年代早期编写。它完 全向上兼容 Bourne Shell 并包含了C Shell 的很多特性。 C Shell:标识为csh,该Shell由Bill Joy在BSD系统上开发。由于其语法类似于C语言,因此称为C Shell。

如何查看当前系统支持的shell?

[root@localhost ~]# cat /etc/shells /bin/sh /bin/bash /sbin/nologin /usr/bin/sh /usr/bin/bash /usr/sbin/nologin

如何查看当前系统默认shell?  

[root@localhost ~]# echo $SHELL

/bin/bash

驼峰语句

什么是驼峰语法? 骆驼式命名法就是当变量名或函数名是由一个或多个单词连结在一起,而构成的唯一识别字时,一个单词以小写字母开始;从第二个单词开始以后的每个单词的首字母都采用大写字母,例如: myFirstName、myLastName,这样的变量名看上去就像骆驼峰一样此起彼伏,故得名。 除了驼峰命名法,另外还有匈牙利命名法。基本原则是:变量名=属性+类型+对象描述。匈牙利命 名法关键是:标识符的名字以一个或者多个小写字母开头作为前缀;前缀之后的是首字母大写的一个单 词或多个单词组合,该单词要指明变量的用途。比如m_lpszStr, 表示指向一个以0字符结尾的字符串的长 指针成员变量。 另外,有些程序员喜欢用下划线。比如file_name。

shell脚本的基本元素

对于一个基本的Shell程序来说,应该拥有以下基本元素: 声明:声明用哪个命令解释器来解释并执行当前脚本文件中的语句,一般写的解释器为 #!/bin/bash 。 2.命令:可执行语句,实现程序的功能。 3.注释:说明某些代码的功能,通过在代码中增加注释可以提高程序的可读性。 ( 1)单行注释:#开头的一整行都是注释,例如: #comment1 #comment2 #comment3 …… 2)多行注释,使用冒号“:”配合here document可实现多行注释,例如: :<

shell脚本编写规范 

1)脚本文件名应见名知意,例如backup_mysql.sh 2)文件开头指定脚本解释器 #!/bin/sh 或 #!/bin/bash 3)开头加版本特权等信息

# Date:创建日期 # Author:作者 # Mail:联系方式 # Function:功能 # Version:版本 4)脚本中尽量不要用中文注释 别吝啬添加注释,必要的注释方便自己别人理解脚本逻辑和功能; 尽量用英文注释,防止本机或切换系统环境后中文乱码的困扰; 单行注释,可以放在代码行的尾部或代码行的上部; 多行注释,用于注解复杂的功能说明,可以放在程序体中,也可以放在代码块的开始部分。 5)多使用内部命令 常用的内部命令有:echo、eval、exec、export、read、shift、exit

 shell脚本的执行方式      

1)bash ./filename.sh(产生子进程,再运行,使用当前指定的bash shell去运行)

2)./filename.sh(产生子进程,再运行,使用脚本里面指定的shell去运行。使用该种方式执行需要x 权限 3)source ./filename.sh(source命令是一个shell内部命令,其功能是读取指定的shell程序文件,并 且依次执行其中的所有的语句,并没有创建新的子shell进程,所以脚本里面所有创建的变量都会保存到 当前的shell里面) 4). filename.sh(和source一样,也是使用当前进程执行)

shell脚本的退出状态 (查看状态echo $?)

在UNIX或者Linux中,每个命令都会返回一个退出状态码。退出状态码是一个整数,其有效范围为 0~255。通常情况下,成功的命令返回0,而不成功的命令返回非0值。非0值通常都被解释成一个错误 码。行为良好的UNIX命令,程序和工具都会返回0作为退出码来表示成功。 Shell脚本中的函数和脚本本身也会返回退出状态码。在脚本或者是脚本函数中执行的最后的命令会决定 退出状态码。另外,用户也可以在脚本中使用exit语句将指定的退出状态码传递给Shell。
[root@localhost ~]# vim ~/.vimrc shell脚本的执行方式 1)交互式执行 2)作为程序文件执行(常用) 对于一组需要经常重复执行的Shell语句来说,将它们保存在一个文件中来执行。我们通常称这种包 含多个Shell语句的文件为Shell脚本,或者Shell脚本文件。脚本文件是普通的文本文件,可使用任何的 文本编辑器查看或修改Shell脚本。

执行脚本的方法

1)bash ./filename.sh(产生子进程,再运行,使用当前指定的bash shell去运行) 2)./filename.sh(产生子进程,再运行,使用脚本里面指定的shell去运行。使用该种方式执行需要x 权限) autocmd BufNewFile *.py,*.cc,*.sh,*.java exec ":call SetTitle()" func SetTitle() if expand("%:e") == 'sh' call setline(1,"#!/bin/bash") call setline(2,"#########################") call setline(3,"#File name:".expand("%")) call setline(4,"#Version:v1.0") call setline(5,"#Email:admin@test.com") call setline(6,"#Created time:".strftime("%F %T")) call setline(7,"#Description:") call setline(8,"#########################") call setline(9,"") endif endfunc

 创建一个shell文件如图

 

相关内容

热门资讯

电视安卓系统哪个品牌好,哪家品... 你有没有想过,家里的电视是不是该升级换代了呢?现在市面上电视品牌琳琅满目,各种操作系统也是让人眼花缭...
安卓会员管理系统怎么用,提升服... 你有没有想过,手机里那些你爱不释手的APP,背后其实有个强大的会员管理系统在默默支持呢?没错,就是那...
安卓系统软件使用技巧,解锁软件... 你有没有发现,用安卓手机的时候,总有一些小技巧能让你玩得更溜?别小看了这些小细节,它们可是能让你的手...
安卓系统提示音替换 你知道吗?手机里那个时不时响起的提示音,有时候真的能让人心情大好,有时候又让人抓狂不已。今天,就让我...
安卓开机不了系统更新 手机突然开不了机,系统更新还卡在那里,这可真是让人头疼的问题啊!你是不是也遇到了这种情况?别急,今天...
安卓系统中微信视频,安卓系统下... 你有没有发现,现在用手机聊天,视频通话简直成了标配!尤其是咱们安卓系统的小伙伴们,微信视频功能更是用...
安卓系统是服务器,服务器端的智... 你知道吗?在科技的世界里,安卓系统可是个超级明星呢!它不仅仅是个手机操作系统,竟然还能成为服务器的得...
pc电脑安卓系统下载软件,轻松... 你有没有想过,你的PC电脑上安装了安卓系统,是不是瞬间觉得世界都大不一样了呢?没错,就是那种“一机在...
电影院购票系统安卓,便捷观影新... 你有没有想过,在繁忙的生活中,一部好电影就像是一剂强心针,能瞬间让你放松心情?而我今天要和你分享的,...
安卓系统可以写程序? 你有没有想过,安卓系统竟然也能写程序呢?没错,你没听错!这个我们日常使用的智能手机操作系统,竟然有着...
安卓系统架构书籍推荐,权威书籍... 你有没有想过,想要深入了解安卓系统架构,却不知道从何下手?别急,今天我就要给你推荐几本超级实用的书籍...
安卓系统看到的炸弹,技术解析与... 安卓系统看到的炸弹——揭秘手机中的隐形威胁在数字化时代,智能手机已经成为我们生活中不可或缺的一部分。...
鸿蒙系统有安卓文件,畅享多平台... 你知道吗?最近在科技圈里,有个大新闻可是闹得沸沸扬扬的,那就是鸿蒙系统竟然有了安卓文件!是不是觉得有...
宝马安卓车机系统切换,驾驭未来... 你有没有发现,现在的汽车越来越智能了?尤其是那些豪华品牌,比如宝马,它们的内饰里那个大屏幕,简直就像...
p30退回安卓系统 你有没有听说最近P30的用户们都在忙活一件大事?没错,就是他们的手机要退回安卓系统啦!这可不是一个简...
oppoa57安卓原生系统,原... 你有没有发现,最近OPPO A57这款手机在安卓原生系统上的表现真是让人眼前一亮呢?今天,就让我带你...
安卓系统输入法联想,安卓系统输... 你有没有发现,手机上的输入法真的是个神奇的小助手呢?尤其是安卓系统的输入法,简直就是智能生活的点睛之...
怎么进入安卓刷机系统,安卓刷机... 亲爱的手机控们,你是否曾对安卓手机的刷机系统充满好奇?想要解锁手机潜能,体验全新的系统魅力?别急,今...
安卓系统程序有病毒 你知道吗?在这个数字化时代,手机已经成了我们生活中不可或缺的好伙伴。但是,你知道吗?即使是安卓系统,...
奥迪中控安卓系统下载,畅享智能... 你有没有发现,现在汽车的中控系统越来越智能了?尤其是奥迪这种豪华品牌,他们的中控系统简直就是科技与艺...