完全掌握Linux系统的Shell编程linux运维

用户、Shell、Linux内核、硬件的关系如下图:

Shell是一个应用程序,也可以说是一个命令解释器,它是用户和Linux内核之间的桥梁,可以将用户在图形界面上的操作或在终端输入的命令传递给Linux内核,然后Linux内核再调度各个硬件及其他资源来完成用户的操作。

什么是Linux的内核?在Linux操作系统中,真正能够操作计算机硬件完成某个用户功能的那一部分被称为Linux系统的内核。用户在使用Linux系统时,是不可以直接操作内核的,而是通过Shell来间接的操作内核的。Shell不属于内核的一部分,而是在Linux内核之外开发的应用程序,它将接收到的用户鼠标点击操作或输入的命令传递给内核,而内核再去调度硬件去完成指定的操作。这样用户就不需要直接操作内核,而是通过Shell间接地操作内核,内核也不会被直接的暴露于外部,保障了内核的安全性,也简化了用户的操作。

另外,Shell在将用户的操作传递给内核的过程,就是在调用内核提供的API接口的过程。比如,用户在图形界面或者终端命令行做了一个打开文件的操作,而这个用户的操作Shell接收到后,就会去调用内核提供的相应的函数,然后内核再去调度硬件资源来完成用户的操作。

我们知道,Linux是一个开源的操作系统,它是由世界各地的多个组织机构或个人共同开发完成的,每个组织机构或个人负责一部分功能,最后组合在一起,就构成了现在我们使用的Linux。也正是这个原因,这些不同的组织机构或者个人都会开发出可以在Linux系统中使用的应用程序,而这些应用程序的功能可能是类似的,各有优缺点,至于使用哪一个由用户选择。而Shell就是这样的一个应用程序,所以Shell有很多个版本,目前Linux的大多数发行版默认使用的Shell是bashshell。其他常见的Shell版本如下:

(1)sh:sh的全称是Bourneshell,是UNIX上的标准shell,很多UNIX版本都配有sh。sh是第一个流行的Shell。

(2)csh:这个shell的语法有点类似C语言,所以才得名为Cshell,简称为csh。

(3)tcsh:tcsh是csh的增强版,加入了命令补全功能,提供了更加强大的语法支持。

(4)ash:一个轻量级占用资源少的Shell,适合运行于低内存环境,与bashshell完全兼容。

(5)bash:bashshell由GNU组织开发,保持了对shshell的兼容性,是各种Linux发行版默认配置的shell。

在Linux系统中,一般默认使用的Shell是bashshell。Shell是一个应用程序,一般都是放在/bin或者/user/bin目录下,而当前Linux系统可用的Shell都记录在/etc/shells文件中。

(1)查看系统当前可用的Shell,执行命令【cat-n/etc/shells】:

(2)查看系统当前默认使用的shell,执行命令【echo$SHELL】:

(3)查看各个用户使用的Shell,执行命令【cat-n/etc/passwd】:

我们已经知道,Shell是一个应用程序,而这个应用程序不单单只是可以将用户的操作命令传递给Linux内核,它也支持编程。Shell都会对应一套编程语言的语法,而这套语言就被称为Shell编程语言或是Shell脚本语言。Shell编程语言和JavaScript语言一样是一种脚本语言,它不需要编译,而它的解释器就是Shell应用程序本身。

我们平时工作中所说的Shell,大多数情况指的是Shell脚本语言,而不是Shell应用程序。

我们在使用Shell脚本语言时,可以和Linux系统的其他操作命令结合使用(如ls、grep等等),而我们使用Shell脚本语言和其他命令结合编写能够完成某个特定功能的扩展名为.sh的文本,就叫做Shell脚本程序。

我们已经知道,Shell有很多个版本,而每个版本支持的Shell脚本语言语法可能是有差异的,而下面的关于Shell脚本的所有例子都是针对于BashShell这个版本而言。

(1)在根目录下新建一个Hello.sh脚本:【vimHello.sh】

(2)然后输入以下内容:

第二行:【echo"HelloWorld"】表示输出文本HelloWorld!;

(3)然后保存退出:【!wq】;

(4)这样,一个能够输出HelloWorld!的脚本就编写完成。

补充说明:

