【Linux Shell】1. Shell 简述

文章目录

  • 【 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.hqwc.cn/news/316628.html

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

相关文章

基于ssm的医院交互系统+vue论文

医院交互系统的设计与实现 摘要 当下,正处于信息化的时代,许多行业顺应时代的变化,结合使用计算机技术向数字化、信息化建设迈进。传统的医院交互信息管理模式,采用人工登记的方式保存相关数据,这种以人力为主的管理模…

山海鲸可视化软件的优势:数据整合、可视化与个性化定制

随着科技的快速发展,企业数字化转型已成为必然趋势。而对于一些本身没有开发优势或非技术型企业,数字化产品的选择就成为重中之重。作为山海鲸可视化软件的开发者,我们深知这一点,对于企业来说,能选择一个产品一定要有…

ARM CCA机密计算架构软件栈之软件组件介绍

在本节中,您将了解Arm CCA的软件组件,包括Realm World和Monitor Root World。以下图表展示了Arm CCA系统中的软件组件: 在这个图表中,世界之间的边界显示为粗虚线。由较高权限的软件强制执行的较低权限软件组件之间的边界显示为细虚线。例如,非安全EL2处的虚拟机监视器强制…

【AIGC-图片生成视频系列-6】SSR-Encoder:用于主题驱动生成的通用编码器

目录 一. 贡献概述 二. 方法详解 a) 训练阶段 b) 推理生成阶段: 三. 综合结果 四. 注意力可视化 五. 选择性主题驱动图像生成 六. 人体图像生成 七. 可推广到视频生成模型 八. 论文 九. 个人思考 稳定扩散(Stable Diffusion)模型可…

java常用数据结构

List:ArrayList 和 LinkedList 1、ArrayList 和 LinkedList都是非线程安全 2、ArrayList 可以直接根据下表定位元素,查找速度快,但是修改元素慢;LinkedList 查找元素必须从第一个开始逐个查找,查找速度慢&#xf…

JVM内存模型理解

1、首先理解下什么是 jvm 内存模型? jvm内存模型定义了Java虚拟机运行时如何组织和管理内存,规定了各个内存区域的作用、结构和交互方式,以及线程间的内存可见性、内存操作的原子性等行为,以支持Java程序的执行,即一种…

【Pytorch】学习记录分享11——PyTorch GAN对抗生成网络

PyTorch GAN对抗生成网络 0. 工程实现1. GAN对抗生成网络结构2. GAN 构造损失函数(LOSS)3. GAN对抗生成网络LOSS损失函数说明 0. 工程实现 1. GAN对抗生成网络结构 2. GAN 构造损失函数(LOSS) LOSS公式与含义: LOSS…

【qt】解决qt里编辑qss后失效问题(qt编码问题)

1、先创建qss文本stylesheet.qss 以按钮为例 QPushButton {background-color:rgb(240,255,255);color: rgb(0, 0, 2);border-style: outset;border-color: beige;border-radius: 10px; }/* hover按钮悬浮,鼠标悬浮在按钮上的状态,按钮颜色 */QPushButto…

【Vue2+3入门到实战】(19)Vuex状态管理器通过辅助函数 - mapState获取 state中的数据代码实现 详细讲解

目录 一、通过辅助函数 - mapState获取 state中的数据1.第一步:导入mapState (mapState是vuex中的一个函数)2.第二步:采用数组形式引入state属性3.第三步:利用**展开运算符**将导出的状态映射给计算属性 二、开启严格模式及Vuex的单项数据流1…

初识Linux下进程

🌎初识进程 初识进程 简单认识一下进程 如何管理进程 进程属性信息 内核运行队列 查看进程 通过系统调用获取进程标识符       父子进程       查看运行中的进程 总结 前言: 我们在电脑上点开的一个个应用,其实就是一个个进程&am…

用 MATLAB 产生单位抽样序列、单位阶跃序列、矩形序列、正弦序列和复指数序列

%% 单位抽样(脉冲)序列(冲激函数) % 参数设置 n -10:10; % 定义时间范围 delta (n 0); % 生成单位抽样序列% 绘图 figure; stem(n, delta); title(单位抽样序列); xlabel(n); ylabel(delta[n]);%% 单位阶跃序列 % 参数设置 n …

STM32F407-14.3.10-表73具有有断路功能的互补通道OCx和OCxN的输出控制位-01x00

如上表所示,MOE0,OSSI1,CCxE0,CCxNE0时,OCx与OCxN的输出状态取决于GPIO端口上下拉状态。 ---------------------------------------------------------------------------------------------------------------------…