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 优点缺点

优点:

  • 强大的交互性:能方便地与用户进行交互,获取输入和反馈信息。
  • 便捷的系统管理:特别适合系统操作和管理任务,如文件操作、进程管理等。
  • 灵活易用:语法相对简单,容易学习和上手,且可以快速编写实用的脚本。
  • 高度可定制:可以根据具体需求进行灵活定制和扩展。

缺点:

  • 执行效率相对较低:与一些编译型语言相比,在处理大规模数据或复杂计算时效率可能不高。
  • 代码可读性可能受限:复杂的脚本可能在代码结构和可读性上存在一定挑战。
  • 错误排查有时较困难:一些不明显的错误可能较难发现和定位。

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

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

相关文章

调试环境搭建(Redis 6.X 版本)

今儿,我们来搭建一个 Redis 调试环境,目标是: 启动 Redis Server ,成功断点调试 Server 的启动过程。使用 redis-cli 启动一个 Client 连接上 Server,并使用 get key 指令,发起一次 key 的读取。 视频可见…

【python解决】查询报%d format: a number is required, not str问题

【Python解决】查询报%d format: a number is required, not str问题 在Python中,字符串格式化是一种常见的操作,用于创建包含变量的字符串。如果你在使用%操作符进行格式化时遇到了%d format: a number is required, not str的错误,这意味着…

C# 集合(二) —— List/Queue类

总目录 C# 语法总目录 集合二 List/Queue 1. List2. Queue 1. List List有ArrayList和LinkedList ArrayList 类似数组,查找快,插入删除慢(相对)LinkedList 类似双向链表,查找慢(相对),插入删除快 //ArrayList //ArrayList Arr…

ts和js有什么不同

TypeScript(简称TS)和JavaScript(简称JS)之间的主要区别可以归纳为以下几点: 类型系统: JS:是一种弱类型、动态类型的语言,变量的类型在运行时确定,没有静态类型选项。T…

基于SSM的旅游民宿预定系统【源码】【运行教程】

基于SSM的旅游民宿预定系统 一、项目介绍1. 游客功能2. 管理员功能3. 高级功能 二、项目技术栈三、项目运行四、项目演示总结 大家好,这里是程序猿代码之路!随着旅游业的快速发展,民宿作为一种独特的住宿方式越来越受到游客的喜爱。为了提升用…

百华鞋业祝莘莘学子旗开得胜,一举夺魁

在知识的海洋中, 有一群人以笔为剑, 在漫长的岁月里不断磨砺, 只为迎接那场人生的重要战役——高考。 高考, 是学子们十几年寒窗苦读的见证, 是他们用奋斗书写青春考卷的舞台。 在这个舞台上, 他们将…

当前主流的App开发技术综述

一、引言 随着移动互联网的蓬勃发展,App(应用程序)已经成为人们日常生活中不可或缺的一部分。无论是社交、购物、娱乐还是工作学习,App都以其便捷、高效和个性化的特点深受用户喜爱。而在这一过程中,App开发技术也在不…

周末总结(2024/06/08)

工作 人际关系核心实践: 要学会随时回应别人的善意。执行时间控制在5分钟以内 坚持每天早会打招呼 遇到接不住的话题时拉低自己,抬高别人(无阴阳气息) 工作上的要点 现状(接受破烂现状,改变状态) - 和老师沟通过&…

ChatGPT-4o体验demo

OpenAI 最近推出了其最新的人工智能语言模型——GPT-4O。该模型是在原有 GPT-4 的基础上进行优化而成,旨在提升生成质量和响应速度。GPT-4O 采用了更加高效的架构设计,使其在处理复杂文本时表现出更快的速度和更高的准确性。GPT-4O 在训练过程中融入了最…

一些关于机器学习的思路和猜测

一、机器学习能做什么 1、网上说机器学习就是根据已有的图片、文字、视频资料,建立一个数据库,用一个处理算法,把已有的资料进行提取关键特征和一些联系,存入数据库中。 2、当学习到一定程度,就能跟人一样到实际场景…

kafka的leader和follower

leader和follower kafka的leader和follower是相对于分区有意义的,不是相对于broker。 因为每个分区都有leader和follower, leader负责读写数据。 follower负责复制leader的数据保存到自己的日志数据中,并在leader挂掉后重新选举出leader。 kafka会再…

pinia 重置状态插件

一、前言 测试提出,登出登录后,再次进入页面后。页面的查询项非初始状态。检查后发现,是因为查询项的值存到了store呢,从store中获取,故需要一个重置store的方法 二、pinia 查阅pinia官网后,发现pinia提…

请求分页存储管理方式

目录 请求分页中的硬件支持 1. 请求页表机制 2. 缺页中断机构 硬件支持的详细工作流程 示例代码 请求分页中的内存分配 最小物理块数的确定 分配方式 分配公平性 请求分页存储管理方式中的内存分配策略 具体示例 页面调入策略 最近最久未使用(LRU, Leas…

(2024,Vision-LSTM,ViL,xLSTM,ViT,ViM,双向扫描)xLSTM 作为通用视觉骨干

Vision-LSTM: xLSTM as Generic Vision Backbone 公和众与号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0. 摘要 2 方法 3 实验 3.1 分类设计 4 结论 0. 摘要 Transformer 被广泛用作计算…

linux常用操作命令汇总

各个软件安装步骤流程 jdk 链接: mysql 链接: redis 要查询 Linux 上各个应用程序占用的内存 要查询 Linux 上各个应用程序占用的内存,可以使用 top 或 ps 命令结合其他工具来实现。下面介绍两种方法 方法一:使用 top 命令 打…

Access数据中的SQL偏移注入

使用场景: 目标数据表的字段较多,无法一一获取的时候,尝试使用偏移注入的方式实现SQL注入。 原理: 例如:一个表有6个字段,而你想获取的目标表admin的字段不知道,此时可以使用联合查询的方式获…

反射型xss靶场练习

反射型xss危害小,这里使用的xss靶场是常用的xss靶场:xss-labs。 当我们完成弹窗后就通过该关卡,说该关卡存在xss的一个漏洞并且可以解析js代码。 第一关: 这里没有过滤我们输入的代码:直接将js代码放在js代码中&a…

12、架构-流量治理之服务容错

概述 容错性设计(Design for Failure)是微服务的另一个核心原 则,也是笔者书中反复强调的开发观念转变。不过,即使已经有一定 的心理准备,大多数首次将微服务架构引入实际生产系统的开发者, 在服务发…

web前端 麦子学院:探索前端技术的无尽奥秘

web前端 麦子学院:探索前端技术的无尽奥秘 在数字化浪潮汹涌的时代,Web前端技术作为连接用户与互联网的桥梁,正以其独特的魅力吸引着无数开发者。麦子学院,作为前端技术学习的殿堂,为我们提供了深入探索前端技术的宝贵…

Linux下线程的互斥与同步详解

🤖个人主页:晚风相伴-CSDN博客 💖如果觉得内容对你有帮助的话,还请给博主一键三连(点赞💜、收藏🧡、关注💚)吧 🙏如果内容有误或者有写的不好的地方的话&…