(1)输入代码:【name=张三】,表示定义了一个变量name,它的值为张三;

(2)输入代码:【echo$name】,表示打印变量name的值。

当然,这种方式只适合去执行逻辑简单只有一两句代码的情况,大多数情况下我们还是将Shell编程代码写在.sh脚本中再去执行。

上面我们已经编写了一个能够输出HelloWorld!的Shell脚本运行,而现在我们就要执行Hello.sh这个脚本。而Shell脚本的执行方式有两种:

第一种:给予.sh文本可执行权限,然后执行文本:

(1)先给予Shell脚本可执行权限:【chmod+xHello.sh】;

(2)直接执行:绝对路径:【/Hello.sh】或者相对路径:【./Hello.sh】

注意,这里执行时如果使用的是相对路径,必须要以./开头,表示当前目录,否则系统会找不到脚本,从而导致执行失败。

第二种:将Shell脚本作为参数传递给BashShell解释器:

(1)这里使用BashShell来作为解释器,那么我们直接调用BashShell这个程序,然后把Hello.sh这个脚本作为参数传给Shell即可:【/bin/bashHello.sh】或【bashHello.sh】

注意,这种方式执行脚本文件时,如果使用的是相对路径,那么【/bin/bash./Hello.sh】和【/bin/bashHello.sh】是一样的,并无使用第一种执行方式中的区别。

编程怎么学习?编程怎么入门?编程在哪学?编程怎么学才快?不用担心,这里为大家提供了编程速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

