Shell 学习笔记 - 导读 + 变量定义

初识 Shell

本章学习目标

  • 了解什么是 Shell
  • 了解 Shell 的版本及用途
  • 掌握 Shell 变量的用法

导读( 了解 \color{cyan}{了解} 了解

现在的人们使用的操作系统(WindowsAndroidiOS 等)都带有图形化界面,简单直观,容易上手。然而早期的计算机并没有图形界面,人们只能使用繁琐的命令来控制计算机。

其实,真正能控制计算机硬件(CPU、内存、显示器等)的只有操作系统内核(kernel),图形化界面和命令行都是架设在用户和内核之间的桥梁,是方便用户控制计算机而存在的。

由于安全等原因,用户不能直接接触内核,因此需要在用户和内核之间增加 “命令解释器”,这样既能简化用户的操作,又能保障内核的安全。

Linux 下,这个命令解释器叫作 “Shell”,它能让用户更加高效、安全、低成本地使用 linux 内核。

在这里插入图片描述

1.1Shell 如何连接用户和内核

Shell 能够接收用户输入的命令,并对命令进行处理,处理完毕后再将结果反馈给用户,如输出到显示屏、写入文件等等。( 这就是我对于 S h e l l 的认知 \color{cyan}{这就是我对于 Shell 的认知} 这就是我对于Shell的认知

其实, S h e l l 程序本身的功能是很弱的,文件操作、输入输出、进程管理等都得依赖内核。 \color{red}{其实,Shell\ 程序本身的功能是很弱的,文件操作、输入输出、进程管理等都得依赖内核。} 其实,Shell 程序本身的功能是很弱的,文件操作、输入输出、进程管理等都得依赖内核。

用户运行一个命令,大部分情况下 Shell 都会去调用内核暴露出来的接口,这就是在使用内核,只是这个过程被 Shell 隐藏起来,在背后默默进行,用户看不到而已。

接口其实就是一个一个的函数,使用内核就是调用这些函数,除了函数没有别的途径使用内核。

比如用户在 Shell 中输入 cat log.txt 命令就可以查看 log.txt 文件中的内容。

log.txt 放在磁盘的哪个位置?分成了几个数据块?如何操作探头读取它?这些底层细节 Shell 统统不知道( 我也是嘿嘿。 \color{cyan}{我也是嘿嘿。} 我也是嘿嘿。

  • 它只能调用内核提供的 open()read() 函数,告诉内核读取 log.txt 文件;

  • 然后内核按照 Shell 的指令去读取文件,并将读取到的文件内容交给 Shell

  • 最后由 Shell 把文件内容呈现给用户( 呈现到显示器上还得依赖内核 \color{cyan}{呈现到显示器上还得依赖内核} 呈现到显示器上还得依赖内核

在这里插入图片描述

1.2 Shell 连接其他程序

Shell 中输入的命令,有一部分是 Shell 本身自带的,这叫作内置命令

有一部分是其他应用程序(一个程序就是一个命令),这叫作外部命令

Shell 本身支持的命令并不多,功能也有限,但是 Shell 可以调用其他程序,每个程序就是一个命令,这使得 Shell 命令的数量可以无限扩展。

结论:

其结果就是 Shell 的功能非常强大,完全能够胜任 Linux 的日常管理工作,包括

  • 文本或字符串检索
  • 文件的查找或创建
  • 大规模软件的自动部署
  • 更改系统设置
  • 监控服务器性能
  • 发送报警邮件
  • 抓取网页内容
  • 压缩文件等。

Shell 连接程序的示意图如图所示。

注意:“用户” 和 “其他应用程序” 是通过虚线连接的,因为用户启动 Linux 后直接面对的是 Shell,通过 Shell 才能运行其他应用程序。

在这里插入图片描述

1.3 Shell 同样支持编程

Shell 并不是简单的命令堆砌,用户还可以在 Shell 中编程,和使用 C++C#Javapython 等常见的编程语言并没有什么区别。

Shell 虽然没有 C++Javapython 等强大,但也支持以下基本的编程元素。

  • if … else 选择结构, case … in 开关语句,forwhileuntil 循环。
  • 变量、数组、字符串、注释、加减乘除、逻辑运算等概念。
  • 函数,包括用户自定义的函数和内置函数(如 prinf()export()、**eval()**等)。

从这个角度讲,Shell 也是一种编程语言,它的编译器(解释器)是 Shell 这个程序。因此,平时所说的 Shell 有时候是指连接用户和内核的这个程序,有时候又指 Shell 编程。

Shell 主要用来开发一些实用的、自动化的小工具,而不是用来开发具有复杂业务逻辑的中大型软件。

例如,检测计算机的硬件参数、搭建 Web 运行环境、日志分析等,Shell 都非常合适。

使用 Shell 的熟练程度反映了用户对 Linux 的掌握程度,运维工程师、网络管理员、程序员都应该要学习 Shell

linux 运维工程师来说, Shelll 更是必须掌握的技能。Shell 使自动化管理服务器集群成为可能,否则用户只能一个一个地登录所有服务器,对每一台服务器进行相同地设置,而这些服务器可能有成百上千之多,用户会在重复性的工作上浪费大量地时间。

1.4 Shell 是一种脚本语言

几乎所有的编程语言,如 C/C++、Pascal、Go 汇编语言等,都必须在程序运行之前将所有代码翻译成二进制形式,也就是生成可执行文件。

用户拿到的是生成的可执行文件,看不到源码。

这个过程叫作编译,这样的编程语言叫作编译型语言,完成编译过程的软件叫作编译器。

而有的编程语言,如 Shell、JavaScript、python、PHP 等,需要一边执行一边翻译,不会生成可执行文件,用户必须拿到源码才能运行程序。程序开始运行后会即时翻译,翻译完一部分执行一部分,不用等到所有代码都翻译完。

这个过程叫作解释,这样的编程语言叫作解释型语言或脚本语言(Script),完成解释过程的软件叫作解释器。

编译型语言的优点

  • 执行速度快
  • 对硬件要求低
  • 保密性好
  • 适合开发操作系统、大型应用程序、数据库等。

脚本语言的优点

  • 使用灵活
  • 部署容易
  • 跨平台性好
  • 非常适合 Web 开发以及小工具的制作。

Shell 就是一种脚本语言,用户编写完源码后不用编译,直接运行源码即可。

1.5 Shell 变量的定义

程序是在内存中运行的。在程序运行过程中,内存空间内的某些值是变化的,这个内存空间就称为变量。

为了便于操作,可以对这个空间进行命名,这个名称就是变量名。

简单来说,变量就是用一个特定的字符串去表示不固定的内容,变量的名称必须是合法的标识符。内存空间内的值就是变量值,在声明变量时可以不赋值,也可以直接赋给初值。

变量其实就是用来放置数值等内容的 “盒子”,想要使用这个可以存放数值等内容的魔法盒,就必须遵循一定的规则,首先需要提前进行如下定义。

定义变量名的语法格式如下:

变量名=变量值

代码如下:

varName=varVlaue

Shell 中,当第一次使用某个变量名时,实际上就定义了这个变量。如果没有给出变量值,则变量会被赋值为一个空字符串。

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

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

相关文章

网络安全 - DDoS 攻击原理 + 实验

DDoS 攻击 什么是 DDoS 进攻 D D o S \color{cyan}{DDoS} DDoS(Distributed Denial of Service,分布式拒绝服务)攻击是一种通过多个计算机系统同时向目标系统发送大量请求,消耗其资源,使其无法正常服务的攻击方式。DD…

举例说明 如何判断Spark作业的瓶颈

首先看哪个Job执行时间长: 例如下图中明显Job 2时间执行最长,这个对rdd作业是直观有效的。 对于sql作业可能不准确,sql需要关注stage的详情耗时。 然后看执行时间长的Job中哪个stage执行时间长: 明显stage 7和stage 13执行时间长&…

经验分享,如何去除文本中的空格

有时候我们需要去掉一窜文本中的空格,这里分享一个好用的免费网站,可实现在线去除 网址:http://www.txttool.com/t/?idMzM4 使用截图:

CloudFlare 里如何设置参数传递的 301 重定向

自从接到【哈哈,笑死我了都,黔驴技穷了都!】一文里提到的代维客户订单,这两天明月就一直在加班加点的重新部署着客户的四个服务器,因为有三个都是 WordPress+WooCommerce 式的电商平台,很是有些费时费力,好在现在基本都搞定了,剩下的就是些细节方面的优化、调整了。期间…

力扣231. 2 的幂(位运算)

Problem: 231. 2 的幂 文章目录 题目描述思路及解法复杂度Code 题目描述 思路及解法 1.若为0和负数则直接返回false; 2.利用一个标志数mask令其为一,不断的算术左移同时和n做与(&)运算,统计n中二进制位为1的个数&a…

HTTP-代理

HTTP-代理 web代理服务器是网络的中间实体,代理位于客户端和服务器之间,扮演者中间人的角色,在各端点之间来回传递http报文 web的中间实体 web上的代理服务器是代表客户端完成事务处理的中间人,如果没有web代理,htt…

(4)SDL渲染开发

SDL渲染开发 1. SDL简介2. 环境搭建2.1 windows2.2 Linux 3. SDL子系统3.1 eg1 创建窗口 4:SDL显示4.1 显示图片4.2 绘制长方形显示 5. SDL事件6. SDL多线程6.1 接口演示6.2 yuv显示6.3 pcm播放 1. SDL简介 SDL(Simple DirectMedia Layer)是一…

导出excle表

文章目录 导出excle表需求场景引入依赖具体代码 导出excle表 需求场景 假设我们有一个需求,现在数据库中有一些用户信息,我们想要把这些信息导出到excle表格中,然后存储到本地磁盘中。要求:excle表格的第一行需要有黄色背景&…

2千泰中英泰语词汇对照含MP3真人读音

越来越多的人到泰国旅游,今天这一份数据就是服务于此,包含了2000条泰语的日常生活词汇,并且每条记录都含有真人发音MP3对应。 有分100个章节,每个章节共有20条记录,非常适合一章节一章节的学习,具体章节有&…

《大数据分析》期末考试整理

一、单项选择题(1*9) 1.大数据发展历程:出现阶段、热门阶段和应用阶段 P2 2.大数据影响 P3 1)大数据对科学活动的影响 2)大数据对思维方式的影响 3)大数据对社会发展的影响 4)大数…

