【Linux Shell】1. 简述

news2024/11/24 17:10:37

文章目录

  • 【 1. Shell 解释器、Shell语言、Shell脚本 】
  • 【 2. Shell 环境 】
  • 【 3. 一个简单的 Shell 脚本 】
    • 3.1 Shell 脚本的编写
    • 3.2 Shell 脚本的运行
      • 3.2.1 作为可执行程序运行 Shell 脚本
      • 3.2.2 作为解释器参数运行 Shell 脚本

【 1. Shell 解释器、Shell语言、Shell脚本 】

  • Shell 原本是一个应用程序,即 命令行解释器(如下所示),它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用 shell 来启动、挂起、停止甚至是编写一些程序。在 Shell 中可以直接调用Linux系统命令。
    -
  • Shell 脚本是利用利用 Shell 的功能所写的一个程序 ,这个程序是使用纯文本文件,将一些 shell 的语法与指令(含外部指令)写在里面, 搭配正规表示法、管线命令与数据流重导向等功能,以达到我们所想要的处理目的。类似于 批处理文件,一次执行多个指令。不需要编译。
  • Shell 语言是一个利用 C语言编写的程序,用于编写 Shell 脚本。

【 2. Shell 环境 】

  • Shell 编程跟 JavaScript、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。
  • Linux 的 Shell 种类众多,常见的有: Bourne Shell(/usr/bin/sh或/bin/sh) Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K Shell(/usr/bin/ksh)、Shell for Root(/sbin/sh)…
  • 而 bash,也就是 Bourne Again Shell,由于易用和免费,Bash 在日常工作中被广泛使用。同时, Bash 也是大多数Linux 系统默认的 Shell
  • 在一般情况下,人们并不区分 Bourne Shell 和 Bourne Again Shell,所以,像 #!/bin/sh,它同样也可以改为 #!/bin/bash。#! 告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序。

【 3. 一个简单的 Shell 脚本 】

3.1 Shell 脚本的编写

  • 打开文本编辑器(可以使用 vi/vim 命令来创建文件),新建一个文件 test.sh,扩展名为 sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果用 php 写 shell 脚本,扩展名就用 php 好了。输入代码如下:
#!/bin/bash
echo "Hello World !"
  • #! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。
  • echo 命令用于向窗口输出文本。

3.2 Shell 脚本的运行

3.2.1 作为可执行程序运行 Shell 脚本

  • 将上面的代码保存为 test.sh,并 cd 到相应目录:
chmod +x ./test.sh  #使脚本具有执行权限
./test.sh  #执行脚本

在这里插入图片描述

  • 注意, 一定要写成 ./test.sh,而不是 test.sh,运行其它二进制的程序也一样,直接写 test.sh,linux 系统会去 PATH 里寻找有没有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的当前目录通常不在 PATH 里,所以写成 test.sh 是会找不到命令的,要用 ./test.sh 告诉系统说,就在当前目录找。

3.2.2 作为解释器参数运行 Shell 脚本

  • 这种运行方式是,直接运行解释器, 不需要在第一行指定解释器信息,写了也没用,其参数就是 shell 脚本的文件名,如下所示
/bin/sh test.sh

在这里插入图片描述

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

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

相关文章

基于WIFI指纹的室内定位算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1WIFI指纹定位原理 4.2 指纹数据库建立 4.3定位 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 .....................................…

开发小技巧 - 合理使用Visual Studio 2022内置任务列表(TODO)