THE END
1.为什么要学编程?这也可以培养人们的毅力和耐性。5. 掌握未来职业技能:未来的很多职业都需要掌握编程技能,例如数据科学家、机器学习工程师等等。6. 理解数字化世界:编程可以帮助人们更好地理解数字化世界,掌握数字化世界的规律和趋势。7. 提高自我价值:掌握编程技能可以提高自己的自我价值,让自己更加有自信和自信心。https://zhidao.baidu.com/question/1743714745227727187.html
2.学编程有什么好处(全面)什么是编程学编程有什么好处,,文章浏览阅读1.1k次,点赞9次,收藏9次。综上所述,学编程的好处是多方面的。它不仅能够提升个人的逻辑思维和问题解决能力,增强创造力和创新能力,提高工作竞争力,促进跨学科学习,培养耐心和专注力,拓展全球视野与合作机会,还能够增强自信心与成就感,培养自学能力和持https://blog.csdn.net/fafdafaafdfafQWQ/article/details/142671156
3.学编程后,我做了这10个有毒的在线免费设计神器!(下)最初想做一些更酷的可视化效果,就学习了一门适合编程小白入门但创造性超强的编程语言 Processing ,用它做了一些可视化作品和循环动图的打卡,在这些过程中就发现编程的乐趣与可拓展性,后来又入门了 html 和 js ,开发了这一系列在线设计工具。 开发这么一款工具需要花多久时间?开发过程遇到最大的挑战是什么? https://www.uisdc.com/10-design-artifact-2
4.少儿编程有必要学吗少儿编程学习需要具备哪些条件→MAIGOO知识摘要:对于想培养编程思维或者日后有考虑从事编程行业的孩子来说,学习少儿编程还是有必要的,编程学习从青少儿时期就开始培养,这是有很大好处的,例如学习少儿编程可以培养孩子独立解决问题的能力、培养全新的思维方式、拓宽学习的边界等。然而要学习编程,也要具备一定的条件,那么,青少儿编程学习需要具备哪些能力?下面就来一https://www.maigoo.com/goomai/224821.html
5.ASP.NETCore适用于.NET的开源Web框架.NET 是一个开发人员平台,由工具、编程语言、库组成,用于构建许多不同类型的应用程序。 ASP.NET Core 通过专门用于生成 web 应用的工具和库扩展了.NET 开发人员平台。 更深入发掘: 什么是 ASP.NET Core? 了解ASP.NET Core 通过我们的教程、视频课程和文档,了解 ASP.NET Core 提供的所有功能。 https://asp.net/
6.2024年Pytho怎样自学LinuxJava是一种平台,也是一种程序设计语言,如何学好程序设计不仅仅适用于Java,对C++等其他程序设计语言也一样管用。有编程高手认为,Java也好C也好没什么分别,拿来就用。为什么他们能达到如此境界?我想是因为编程语言之间有共通之处,领会了编程的精髓,自然能够做到一通百通。如何学习程序设计理所当然也有许多共通的地方。 https://win7sp.com/post/33390.html
7.编程学习之路,迷茫中的探索与突破学编程太痛苦了,编程之路,迷茫1、缺乏明确的学习目标 许多初学者在开始学习编程时,往往没有明确的学习目标,他们可能只是听说编程很热门,或者觉得学习编程可以带来一些好处,但并不清楚自己为什么要学习编程,以及想要达到什么样的水平,这种缺乏目标的情况容易导致学习动力不足,进而产生迷茫感。 http://skypure.com.cn/post/30310.html
8.为什么我们要学习编程?51CTO博客为什么我们要学习编程? 1. 为什么需要学习编程? 如今,学习编程的人分为两类,一类是程序员,另一类是期望成为程序员的人。 编程这个事儿,在大多数人眼中还是一种特定领域的、专门的技能,认为学的人都是需要以此谋生的。 其实,我曾经跟一个作为一个“码龄”超过20年的老程序员聊过,他是这样认为的:在不久的将来https://blog.51cto.com/aiyc/2887978
9.需求分析报告(通用12篇)本章进入生态系统的学习,首先要学习生物与环境的关系。本节有很多代表适应方式和生物关系的名词,容易混淆,有必要引入CAI使这些关系具体形象,让学生容易理解,深化记忆。另外种群数量变化规律曲线的得出也是比较难的,引入CAI,给予动态的解释,很有必要. CAI创意: https://www.ruiwen.com/word/xuqiufenxibaogao.html
10.南京少儿编程有哪几所比较好少儿编程教育是时代发展的产物,为培养未来的全能人才而备受关注,那么为什么会有越来越多的家长给孩子报班学习呢?到底有没有必要学?大家可以从以下几点进一步了解下少儿编程课程的意义。 1. 少儿编程是一门符合孩子智力成长特点的课程,教学内容具有趣味性和挑战性,能够培养孩子的学习兴趣,锻炼他们的专注能力。 http://www.jixiaotong.com/it/shaoer/43861.html
11.媒体报道集锦多家媒体点赞华理暑期社会实践活动(二)正如授课老师带领学员操控编程机器人,真正领悟编程机器人因为被编程后而获得循迹或避障的功能。实践团队用充实丰富的课堂教导学生,科技不再是遥远未来的新兴事物,是与生活息息相关的事物,是时代洪流下年轻学生应该也必须去接触学习的知识。 媒介:科技知识普及的意义https://news.ecust.edu.cn/2019/0911/c6a149906/page.htm
12.《世界十大学习方法》之费曼技巧图1-2 学习和生产的类比生产的产品不质检可以吗?学习的知识不检测是否学会对吗?费曼技巧一个核心作用就是检测哪些知识没有学会,然后你就可以集中力量来弥补这些知识。本节分为六个部分,第一部分论述费曼技巧是什么。第二部分使论述费曼技巧从哪里来。第三部分论述费曼技巧为什么有效。第四部分论述费曼技巧怎么用。第https://www.360doc.cn/mip/1027860177.html
13.白岩松不许孩子考第一,98%的人都上当了:不明白这一点的父母,养不现在很多编程课用的都是国外的软件,为了让我们的孩子更系统、更专业的学习编程,编程猫联合了腾讯、阿里等名企的技术专家自主研发了适合中国孩子学习的编程工具。 不仅如此,编程猫的工具Kitten已经成为全国青少年编程能力等级考试指定工具。 孩子们在编程猫的社区上传的编程作品累计有3000多万了。 https://m.thepaper.cn/wap/resource/jsp/newsDetail_forward_10681376
14.Python学习笔记二进制数只使用数字0、1表示,在Python中,二进制整数使用前缀0b表示,比如:0b0110,0b1100。 十六进制数除了0~9十个数字以外,还使用a、b、c、d、e、f,在Python中,十六进制使用前缀0x,比如:0x12ef,0xde2431af。 十进制数、二进制数和十六进制数之间是可以相互转换的,如果感兴趣的同学,可以学习《编程必备基础https://www.jianshu.com/p/8d4b11d7968d