shell简介
一、Shell 概念定义
Shell 是用 C 语言编写的程序,是用户使用 Linux 的桥梁,既是命令语言又是程序设计语言。
shell 脚本为 Shell 编写的脚本程序,常说的 shell 通常指 shell 脚本。
- 包含一系列命令的文本文件,这些命令按照特定顺序排列,由 Shell 解释器逐行执行,以完成特定任务或实现一系列操作。
- 提供用户访问操作系统内核服务界面的应用程序
- 编程类似 JavaScript、php,需文本编辑器和脚本解释器
二、Shell 基本种类
- Bourne Shell(/usr/bin/sh 或/bin/sh):最早广泛使用的 Unix Shell 之一,具有简洁和高效的特点。许多系统脚本和基础的系统操作都依赖于它。
- Bourne Again Shell(/bin/bash):对 Bourne Shell 的扩展和增强,提供了更多的功能和特性,如命令补全、更强大的变量处理等。它在 Linux 系统中非常流行,是许多用户的默认选择。
- C Shell(/usr/bin/csh):其语法风格与 Bourne Shell 有所不同,具有一些独特的特性,如类似 C 语言的控制结构等。一些用户因其特定的编程风格而喜欢使用它。
- K Shell(/usr/bin/ksh):具有高效的执行速度和丰富的功能,在一些特定的场景和环境中被广泛应用。
- Shell for Root(/sbin/sh):这通常是专门为 root 用户(系统管理员)设计的 Shell,可能在权限和功能上有一些特殊的配置,以适应系统管理的需求。
三、Shell 基本语法
- 变量的使用:
- 可以定义各种类型的变量,如字符串、整数等。
- 通过赋值和引用变量来传递数据。
# 定义字符串变量
name="Alice"
# 定义整数变量
age=25# 引用变量
echo "Name is $name and age is $age."
- 控制结构:
- 包括 if-else 条件判断。
- for 循环用于迭代操作。
- while 循环在特定条件下执行。
number=10
if [ $number -gt 5 ]; thenecho "Number is greater than 5"
elseecho "Number is less than or equal to 5"
fi
##if else语句for i in {1..5}; doecho "Iteration $i"
done
##for 语句count=0
while [ $count -lt 3 ]; doecho "Count is $count"((count++))
end
##while 语句
- 函数的定义与调用:
- 将一段可重用的代码定义为函数。
- 方便在脚本中多处调用。
# 定义函数
function myFunction() {echo "This is inside the function."
}# 调用函数
myFunction
- 输入与输出:
- 使用 read 命令获取用户输入。
- 通过 echo 等命令输出信息。
四、Shell 与 bat
相似之处:
- 都可以用于执行一系列的命令行操作。
- 都可以实现一定的自动化任务。
区别:
- 适用系统:Shell 脚本通常在类 Unix 系统(如 Linux、Mac OS)上使用,而 bat 脚本主要用于 Windows 系统。
- 语法风格:它们的语法有较大差异,Shell 脚本有多种类型(如 Bash 等),各自有其独特的语法规则和特性;bat 脚本有其特定的命令和语法结构。
- 功能丰富度:
- Shell 脚本在系统管理、文件操作等方面可能更强大和灵活;
- bat 脚本在 Windows 特定环境下有其针对性的功能。
五、Shell 脚本 具体应用
- 系统管理:如自动化系统配置、软件安装与更新、用户管理等。
- 服务器运维:监控服务器状态、启动和停止服务、处理日志等。
- 批量文件处理:批量重命名文件、移动或复制文件、对文件内容进行操作等。
- 构建和部署:在软件开发中用于项目的构建、打包和部署流程。
- 数据处理与分析:对文本数据进行筛选、提取、统计等操作。
- 任务自动化:实现各种重复任务的自动化执行,提高工作效率。
- 环境设置:为特定应用或项目快速搭建所需的运行环境。
- 日常办公辅助:可以定制一些便捷的小工具来简化日常办公流程。
六、Shell 优点缺点
优点:
- 强大的交互性:能方便地与用户进行交互,获取输入和反馈信息。
- 便捷的系统管理:特别适合系统操作和管理任务,如文件操作、进程管理等。
- 灵活易用:语法相对简单,容易学习和上手,且可以快速编写实用的脚本。
- 高度可定制:可以根据具体需求进行灵活定制和扩展。
缺点:
- 执行效率相对较低:与一些编译型语言相比,在处理大规模数据或复杂计算时效率可能不高。
- 代码可读性可能受限:复杂的脚本可能在代码结构和可读性上存在一定挑战。
- 错误排查有时较困难:一些不明显的错误可能较难发现和定位。
相关文章:
shell简介
一、Shell 概念定义 Shell 是用 C 语言编写的程序,是用户使用 Linux 的桥梁,既是命令语言又是程序设计语言。 shell 脚本为 Shell 编写的脚本程序,常说的 shell 通常指 shell 脚本。 包含一系列命令的文本文件,这些命令按照特定…...
使用 Scapy 库编写 ICMP 不可达攻击脚本
一、介绍 ICMP不可达攻击是一种利用ICMP(Internet Control Message Protocol)不可达消息来干扰或中断目标系统的网络通信的攻击类型。通过发送伪造的ICMP不可达消息,攻击者可以诱使目标系统认为某些网络路径或主机不可达,从而导致…...
Electron qt开发教程
模块安装打包 npm install -g electron-forge electron-forge init my-project --templatevue npm start //进入目录启动 //打包成一个目录到out目录下,注意这种打包一般用于调试,并不是用于分发 npm run package //打出真正的分发包,放在o…...
尝试用 GPT-4o 写 2024高考语文作文
文章目录 新课标I卷科技进步与问题的演变 新课标II卷抵达未知之境:探索与成长的旅程 全国甲卷坦诚交流:构建真正相遇的桥梁 北京卷历久弥新 天津卷定义与自定义:在世界的缤纷中前行 上海卷认可度的思考与反思 新课标I卷 阅读下面的材料&#…...
自动化Reddit图片收集:Python爬虫技巧
引言 Reddit,作为一个全球性的社交平台,拥有海量的用户生成内容,其中包括大量的图片资源。对于数据科学家、市场研究人员或任何需要大量图片资源的人来说,自动化地从Reddit收集图片是一个极具价值的技能。本文将详细介绍如何使用…...
自动驾驶人工智能
自动驾驶技术中使用的算法和滤波器 如何部署软件中的算法和滤波器,以增强传感器数据的可用性和应用性 自动驾驶人工智能 文章目录 一、介绍二、自动驾驶的算法2.1 感知算法2.2 本地化算法2.3 映射算法2.4 规划算法2.5 控制算法2.6 过滤 器2.7 卡尔曼滤波器2.8 颗粒过…...
基础乐理入门
基础概念 乐音:音高(频率)固定,振动规则的音。钢琴等乐器发出的是乐音,听起来悦耳、柔和。噪音:振动不规则,音高也不明显的音。风声、雨声、机器轰鸣声是噪音,大多数打击乐器&#…...
mysql 8 linux7,8安装教程
选择自己对应的linux版本 cat /etc/os-release //查看自己linux系统版本 1.mysql下载地址 MySQL :: Download MySQL Community Server (Archived Versions) 拉到下面找到 选择自己linux指定的版本,否则会很麻烦 cat /etc/os-release //查看系统版本 2.查…...
『矩阵论笔记』特征分解(eigendecomposition)通俗解释!
特征分解(eigendecomposition)通俗解释! 文章目录 一. 特征分解(eigendecomposition)通俗解释!1. 它是如何工作的2. 试图达到什么目的3. 为什么它有用(将一个方阵分解成这三个组成矩阵有什么好处呢?)二. 参考文献一. 特征分解(eigendecomposition)通俗解释! 大家好,欢迎回…...
顶级域名和二级域名的区别
互联网是一个由无数个网络节点组成的复杂系统,而域名则是这个系统中用于识别和定位这些节点的重要工具。在域名体系中,顶级域名(Top-Level Domain,TLD)和二级域名(Second-Level Domain,SLD)是两个基本的层级概念。本文将探讨这两者…...
深入解析Kafka消息丢失的原因与解决方案
深入解析Kafka消息丢失的原因与解决方案 Apache Kafka是一种高吞吐量、分布式的消息系统,广泛应用于实时数据流处理。然而,在某些情况下,Kafka可能会出现消息丢失的情况,这对于数据敏感的应用来说是不可接受的。本文将深入解析Ka…...
【Python列表解锁】:掌握序列精髓,驾驭动态数据集合
文章目录 🚀一、列表🌈二、常规操作💥增💥删💥改💥查 ⭐三、补充操作 🚀一、列表 列表是一个能够存储多个同一或不同元素的序列 列表:list ---- [] 列表属于序列类型(容器…...
安卓打造安装包(应用打包、规范处理安装包、安全加固)
本章介绍应用安装包的基本制作规范,主要包括:如何导出既美观又精简的APK文件、如何按照上线规范调整App的相关设置、如何对APK文件进行安全加固以防止安装包被破解。 应用打包 本节介绍APK安装包的打包过程,包括:如何利用Androi…...
ElasticSearch教程(详解版)
本篇博客将向各位详细介绍elasticsearch,也算是对我最近学完elasticsearch的一个总结,对于如何在Kibana中使用DSL指令,本篇文章不会进行介绍,这里只会介绍在java中如何进行使用,保证你看完之后就会在项目中进行上手&am…...
[office] excel做曲线图的方法步骤详解 #经验分享#知识分享#其他
excel做曲线图的方法步骤详解 Excel是当今社会最流行用的办公软件之一,Excel可以用于数据的整理、分析、对比。可以更直观的看到数据的变化情况,而有很多时候需要制作曲线图表进行数据比较,因此,下面是小编整理的如何用excel做曲线…...
Git+Gitlab 远程库测试学习
Git远程仓库 1、Git远程仓库 何搭建Git远程仓库呢?我们可以借助互联网上提供的一些代码托管服务来实现 Gitee 码云是国内的一个代码托管平台,由于服务器在国内,所以相比于GitHub,码云速度会更快 码云 Gitee - 基于 Git 的代码托…...
Python可视化 | 使用matplotlib绘制面积图示例
面积图是数据可视化中的一个有效工具,用于说明时间上的关系和趋势。它们提供了一种全面的、视觉上迷人的方法,通过熟练地将折线图的可读性与填充区域的吸引力相结合来呈现数值数据。 在本文中,我们将学习更多关于在Python中创建面积折线图的…...
【环境搭建】2.阿里云ECS服务器 安装MySQL
在阿里云的 Alibaba Cloud Linux 3.2104 LTS 64位系统上安装 MySQL 8,可以按照以下步骤进行: 1.更新系统软件包: 首先,更新系统软件包以确保所有软件包都是最新的: sudo yum update -y2.下载 MySQL 8 官方 Yum 仓库…...
Python Flask 入门开发
Python基础学习: Pyhton 语法基础Python 变量Python控制流Python 函数与类Python Exception处理Python 文件操作Python 日期与时间Python Socket的使用Python 模块Python 魔法方法与属性 Flask基础学习: Python中如何选择Web开发框架?Pyth…...
PostgreSQL查看当前锁信息
PostgreSQL查看当前锁信息 基础信息 OS版本:Red Hat Enterprise Linux Server release 7.9 (Maipo) DB版本:16.2 pg软件目录:/home/pg16/soft pg数据目录:/home/pg16/data 端口:5777查看当前锁信息的sql SELECT pg_s…...
毫米波雷达深度学习技术-1.6目标识别2
1.6.4 自动编码器和变体自动编码器 自编码器包括一个编码器神经网络,随后是一个解码器神经网络,其目的是在输出处重建输入数据。自动编码器的设计在网络中施加了一个瓶颈,它鼓励原始输入的压缩表示。通常,自编码器旨在利用数据中的…...
MineAdmin 前端打包后,访问速度慢原因及优化
前言:打包mineadmin-vue前端后,访问速度很慢,打开控制台,发现有一个index-xxx.js文件达7M,加载时间太长; 优化: 一:使用文件压缩(gzip压缩) 1、安装compre…...
使用Obfuscar 混淆WPF(Net6)程序
Obfuscar 是.Net 程序集的基本混淆器,它使用大量的重载将.Net程序集中的元数据(方法,属性、事件、字段、类型和命名空间的名称)重命名为最小集。详细使用方式参见:Obfuscar 在NetFramework框架进行的WPF程序的混淆比较…...
高中数学:数列-基础概念
一、什么是数列? 一般地,我们把按照确定的顺序排列的一列数称为数列,数列中的每一个数叫做这个数列的项,数列的第一项称为首项。 项数有限个的数列叫做有穷数列,项数无限个的数列叫做无穷数列。 二、一般形式 数列和…...
linux中dd命令以及如何测试读写速度
dd命令详解 dd命令是一个在Unix和类Unix系统中非常常用的命令行工具,它主要用于复制文件和转换文件数据。下面我会详细介绍一些dd命令的常见用法和功能: 基本语法 dd命令的基本语法如下: bash Copy Code dd [option]...主要选项和参数 if…...
centos官方yum源不可用 解决方案(随手记)
昨天用yum安装软件的时候,就报错了 [rootop01 ~]# yum install -y net-tools CentOS Stream 8 - AppStream 73 B/s | 38 B 00:00 Error: Failed to download metadata for repo appstream: Cannot prepare internal mirrorlis…...
langchian_aws模块学习
利用langchain_aws模块实现集成bedrock调用模型,测试源码 from langchain_aws.chat_models import ChatBedrock import jsondef invoke_with_text(model_id, message):llm ChatBedrock(model_idmodel_id, region_name"us-east-1")res llm.invoke(messa…...
归并排序-成绩输出-c++
注:摘自hetaobc-L13-4 【任务目标】 按学号从小到大依次输入n个人的成绩,按成绩从大到小输出每个人的学号,成绩相同时学号小的优先输出。 【输入】 输入第一行为一个整数,n,表示人数。(1 ≤ n ≤ 100000…...
✔️Vue基础+
✔️Vue基础 文章目录 ✔️Vue基础computed methods watchcomputed计算属性methods计算属性computed计算属性 VS methods方法计算属性的完整写法 watch侦听器(监视器)watch侦听器 Vue生命周期Vue生命周期钩子 工程化开发和脚手架脚手架Vue CLI 项目目录介…...
基于VS2022编译GDAL
下载GDAL源码;下载GDAL编译需要依赖的必须代码,proj,tiff,geotiff三个源码,proj需要依赖sqlite;使用cmake编译proj,tiff,geotiff;proj有版本号要求;使用cmake…...
济南做网站公司/医疗网站优化公司
0、引言 本系列博客仅作为本人学习K210单片机的学习记录,主要学习其内部资源使用,作为初学者难免有错误之处,如有发现还望指出。 硬件:Sipeed Maix Dock开发板(推荐官方KD233开发板) 软件:Kend…...
怎样做网站管理/青岛网络优化厂家
http://archive.ics.uci.edu/ml/databases/synthetic_control/ 继续 转载于:https://www.cnblogs.com/zlslch/p/6673739.html...
济南企业网站制作费用/网站排名系统
正文 在angular 2中,回调函数的返回结果,不会自动更新视图层的显示,可以用 ChangeDetectorRef 来驱动angular更新视图。 // 导入 import { Component, OnInit, Input, ChangeDetectorRef } from angular/core; // 注入 constructor(private…...
做金融看哪些网站有哪些内容/惠州市seo广告优化营销工具
为什么80%的码农都做不了架构师?>>> 一两个简单概念长连接与短连接: 1.长连接 Client方与Server方先建立通讯连接,连接建立后不断开, 然后再进行报文发送和接收。2.短连接 Client方与Server每进行一次报文收发交易时才…...
浙江省台州市做网站多少钱/优化大师手机版
最近一直在做移动端微信公众号项目的开发,也是我首次用vue来开发移动端项目,前期积累的移动端开发经验较少。经过这个项目的锻炼,加深了对vue相关知识点的理解和运用,同时,在项目中所涉及到的微信api(微信分享…...
如何给局域网 做网站/友链交换网站
选择我们的理由:流量多 月享1500G超出流量不断网,每天50G(通常个人手机每月才30G左右流量)不拉网线,不插卡,三网随意切换 移动-联通-电信通用,开机自动优选当地3网较好的网络,也可以手动一键切换多人共享 支持32(随…...