Linux Shell 脚本编程学习之【第1章 Shell脚本编程概述】

news2024/11/26 5:29:29

《第1章 Shell脚本编程概述》

  • 1 Linux简介
  • 2 Shell 简介
  • 3 Linux登录方式
  • 4 脚本编程优势
    • 4.1 shell脚本编程优势
  • 5 shell脚本基本元素
  • 6 执行shell脚本

1 Linux简介

1991年芬兰赫尔辛基大型学生Linus Torvals开发了Linux内核。

2 Shell 简介

1、Shell是一种具备特殊功能的程序。
2、提供了一种用户和内核进行交互操作的接口。
3、内核是Linux心脏。开机自检时驻留内存中,直至计算机关闭为止。
4、用户的应用程序存储在计算机的硬盘上,当需要时才被调入内存。
5、 Shell是一种应用程序,当用户登录Linux 系统时, Shell 就会被调入内存执行。
6、Shell独立于内核,它是连接内核和应用程序的桥梁,并由输入设备读取命令,再 将其转为计算机可以理解的机械码, Linux 内核才能执行该命令。

在这里插入图片描述

3 Linux登录方式

1、图形界面。
2、Shell命令行方式。

shell工具有
1、PuTTY
2、SecureCRT

4 脚本编程优势

● 语法和结构通常比较简单。
● 学习和使用通常比较简单。
● 通常以容易修改程序的“解释”作为运行方式,而不需要“编译”。
● 程序的开发产能优于运行效能。

脚本语言 (Script Language) 是相对于编译型语言而言的,它是为了缩短编译型语言编 写一编译—链接一运行 (Edit-Compile-Link-Run) 过程而创建的计算机编程语言。由于脚本 语言常常运行于底层,所处理的是字节、整数、浮点数或其他机器层的对象,因而,脚本语 言是低级程序设计语言。如 C\C++、Ada、Java、C# 等都属于编译型语言,也可称为高级程 序设计语言,这类语言所编写的程序需要经过编译,将源代码转化为目标代码才能运行。而 脚本语言往往是解释运行而非编译,即由解释器 (Interpreter)读入脚本程序代码,将其转换 成内部的形式执行,而解释器本身则是编译型程序。

4.1 shell脚本编程优势

1、Shell 脚本程序往往可以在不同版本的 Linux/UNIX 系统上通用。
2、Shell脚本语言还提供了类似于高级程序设计语言的语法结构,如 分支判断语句、变量和函数、循环结构、数组、算术和逻辑运算等。

5 shell脚本基本元素

Shell 脚本将一系列的 Linux 命令放在一个文件中,这样,我们就不必每次都手动输入同样的命令。

//以下作为测试脚本Else.sh
#!/bin/bash 
cd /  						#切换到用户根目录,因为.bash profile在根目录下
.bash_profile 				#配置用户的命令行环境
date						#显示日期命令
who							#显示当前的登录用户

1、解释器。第1 行是“#!/bin/bash”,“#!”符号称为“Sha-bang”符号,是Shell脚本的起始符号,“#!”符号 是指定一个文件类型的特殊标记,它告诉 Linux 系统这个文件的执行需要指定一个解释器。 “#!”符号之后是一个路径名,这个路径名指明了解释器在系统中的位置,对于一般的 Shell 脚本而言,解释器是bash,也可以是sh, 即用下面的两种方式作为脚本的第1行都是正确的:

#!/bin/bash
#!/bin/sh

2、注释符。每条命令后 面有一段以“#”符号起始的中文,“#”符号是注释符,它后面直到本行结束的所有内容是注 释,脚本执行时是不执行注释的,“#”符号类似于C++ 和Java 语言中的“//”符号,脚本注 释可以是整行,也可以在某行的后面:

command     # 在行后面的注释
#整行的注释

注释能增加 Shell 脚本的可读性,便于人们理解该脚本。因此,读者在编写脚本时,应养成勤加注释的好习惯。

3、命令。命令通常由命令名称、选项和参数三部分组成,三部分之间用空格键或Tab 键分隔。

ls -l /etc/sh* 
#列出/etc目录下以“sh”开头文件的详细信息,这一条简单的Linux 命令就由三个部分组成,“1s”是命令名称,“-1”是选项,“/etc/sh*”是参数。