C语言适不适合新手学习?

C 语言,尽管从整体上看相对较为简单,但在实际编写 C 程序的过程中,会涉及到诸如指针等一些细节方面,这确实可能会给新手带来一定程度的困扰和挑战。不过,我们需要明确的是,这种挑战从某种意义上来说是具有积…

paddleocr实验过程

切割数据 Paddleocr/PPOCRLabel/gen_ocr_train_val_test.py;切割后的数据在train_data中,注意切割后的数据前缀默认是当前目录,因此建议切割数据在liunx中进行。建议在liunx中指定 python gen_ocr_train_val_test.py --datasetRootPathXX …

锁存器的工作原理及其在FPGA设计中的注意事项

锁存器(Latch)是数字电子中常用的一种基本元件,用于在特定的时间点或条件下“锁存”或保存输入的数据值。锁存器对脉冲电平敏感,它只在输入脉冲的高电平(或低电平)期间对输入信号敏感并改变状态。在数字电路…

vba学习系列(5)--指定区域指定字符串计数

系列文章目录 文章目录 系列文章目录前言一、需求背景二、vba自定义函数1.引入库 总结 前言 一、需求背景 想知道所有客诉项目里面什么项目最多,出现过多少次。 二、vba自定义函数 1.引入库 引用: CountCharInRange(区域,“字符串”) Function CountCh…

