当前位置: 首页 > article >正文

shell编程(1)——shell介绍

1、shell编程

  • shell是操作系统的终端命令行,可以理解为人机交互的一种方式,软件系统提供给用户操作的命令行界面,解释执行用户输入的命令或程序。程序员常见的就是命令行终端,通过命令来和操作系统交互。
  • shell脚本:是一个文件,文件里是程序代码,执行这个文件可以自动完成一些特定的功能。脚本文件里的代码比较特殊,不像C、C++语言一样里面是一些编程语言的基础语法构成,而是操作系统支持的命令加上一些逻辑控制语句构成。比如:脚本里可以调用ls、cd、pwd等操作系统支持的命令,其实ls、cd、pwd本身也是一个独立的程序。
  • shell编程总结:shell脚本就是调用操作系统支持的命令(比如:ls、cd等)来自动化的完成一些功能。

2、解释运行和编译运行

  • 解释运行:
    • 定义:解释器将源代码逐行翻译为机器码并立即执行,无需生成独立的目标文件。每次执行都要重新解释才能运行
    • 特点:
      • 每次运行时都需要进行翻译,翻译过程和执行过程交织在一起
      • 跨平台性强,只需提供解释器即可,因为无需生成特定平台的目标代码
  • 编译运行:
    • 定义:编译器将源代码编译成二进制文件, 以后就运行生成的二进制文件
    • 特点:
      • 编译只发生一次,生成的目标代码可以直接运行
      • 运行时速度快,因为无需再次翻译
      • 依赖于编译平台,目标代码可能需要为不同的硬件或操作系统重新编译
  • shell编程属于解释运行,所以在编写shell脚本时需要指定解释器

3、命令解释器分类

  • bash(Bourne Again Shell):linux平台常用的命令解释器
  • dash:也是linux平台的命令解释器
  • bash和dash的区别
    • bash 是功能更强大、更灵活的 shell,适用于各种场景,特别是需要交互性和脚本编写的任务
    • dash更适合于需要更快速和轻量化的环境,用于执行命令、管理文件系统和编写脚本
    • 总结:一般都是用bash
  • 其他解释器:学习linux平台学习bash即可,其他的命令解释器没有接触过

4、查看当前操作系统默认的解释器

daizhixin@:~$ which sh
/usr/bin/sh
daizhixin@:~$ ls -al /usr/bin/sh
lrwxrwxrwx 1 root root 4  11  2023 /usr/bin/sh -> bash

sh指向的就是系统默认的命令解释器

5、指定命令解释器

#!/bin/bash
  • 在脚本的开头添加一个特殊的注释,称为 “shebang” 或 “hashbang” 行,指定要用于执行脚本的 命令解释器

6、嵌入式开发中shell编程的使用场景

  • 学习shell编程的程序员大致分为两类:
    • 系统运维人员:
      • 需要精通shell编程
      • 编写复杂的shell脚本,比如监控系统状态、设置ip、重启系统的脚本
    • 非系统运维人员(嵌入式软件开发):
    • 熟练使用shell编程,知道shell编程的基本规则,能看懂shell脚本,编写一些简单功能的脚本
    • 比如:
      • 在编译代码库的时候,除了使用Makefile,还需要使用shell脚本
      • 某些需要频繁重复的操作由多条命令构成,可以将这些命令写成一个shell脚本,每次执行这个脚本即可,可以节省大量时间
      • 在linux系统启动的时候,调用的profile、rcS文件都是shell脚本,需要能够看懂

相关文章:

shell编程(1)——shell介绍

1、shell编程 shell是操作系统的终端命令行,可以理解为人机交互的一种方式,软件系统提供给用户操作的命令行界面,解释执行用户输入的命令或程序。程序员常见的就是命令行终端,通过命令来和操作系统交互。shell脚本:是…...

基于VMware的ubuntu与vscode建立ssh连接

1.首先安装openssh服务 sudo apt update sudo apt install openssh-server -y 2.启动并检查ssh服务状态 到这里可以按q退出 之后输入命令 : ip a 红色挡住的部分就是我们要的地址,这里就不展示了哈 3.配置vscode 打开vscode 搜索并安装:…...

【LLM-agent】(task2)用llama-index搭建AI Agent

note LlamaIndex 实现 Agent 需要导入 ReActAgent 和 Function Tool,循环执行:推理、行动、观察、优化推理、重复进行。可以在 arize_phoenix 中看到 agent 的具体提示词,工具被装换成了提示词ReActAgent 使得业务自动向代码转换成为可能&am…...

【Redis】Redis 经典面试题解析:深入理解 Redis 的核心概念与应用

Redis 是一个高性能的键值存储系统,广泛应用于缓存、消息队列、排行榜等场景。在面试中,Redis 是一个高频话题,尤其是其核心概念、数据结构、持久化机制和高可用性方案。 1. Redis 是什么?它的主要特点是什么? 答案&a…...