前言 在开发编码过程中经常会因为各种问题而打断自己的思绪和开发计划,可能会导致本来准备开发或者需要测试的功能到要上线的时候才想起来没有做完。这种情况相信很多同学都遇到过,咱们强大的Visual Studio内置了一个任务列表(TODO&#xff…

使用使用maven后jstl标签库无法使用

创建maven项目后配置了jstl标签库的依赖,但是一直不行,jsp页面还是原样给我输出,然后去网上找了许多办法,类似于配置文件之类的,结果发现对我并没有什么用,还是原样输出 然后就各种查找,发现了一…

rosbag 源码阅读笔记-1

这篇文字想通过在自己的机器上查找rosbag的源码在哪里(而不是通过google搜索),来和大家分享一些ros和python的常用命令,了解一下rosbag的调用过程。 怎么查到源码在哪里 当然我们可以直接上ros的官网去查看,路径在这…

Tmux 使用小记

本文参考自 阮一峰老师Tmux 使用教程[1] Tmux,不仅仅是分屏那么简单。。。 与tmux类似的工具是screen 会话管理 将窗口与会话"解绑" 对于没有图形界面只有shell的场景(如服务器),尤其有用..这是其最核心解决的问题(窗口管理啥的只能算锦上添花的辅助功能)…

1.7~1.8数算总复习PART1

偶数结点就一定是左孩子,奇数结点就一定是右孩子,判断两相邻编号的两节点是否为兄弟,就看他们除以2后的结果是否相同即可 由于先序遍历是“根――左子树――右子树”,而后序遍历是“左子树――右子树――根”,若某二叉…

【OpenMP】 2.1 简单示例

1、C中的OMP显示构造 OpenMP在C/C中通常以编译指令的方式进行使用&#xff0c;一个指令和一个结构化块组成构造。 #pragma omp parallel [clause[[,]clause]... ]#pragma omp parallel private(x) {//并行代码 } 示例代码: #include <iostream> #include <omp.h&g…

阿里与上交大提出 LLM 长文本计算新解法:可处理文本长达 1900k 字节

在实际应用大模型的过程中&#xff0c;尤其是处理长文本的上下文信息时&#xff0c;如何高效灵活地调度计算资源成为一个学术界与工业界共同关注的问题。 大语言模型所能容纳的上下文长度直接影响了诸如 ChatGPT 等高级应用与用户交互体验的优劣程度&#xff0c;这给云环境下的…

【问题】SpringBoot项目中log4j与logback的Jar包冲突问题

这篇文章主要给大家介绍了解决SpringBoot项目中log4j与logback的Jar包冲突问题,文中有详细的解决方法和冲突的原因。 SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/C:/Users/lx/.m2/repository/org/slf4j/slf4j-log4j12/1.7.25/sl…

Java学习笔记(六)——基本数据类型及其对应的包装类

文章目录 包装类基本数据类型及其对应的包装类获取Integer对象的方式(了解)获取Integer对象两种方式的区别(掌握) 包装类的计算&#xff1a;自动装箱和自动拆箱Integer成员方法综合练习练习1练习2练习3练习4练习5 包装类 包装类&#xff1a;基本数据类型对应的引用数据类型。 …

10本医护升职称可用的医药普刊推荐,参数大全!

医、药、护、技及医学工程等相关的人员&#xff0c;进行卫生高级职称评审时&#xff0c;需要在专业期刊上公开发表本专业学术论文&#xff0c;论文的方向、内容质量以及发表的刊物都至关重要。今天常笑医学给大家整理了10本不错的医药普刊&#xff0c;供大家参考&#xff01; 1…

x-cmd pkg | busybox - 嵌入式 Linux 的瑞士军刀

目录 简介首次用户功能特点竞品和相关作品 进一步阅读 简介 busybox 是一个开源的轻量级工具集合&#xff0c;集成了一批最常用 Unix 工具命令&#xff0c;只需要几 MB 大小就能覆盖绝大多数用户在 Linux 的使用&#xff0c;能在多款 POSIX 环境的操作系统&#xff08;如 Linu…

普中STM32-PZ6806L开发板(有点悲伤的故事续-人灯还未了)

简介 继上篇 普中STM32-PZ6806L开发板(有点悲伤的故事) 说到 关于 普中STM32-PZ6806L开发板的LED流水灯也被烧坏掉了&#xff0c;再也无法玩流水灯, 内心充满了只会流水灯的不甘, 流水灯就是单片机的Hello World&#xff0c;怎么能没有呢&#xff1f; 事情发展 好巧不巧想起最近…

十九:爬虫最终篇-平安银行商城实战

平安银行商场实战 需求 获取该商城商品信息 目标网址 https://m.yqb.com/bank/product-item-50301196.html?mcId1583912328849970&loginModepab&historyy&sceneModem&traceid30187_4dXJVel1iop详细步骤 1、寻找数据接口 2、对比payload寻找可疑参数 3、多…

Spring——基于注解的AOP控制事务

基于注解的AOP控制事务 1.拷贝上一次代码 2.applicationContext.xml <!-- 开启spring对注解事务的支持 --> <tx:annotation-driven transaction-manager"transactionManager"/> 3.service Service Transactional(readOnlytrue,propagation Propagatio…

RT_Thread 调试笔记:时间相关,时钟管理函数,延时,定时器、 毫秒转换为时分秒 等

说明&#xff1a;记录日常使用 RT_Thread 开发时做的笔记。 持续更新中&#xff0c;欢迎收藏。 1. 延时函数 1. us延时函数 rt_hw_us_delay(rt_uint32_t us);//输如数据是us rt_hw_us_delay(200);//输入数据是us 2. ms延时函数 rt_thread_mdelay(1000);//输入数据是ms 2…

Android Matrix (二)具体图形变换参数的获取

Android Matrix &#xff08;二&#xff09;具体图形变换参数的获取 Matrix 类在 Android 中用于表示 3x3 的变换矩阵。这个矩阵可以应用于画布&#xff08;Canvas&#xff09;&#xff0c;视图&#xff08;View&#xff09;或者位图&#xff08;Bitmap&#xff09;&#xff0…

C#设计模式之单例模式

介绍 单例模式&#xff08;Singleton&#xff09;保证一个类仅有一个实例&#xff0c;并提供一个访问它的全局访问点。 单例模式的结构图如下所示&#xff1a; 使用单例模式的原因 对一些类来说&#xff0c;只有一个实例是很重要的。如何才能保证一个类只有一个实例并且这个…

【JAVA】Iterator 怎么使用?有什么特点

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; JAVA ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 Iterator 接口的主要方法&#xff1a; 例子 特点&#xff1a; 结语 我的其他博客 前言 在编程的世界里&#xff0c;迭代…

【QML COOK】- 000-创建Project

1. 文件->New Project... 2. Application(Qt)->Qt Quick Application(compat) 3. 填好【名称】和【创建路径】 4. 选择CMake 5. 选择QT6.2 6. 直接【下一步】 7. 直接下一步 8. 直接下一步 9. 出现工程文件 10. 点击运行 11. 出现窗口