当前位置: 首页 > 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脚本,需要能够看懂

http://www.kler.cn/a/530227.html

相关文章:

  • 记录 | 基于MaxKB的仿小红书旅游文章AI制作(含图文、视频)
  • 解决Django非ORM模型提示初始化request问题
  • 全面认识了解DeepSeek+利用ollama在本地部署、使用和体验deepseek-r1大模型
  • 【数据采集】案例02:基于Selenium采集豆瓣电影Top250的详细数据
  • 一文讲解Java中的ArrayList和LinkedList
  • C++【深入底层,手撕vector】
  • Hive分区和分桶
  • unity中的动画混合树
  • Games104——网络游戏的进阶架构
  • 分享10个实用的Python工具的源码,支持定制
  • Java项目: 基于SpringBoot+mybatis+maven+mysql实现的图书管理系统(含源码+数据库+答辩PPT+毕业论文)
  • Python爬虫从入门到精通(三)简单爬虫的实现_爬虫tl
  • 问deepseek,如何看待ai降低学习成本而导致软件开发岗位需求降低,和工资下降。 软件从业人员何去何从?
  • 陆游的《诗人苦学说》:从藻绘到“功夫在诗外”(中英双语)mastery lies beyond poetry
  • 鸿蒙 循环控制 简单用法
  • 洛谷的更多功能(不会像其他文章那样复杂且仅支持Edge浏览器)
  • 《 C++ 点滴漫谈: 二十五 》空指针,隐秘而危险的杀手:程序崩溃的真凶就在你眼前!
  • 《手札·开源篇》从开源到商业化:中小企业的低成本数字化转型路径 ——SKF轴承贸易商的十年信息化演进启示
  • STM32单片机学习记录(2.2)
  • 【开源免费】基于SpringBoot+Vue.JS医院后台管理系统(JAVA毕业设计)
  • AJAX笔记原理篇
  • 12 向量结构模块(vector.rs)
  • 解决国内服务器 npm install 卡住的问题
  • 【课题推荐】基于t分布的非高斯滤波框架在水下自主导航中的应用研究
  • [Linux]如何將腳本(shell script)轉換到系統管理服務器(systemd service)來運行?
  • Hive之数据定义DDL