FastExcel使用详解

文章目录 FastExcel使用详解一、引言二、环境准备与依赖引入1、Maven 依赖引入2、实体类定义 三、核心操作:读写 Excel1、读取 Excel1.1 自定义监听器1.2 读取文件 2、写入 Excel2.1 简单写入2.2 模板写入 四、Spring Boot 集成示例1、文件上传(导入&…...

图漾相机——C++语言属性设置

文章目录 前言1.SDK API功能介绍1.1 Device组件下的API测试1.1.1 相机工作模式设置(TY_TRIGGER_PARAM_EX)1.1.2 TY_INT_FRAME_PER_TRIGGER1.1.3 TY_INT_PACKET_DELAY1.1.4 TY_INT_PACKET_SIZE1.1.5 TY_BOOL_GVSP_RESEND1.1.6 TY_BOOL_TRIGGER_OUT_IO1.1.…...

解决MacOS安装软件时提示“打不开xxx软件,因为Apple无法检查其是否包含恶意软件”的问题

macOS 系统中如何开启“任何来源”以解决安装报错问题? 大家好!今天我们来聊聊在使用 macOS 系统 时,遇到安装应用软件时出现报错的情况。这种情况常常发生在安装一些来自第三方开发者的应用时,因为 macOS 会默认阻止不明开发者的…...

网站快速收录:利用网站评论系统增加曝光

本文转自:百万收录网 原文链接:https://www.baiwanshoulu.com/40.html 利用网站评论系统增加曝光,是提升网站快速收录的有效途径之一。以下是一些详细策略,旨在通过优化和利用评论系统来增强网站的可见性和互动性: 一…...

实验十 Servlet(一)

实验十 Servlet(一) 【实验目的】 1.了解Servlet运行原理 2.掌握Servlet实现方式 【实验内容】 1、参考课堂例子,客户端通过login.jsp发出登录请求,请求提交到loginServlet处理。如果用户名和密码相同则视为登录成功&#xff0c…...

MyBatis-Plus笔记-快速入门

大家在日常开发中应该能发现,单表的CRUD功能代码重复度很高,也没有什么难度。而这部分代码量往往比较大,开发起来比较费时。 因此,目前企业中都会使用一些组件来简化或省略单表的CRUD开发工作。目前在国内使用较多的一个组件就是…...

Node.js MySQL:深度解析与最佳实践

Node.js MySQL:深度解析与最佳实践 引言 Node.js作为一种流行的JavaScript运行时环境,以其轻量级、高性能和事件驱动模型受到开发者的青睐。MySQL则是一款功能强大的关系型数据库管理系统,广泛应用于各种规模的应用程序中。本文将深入探讨Node.js与MySQL的集成,分析其优势…...

《超自然》:科学与灵性融合的自我转变之路

在现代社会中,许多人开始探寻自我成长、身心疗愈与灵性提升的可能性。Bestselling author Dr. Joe Dispenza 的《超自然:普通人如何创造非凡人生》正是在这样的大背景下问世的。书中既融合了量子物理、神经科学和表观遗传学的前沿理论,又吸收…...

JAVA内置类使用方法记录

Array数组 普通数组是基本类型,例如int[] 就像是;一个装着元素排列整齐的盒子,他没有size(),length()等方法,但是存在length属性。 Array.sort() 这是专门排序数组的方法,但是前提是你必须给数组存储的元素…...

《Origin画百图》之脊线图

1.数据准备:将数据设置为y 2.选择绘图>统计图>脊线图 3.生成基础图形,并不好看,接下来对图形属性进行设置 4.双击图形>选择图案>颜色选择按点>Y值 5.这里发现颜色有色阶,过度并不平滑,需要对色阶进行更…...

w189电商平台的设计与实现

🙊作者简介:多年一线开发工作经验,原创团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文…...

c++ string类 +底层模拟实现

提醒: 本片博客只是小编的听课笔记&#xff0c;介意勿看。 基础 包含在头文件<string>&#xff0c;才能使用string类似函数接口。 string常见构造类 string s1; cin>>s1;//无参构造 string s2(s1);//拷贝构造 string s1("jfksa");//传参构造 三种…...

让banner.txt可以自动读取项目版本

文章目录 1.sunrays-dependencies1.配置插件2.pluginManagement统一指定版本 2.common-log4j2-starter1.banner.txt使用$ 符号取出2.查看效果 1.sunrays-dependencies 1.配置插件 <!-- 为了让banner.txt自动获取版本号 --><plugin><groupId>org.apache.mave…...

深度解析:网站快速收录与网站安全性的关系

本文转自&#xff1a;百万收录网 原文链接&#xff1a;https://www.baiwanshoulu.com/58.html 网站快速收录与网站安全性之间存在着密切的关系。以下是对这一关系的深度解析&#xff1a; 一、网站安全性对收录的影响 搜索引擎惩罚&#xff1a; 如果一个网站存在安全隐患&am…...

96,【4】 buuctf web [BJDCTF2020]EzPHP

进入靶场 查看源代码 GFXEIM3YFZYGQ4A 一看就是编码后的 1nD3x.php 访问 得到源代码 <?php // 高亮显示当前 PHP 文件的源代码&#xff0c;用于调试或展示代码结构 highlight_file(__FILE__); // 关闭所有 PHP 错误报告&#xff0c;防止错误信息泄露可能的安全漏洞 erro…...

个人笔记(很没营养,纯备忘录)

1.输入电阻和输出电阻指在一个可划分为3部分的电路中&#xff0c;中间部分电路相当于前面电路的负载有输入端电阻&#xff0c;称输入电阻&#xff0c;相对于后面部分等效为电源有输出端内阻&#xff0c;称输出电阻 理所当然的希望输出电阻对负载影响小&#xff0c;输入电阻能完…...

基于SpringBoot的智慧康老疗养院管理系统的设计与实现(源码+SQL脚本+LW+部署讲解等)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

音视频多媒体编解码器基础-codec

如果要从事编解码多媒体的工作&#xff0c;需要准备哪些更为基础的内容&#xff0c;这里帮你总结完。 因为数据类型不同所以编解码算法不同&#xff0c;分为图像、视频和音频三大类&#xff1b;因为流程不同&#xff0c;可以分为编码和解码两部分&#xff1b;因为编码器实现不…...

小白零基础--CPP多线程

进程 进程就是运行中的程序线程进程中的进程 1、C11 Thread线程库基础 #include <iostream> #include <thread> #include<string>void printthread(std::string msg){std::cout<<msg<<std::endl;for (int i 0; i < 1000; i){std::cout<…...

Java线程认识和Object的一些方法ObjectMonitor

专栏系列文章地址&#xff1a;https://blog.csdn.net/qq_26437925/article/details/145290162 本文目标&#xff1a; 要对Java线程有整体了解&#xff0c;深入认识到里面的一些方法和Object对象方法的区别。认识到Java对象的ObjectMonitor&#xff0c;这有助于后面的Synchron…...

LeetCode:300.最长递增子序列

跟着carl学算法&#xff0c;本系列博客仅做个人记录&#xff0c;建议大家都去看carl本人的博客&#xff0c;写的真的很好的&#xff01; 代码随想录 LeetCode&#xff1a;300.最长递增子序列 给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 子序列 是由…...

pytorch实现长短期记忆网络 (LSTM)

人工智能例子汇总&#xff1a;AI常见的算法和例子-CSDN博客 LSTM 通过 记忆单元&#xff08;cell&#xff09; 和 三个门控机制&#xff08;遗忘门、输入门、输出门&#xff09;来控制信息流&#xff1a; 记忆单元&#xff08;Cell State&#xff09; 负责存储长期信息&…...

AI学习指南HuggingFace篇-模型部署与推理

一、引言 将训练好的模型部署为API并实现推理是将AI模型应用于实际场景的关键步骤。Hugging Face提供了多种工具和框架,支持快速部署和优化模型推理。本文将介绍如何将Hugging Face模型部署为API,探讨模型部署的常见方法和优化技巧,帮助读者将模型应用于实际场景。 二、模型…...

Games104——引擎工具链高级概念与应用

世界编辑器 其实是一个平台&#xff08;hub&#xff09;&#xff0c;集合了所有能够制作地形世界的逻辑 editor viewport&#xff1a;可以说是游戏引擎的特殊视角&#xff0c;会有部分editor only的代码&#xff08;不小心开放就会变成外挂入口&#xff09;Editable Object&…...

【PyQt】学习PyQt进行GUI开发从基础到进阶逐步掌握详细路线图和关键知识点

学习PyQt的必要性 PyQt是开发跨平台GUI应用的强大工具&#xff0c;适合需要构建复杂、高性能界面的开发者。无论是职业发展还是项目需求&#xff0c;学习PyQt都具有重要意义。 1. 跨平台GUI开发 跨平台支持&#xff1a;PyQt基于Qt框架&#xff0c;支持Windows、macOS、Linux…...

消息队列应用示例MessageQueues-STM32CubeMX-FreeRTOS《嵌入式系统设计》P343-P347

消息队列 使用信号量、事件标志组和线标志进行任务同步时&#xff0c;只能提供同步的时刻信息&#xff0c;无法在任务之间进行数据传输。要实现任务间的数据传输&#xff0c;一般使用两种方式&#xff1a; 1. 全局变量 在 RTOS 中使用全局变量时&#xff0c;必须保证每个任务…...