6 执行shell脚本

1、具备执行该脚本文件的权限。 一般来说,当我们用文本编辑器创建一个 Shell 脚本文件时, 该文件是没有可执行权限的,即 x 权限。因此,我们需要先赋给 Shell 脚本可执行权限,再去执行它。

[root@shell-else]# chmod  u+x test.sh			#为test.sh  脚本赋可执行权限

[root@shell-else]# ls  -l test.sh				#查看test.sh 的权限
-rwxr--r-- ·1  root  root  15503-2313:14  test.sh	#具备x 权限了

[root@shell-else]# ./test.sh					#执行test.sh 脚本
2023年07月11日星期二13:14:35 CST         		#test.sh 脚本的执行结果
root      pts/0           2023-07-11 11:42(210.28.82.132)	
root      pts/1           2023-07-11 11:43(210.28.82.199)	
[root@shell-else]#	

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/740381.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java基础教程】(十)面向对象篇 · 第四讲:解析Java中的this关键字,引用传递印象加强:理解与实践~

Java基础教程之面向对象 第四讲 本节学习目标1️⃣ this 关键字1.1 调用本类属性1.2 调用本类方法1.3 表示当前对象 2️⃣ 引用传递2.1 基本概念2.2 实际应用 🌾 总结 本节学习目标 掌握关键字this的特征以及使用;掌握引用传递分析思维; …

UMS攸信技术是厦门市工业互联网园区建设的积极参与者与推动者,为数字化转型与工业互联网建设注入新动力

7月6日,厦门市工业互联网一体化进园区“百城千园行”活动第二站走进同安区常青藤科技园,与现场企业共话产业数字化创新发展。 本次活动以“工赋园区 数智未来”为主题,由厦门市工业和信息化局、厦门市同安区人民政府、厦门市同安区工业和信息…

809. 最小公倍数

链接: 链接 题目: 输入两个整数 aa 和 bb,请你编写一个函数,int lcm(int a, int b),计算并输出 aa 和 bb 的最小公倍数。 输入格式 共一行,包含两个整数 aa 和 bb。 输出格式 共一行,包含一个整…

【ELK集群】

ELK集群部署环境准备 配置ELK日志分析系统 192.168.108.67 elk-node1 es、logstash、kibana 192.168.108.189 elk-node2 es、logstash 192.168.108.32 apache logstash 三台虚拟机配置调高 三台机关闭防火墙 改名 1、2台机配置hosts解析文件 1,2台都用系…

Web入门-SpringBoot

SpringBootweb快速入门 需求:使用Spring Boot开发一个web项目,浏览器发起请求/hello后,给浏览器返回字符串”Hello World~“开发步骤 创建SpringBoot工程,并勾选web开发的相关依赖 根据自己idea的版本的不同创建模块即可 &#x…

Day39: 70. 爬楼梯 (进阶),322. 零钱兑换,279.完全平方数

目录 70. 爬楼梯 (进阶) 322. 零钱兑换 思路 代码 279.完全平方数 思路 70. 爬楼梯 (进阶) 70. 爬楼梯 - 力扣(LeetCode) // 版本一 class Solution { public:int climbStairs(int n) {if (n …

汽配行业数字工厂管理系统解决方案

随着汽车行业的快速发展,汽配行业作为汽车产业链的重要组成部分,也面临着日益增长的市场需求和竞争压力。然而,传统行业在管理方面存在一系列问题,如管理效率低下、业务流程不优化、供应链不透明等。为了应对这些挑战,…

更快更复杂之—Mendix如何支持多种AI部署模式

在过去十年,LCAP市场逐渐崛起的同时,计算能力不断提高、大数据可用性不断增强,预计未来数年,低代码应用平台(LCAP)的市场将增长30%左右,并带动人工智能(AI)迎来新的春天。…

【Spring Boot】单元测试

单元测试 单元测试在日常项目开发中必不可少,Spring Boot提供了完善的单元测试框架和工具用于测试开发的应用。接下来介绍Spring Boot为单元测试提供了哪些支持,以及如何在Spring Boot项目中进行单元测试。 1.Spring Boot集成单元测试 单元测试主要用…