人有时候不逼自己一把,永远不知道自己有多牛逼!

大家好,我是墨云,一位看起来不像搞技术的IT男。 之前写过一篇文章,从零开始,如何在3个月内吸引3500用户:我的私域运营秘诀,现如今,我们的私域社群成员数已逾五千人。👫 今天的主题&a…

【漏洞复现】红海云eHR PtFjk.mob 任意文件上传漏洞

免责声明: 本文内容旨在提供有关特定漏洞或安全漏洞的信息,以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步,并非出于任何恶意目的。阅读者应该明白,在利用本文提到的漏洞信息或进行相关测…

【图解IO与Netty系列】Netty编解码器、TCP粘包拆包问题处理、Netty心跳检测机制

Netty编解码器、TCP粘包拆包问题处理、Netty心跳检测机制 Netty编解码器编码器解码器编解码器Netty提供的现成编解码器 TCP粘包拆包问题处理Netty心跳检测机制 Netty编解码器 网络传输是以字节流的形式传输的,而我们的应用程序一般不会直接对字节流进行处理&#x…

System-Verilog 实现DE2-115 流水灯

文章目录 一、什么是SystemVerilog二、代码实现实现结果 一、什么是SystemVerilog SystemVerilog是一种硬件描述语言(HDL),它用于设计和验证电子系统,特别是在集成电路(IC)和系统级芯片(SoC)的设计过程中。SystemVerilog是Verilog语言的一个超集&#xf…

大模型生成的常见Top-k、Top-p、Temperature参数

参考: https://zhuanlan.zhihu.com/p/669661536 topK,topP https://www.douyin.com/video/7380126984573127945 主要是softmax产生的词表每个词的概率分布后, topK,比如K3,表示采样概率最大的前3个,其他全…

【Perl】与【Excel】

引言 perl脚本语言对于文本的处理、转换很强大。对于一些信息量庞大的文本文件,看起来不直观,可以将信息提取至excel表格中,增加数据分析的可视化。perl语言的cpan提供了大量模块。对于excel文件的操作主要用到模块: Spreadshee…