Windows下控制台播放Badapple,opencv的使用,以及代码优化方案

Windows下控制台播放Badapple 环境准备 VS2022编译环境Opencv(对图像进行灰度处理)的配置 可以看我写的这篇文章vs下opencv的配置素材(Badpple的视频文件) 可以私信我FFmpeg(对视频文件进行处理) 让视频文件的声音分离出来生成mp3文件 ffmpeg -i test.mp4 -map 0:v:0 -c copy…

MySQL用户权限管理和密码策略

目录 用户和权限介绍 密码策略 修改密码策略 用户权限管理 赋予权限 收回权限 用户和权限介绍 所有用户的信息都保存在mysql.user 数据表中 可使用desc 查看数据表结构 user 常用字段 部分字段解析 完整的账户 包含host和user,都是char型 都没有默认值 ho…

fork函数,为什么有两次返回?

前言 fork函数用于创建一个新进程,称为子进程,它与旧进程(称为系统调用fork的进程)同时运行,此进程称为父进程。 创建新的子进程后,两个进程将执行fork()系统调用之后的下一条指令。子进程使用相同的pc&a…

网络传输层协议详解(TCP/UDP)

目录 一、TCP协议 1.1、TCP协议段格式 1.2、TCP原理 确认应答机制 超时重传机制 (安全机制) 连接管理机制(安全机制) 滑动窗口 流量控制(安全机制) 拥塞控制 延迟应答(效率机制) 捎带应答(效率机制) ​编辑面向字节流(粘包问题) 缓…

[pyqt5]如何给工具栏图标添加资源文件

第一步新建一个qrc文件 首先新建一个 .qrc 文件&#xff0c;内容格式如下&#xff1a; <RCC><qresource prefix"/" ><file>img/image1.png</file><file>img/image2.png</file><file>img/image3.png</file></qr…

解决win11系统下vivado使用RTL分析闪退、小蓝熊easy anti chat无法启动问题

最近在接触使用vivado时被这个软件庞大的包体和繁多的报错搞得焦头烂额&#xff0c;经过多次尝试&#xff0c;我解决了两个困扰我许久的关乎软件正常使用的问题&#xff0c;将解决办法分享给大家。 一.RTL analysis运行闪退 这个问题关系到程序的正常使用&#xff0c;主要发生…

css animation动画

代码 <!DOCTYPE html> <html ng-app"my_app"><head><meta charset"utf-8"><title></title><script type"text/javascript"></script><style type"text/css">.my-animation {p…

关于海外的应用商店优化

应用商店优化的工作方式与搜索引擎优化 (SEO) 类似&#xff0c;但它有专门为应用商店设计的专业功能。应用商店优化可以帮助应用程序出现在应用商店的顶部结果中&#xff0c;从而提高下载转化率和应用安装量&#xff0c;并且对于我们的应用也有长期可见性。 应用商店优化是一个…

本地用户管理(NETBASE第九课)

本地用户管理(NETBASE第九课) 本地用户&#xff1a;用户本地创建、本地存储、本地登录且只能登录本地一台计算机。 1.认识用户帐户&#xff1a; 1&#xff09;Windows帐户有帐户名、有密码、用户安全标识&#xff08;SID&#xff09; 注:SID安全标识符&#xff08;身份证号…

数据结构-二叉树的代码实现(详解)

内容&#xff1a;二叉树的前、中&#xff0c;后序遍历&#xff0c;层序遍历&#xff0c;二叉树节点个数&#xff0c;叶子节点个数&#xff0c;二叉树高度&#xff0c;第k层节点的个数&#xff0c;查找某个节点&#xff0c;二叉树销毁&#xff0c;判断是否为完全二叉树 目录 前…

科研热点|《电气工程领域高质量科技期刊分级目录(2022版)》公示!

为贯彻落实《关于深化改革 培育世界一流科技期刊的意见》&#xff0c;推进国内外科技期刊的同质等效使用&#xff0c;助力我国科技期刊高质量发展&#xff0c;在中国科协的统一部署下&#xff0c;中国电工技术学会制定《电气工程领域高质量科技期刊分级目录发布工作实施方案&am…