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

【Linux】Shell命令以及运行原理

目录

一、Linux是什么

二、Shell 

三、为什么要有Shell

四、Shell的工作原理


一、Linux是什么

狭义上的Linux是指Linux内核本身,它是操作系统的核心部分,负责管理计算机的硬件资源(如处理器、内存、设备等),提供基本的功能和服务,如进程管理、文件系统、设备驱动程序等。Linux内核是开源软件,因此可以被自由地使用、修改和分发。

广义上的Linux是指基于Linux内核的完整操作系统,通常被称为Linux发行版。Linux发行版包括了Linux内核以及大量的软件和工具,如Shell、图形界面环境、应用程序、系统管理工具等。不同的Linux发行版可能会在软件包选择、配置和管理上有所不同,以满足不同用户的需求。


二、Shell 

Linux是一种操作系统,而Shell是Linux系统中的一个命令解释器它是用户与操作系统之间交互的界面。在Linux系统中,用户可以通过Shell来输入命令、运行程序、管理文件和进程等。

Shell是Linux系统中的一个重要组成部分,它可以解释用户输入的命令,识别命令的名称、参数和选项,并将其转换为操作系统内核可以执行的操作。Shell还可以设置环境变量、切换工作目录、管理用户权限等,从而管理用户的工作环境。

Linux系统中有多种Shell可供选择,比较常见的有Bash(Bourne Again SHell)、Korn shell、C shell等。每种Shell都有自己的特点和语法,但它们都遵循着类似的基本概念和作用,作为用户与操作系统进行交互的重要桥梁。

注意:

  • Shell 中输入的命令与系统调用无关,只是Shell将根据命令执行程序,执行的程序有可能调用系统的功能,但是执行系统功能的指令不一定是通过Shell发出的,通过Shell发出的命令也不一定会执行系统调用。 

三、为什么要有Shell

Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?

用户使用操作系统的流程:
        1.将用户输入的指令,解释传递给你内核
        2.内核执行命令,得到结果,将结果通过外壳传递给用户

原因1:为了保护操作系统内核

可以理解为:操作系统并不相信我们用户。在操作系统看来,普通用户直接访问或使用操作系统内核是有一定的不安全性的(群众里面有坏人),对于这种情况,操作系统就在内核的外层嵌套了一层的Shell,有了Shell之后,用户不能直接地访问内核,提高了操作系统的安全性。

原因2: 方便用户与操作系统进行交互

Linux内核负责管理计算机的硬件资源,提供基本的功能和服务,如进程管理、文件系统、设备驱动程序等。然而,直接与内核交互并不方便,因此需要一个用户友好的界面来与内核进行交互

Shell作为Linux系统中的一个命令解释器,提供了一个用户与操作系统之间的交互界面。通过Shell,用户可以输入命令、运行程序、管理文件和进程等,并且可以方便地管理自己的工作环境。Shell会解释用户输入的命令,识别命令的名称、参数和选项,并将其转换为操作系统内核可以执行的操作。


四、Shell的工作原理

Shell的工作原理可以简单描述为以下几个步骤:

  1. 提示符和命令读取:当用户在终端窗口中输入命令时,Shell会显示一个提示符等待用户输入。一旦用户输入完整的命令并按下回车键,Shell就会开始读取该命令。
  2. 命令解析和分析:Shell会对输入的命令进行解析和分析。它会识别命令的名称、参数和选项,并将其分解为不同的组成部分。这一过程涉及到字符串处理、语法解析和语义分析等操作。
  3. 命令执行:一旦命令被解析和分析后,Shell会根据命令的类型和参数执行相应的操作。这可能包括运行系统内置的命令、调用外部程序、执行脚本文件等。Shell会将执行结果输出到终端窗口。
  4. 环境管理:Shell还负责管理用户的工作环境。它会设置和维护环境变量,提供命令补全和历史记录功能,支持文件和目录的操作,以及用户权限的管理等。
  5. 循环和控制流:Shell可以执行脚本文件中的多个命令,并支持条件判断、循环和函数等控制结构。这使得用户可以编写复杂的脚本来实现自动化的任务处理和系统管理。

总体而言,Shell的工作原理是通过读取、解析和执行用户输入的命令来实现与操作系统的交互。它提供了一个灵活和强大的命令行界面,使得用户可以高效地管理和使用Linux系统。

相关文章:

【Linux】Shell命令以及运行原理

目录 一、Linux是什么 二、Shell 三、为什么要有Shell 四、Shell的工作原理 一、Linux是什么 狭义上的Linux是指Linux内核本身,它是操作系统的核心部分,负责管理计算机的硬件资源(如处理器、内存、设备等),提供基…...

vue-动态组件、keep-alive

vue-动态组件、keep-alive 如果我们想写一个tabbar导航栏,我能想到的两种方式 通过if条件判断的方式实现(不赘述)动态组件 接下来我们就看看动态组件如何创建,废话不多少直接上代码(代码中有备注) 首先…...

华为OD机试 - 执行任务赚积分(Java JS Python C)

题目描述 现有N个任务需要处理,同一时间只能处理一个任务,处理每个任务所需要的时间固定为1。 每个任务都有最晚处理时间限制和积分值,在最晚处理时间点之前处理完成任务才可获得对应的积分奖励。 可用于处理任务的时间有限,请问在有限的时间内,可获得的最多积分。 输入…...

如何用CHAT配置linux的远程连接?

问CHAT:配置linux的远程连接 1.下载ssh 2.启动ssh服务 3.查看ssh服务状态 4.设置ssh服务开机自启动 5.设置windows的cmd下ssh 6.通过cmd的ssh命令远程到linux linux的ip:10.8.9.23 用户名:Li CHAT回复:以下是为配置Linux的远程连接的步骤说明&#xff1a…...

Python (十六) 错误和异常

程序员的公众号:源1024,获取更多资料,无加密无套路! 最近整理了一波电子书籍资料,包含《Effective Java中文版 第2版》《深入JAVA虚拟机》,《重构改善既有代码设计》,《MySQL高性能-第3版》&…...

Android进阶之路 - TextView文本渐变

那天做需求的时候,遇到一个小功能,建立在前人栽树,后人乘凉的情况下,仅用片刻就写完了;说来惭愧,我以前并未写过文本渐变的需求,脑中也仅有一个shape渐变带来的大概思路,回头来看想着…...

【复位与释放(亚稳态)模为60的BCD码计数器_2023.11.22】

复位与释放&#xff08;异步复位&#xff0c;同步释放&#xff09; 同步复位rst、同步置数load&#xff08;置数信号只有在时钟上升沿到来时才能生效&#xff09;、同步清零clr 同步复位&#xff1a; always(posedge clk) if(!rst_n) b<1’b0; else b<a; 同步复位信号rs…...

ABAP: JSON 报文解析——/ui2/cl_json

1、JSON数组 报文格式如下&#xff0c;是JSON 数组类型的。 [{"I_TYPE":"V","I_BUSINESSSCOPE":"1001"},{"I_TYPE":"V","I_BUSINESSSCOPE":"1002"} ] json转换为SAP内表&#xff1a; TYP…...

android NDK相关,调用C库,JNI,交叉编译,跨平台

首先就是库给我&#xff0c;我先进行开发&#xff08;按照文档&#xff09;&#xff0c;最后进行交叉编译ARM平台。 遇到的问题&#xff1a;我要看到代码效果&#xff0c;所以必须要在真机上跑代码&#xff0c;那么我调用的库就必须是我这个平台适用的&#xff0c;有两种方式&…...

汽车功能安全ISO26262

一、功能安全基本概念及功能安全管理 什么是功能安全 相关标准&#xff1a; 现状&#xff1a; 功能安全的目的和范围&#xff1a; 总体框架&#xff1a; 基本定义&#xff1a;...

Node.js+Express+Nodemon+Socket.IO构建Web实时通信

陈拓 2023/11/23-2023/11/27 1. 简介 Websocket WebSocket是一种在单个TCP连接上提供全双工通讯的协议。特别适合需要持续数据交换的服务&#xff0c;例如在线游戏、实时交易系统等。 Websocket与Ajax之间的区别 Ajax代表异步JavaScript和XML。它被用作一组Web开发技术&…...

广州华锐互动:AR可视化展示昆虫让教学过程更直观生动

随着科技的不断发展&#xff0c;AR&#xff08;增强现实&#xff09;技术已经逐渐走进我们的生活。通过AR技术&#xff0c;我们可以将虚拟的信息叠加到现实世界中&#xff0c;让现实世界变得更加丰富多彩。在这篇文章中&#xff0c;我们将以昆虫为主题&#xff0c;探讨AR增强现…...

.NET开源的处理分布式事务的解决方案

前言 在分布式系统中&#xff0c;由于各个系统服务之间的独立性和网络通信的不确定性&#xff0c;要确保跨系统的事务操作的最终一致性是一项重大的挑战。今天给大家推荐一个.NET开源的处理分布式事务的解决方案基于 .NET Standard 的 C# 库&#xff1a;CAP。 CAP项目介绍 CA…...

如何隐藏选择选项值并用新值替换2个选项?

要隐藏选择选项值并用新值替换2个选项&#xff0c;可以使用JavaScript来实现。 首先&#xff0c;使用JavaScript获取两个选项的值&#xff0c;然后将这两个值设置为新的值&#xff0c;最后将这两个选项的可见性设置为false&#xff0c;以隐藏它们。 例如&#xff1a; <se…...

[读论文][跑代码]BK-SDM: A Lightweight, Fast, and Cheap Version of Stable Diffusion

github: GitHub - Nota-NetsPresso/BK-SDM: A Compressed Stable Diffusion for Efficient Text-to-Image Generation [ICCV23 Demo] [ICML23 Workshop] ICML 2023 Workshop on ES-FoMo 简化方式 蒸馏方式&#xff08;训练Task蒸馏outKD-FeatKD&#xff09; 训练数据集 评测指标…...

机器学习的复习笔记1

机器学习是一种人工智能的分支&#xff0c;它通过让计算机从数据中学习规律和模式&#xff0c;从而实现对未知数据的预测和决策。根据不同的学习方法和任务&#xff0c;机器学习可以分为以下几种类型&#xff1a; 监督学习&#xff1a;在监督学习中&#xff0c;计算机会被提供一…...

【Spring Boot】如何集成Swagger

Swagger简单介绍 Swagger是一个规范和完整的框架&#xff0c;用于生成、描述、调用和可视化RESTful风格的Web服务。功能主要包含以下几点&#xff1a; 可以使前后端分离开发更加方便&#xff0c;有利于团队协作接口文档可以在线自动生成&#xff0c;有利于降低后端开发人员编写…...

优化-查询数据接口太慢

有一个查询接口&#xff0c;主业务表有几万多条数据&#xff0c;没超过十万&#xff0c;由于没有使用分页&#xff0c;所以每次查询都要返回大几万的数据&#xff0c;然后问题是前端页面查询数据显示数据要转很久。 压缩响应体大小 我发现查询的时间是1秒多&#xff0c;但是浏…...

c++ 谓词

1. 一元谓词 #include <iostream> #include<vector> #include<algorithm>using namespace std;class CreaterFive{ public:bool operator()(int val){return val>5;} };int main() {vector<int> vec;for(int i0; i<10; i){vec.push_back(i);}ve…...

一篇总结 Linux 系统启动的几个汇编指令

学习 Linux 系统启动流程&#xff0c;必须熟悉几个汇编指令&#xff0c;总结给大家。 这里不是最全的&#xff0c;只列出一些最常用的汇编指令。 一&#xff0e;数据处理指令 1.数据传送指令 【MOV指令】 把一个寄存器的值(立即数)赋给另一个寄存器&#xff0c;或者将一个…...

算法日记 | C++ 结构体

算法日记 | C 结构体实战&#xff1a;如何优雅地处理“复杂数据”&#xff1f;&#x1f44b; 大家好。今天我们来点轻松但同样重要的基础内功—— 结构体 (Struct) 。很多同学写代码时&#xff0c;还在用 a[100], b[100], c[100] 这样散乱的数组来存数据吗&#xff1f;一旦数据…...

解锁WeMod完整功能的终极指南:Wand-Enhancer让你的游戏体验升级

解锁WeMod完整功能的终极指南&#xff1a;Wand-Enhancer让你的游戏体验升级 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer 你是否曾经因为WeMod的Pro会…...

Cursor Pro破解工具:绕过试用限制的完整技术方案

Cursor Pro破解工具&#xff1a;绕过试用限制的完整技术方案 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your trial re…...

QuPath终极入门指南:快速掌握数字病理分析神器

QuPath终极入门指南&#xff1a;快速掌握数字病理分析神器 【免费下载链接】qupath QuPath - Open-source bioimage analysis for research 项目地址: https://gitcode.com/gh_mirrors/qu/qupath 数字病理分析正成为现代医学研究的重要工具&#xff0c;而QuPath作为一款…...

Windows安卓应用安装器:APK Installer完整使用指南

Windows安卓应用安装器&#xff1a;APK Installer完整使用指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 在Windows电脑上直接运行安卓应用&#xff0c;享受大屏幕…...

如何用Xournal++实现跨平台手写笔记:免费开源PDF批注工具完全指南 [特殊字符]

如何用Xournal实现跨平台手写笔记&#xff1a;免费开源PDF批注工具完全指南 &#x1f680; 【免费下载链接】xournalpp Xournal is a handwriting notetaking software with PDF annotation support. Written in C with GTK3, supporting Linux (e.g. Ubuntu, Debian, Arch, SU…...

taotoken的tokenplan套餐让我们的月度ai支出下降了

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 taotoken的tokenplan套餐让我们的月度ai支出下降了 1. 从按需付费到订阅套餐的转变 作为一个小型开发团队&#xff0c;我们日常需…...

为 OpenClaw 配置 Taotoken 作为后端 AI 提供商的详细步骤

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 为 OpenClaw 配置 Taotoken 作为后端 AI 提供商的详细步骤 对于使用 OpenClaw 框架的开发者而言&#xff0c;其灵活的 provider 机…...

WebPlotDigitizer完整指南:如何从图表图像中快速提取精准数据

WebPlotDigitizer完整指南&#xff1a;如何从图表图像中快速提取精准数据 【免费下载链接】WebPlotDigitizer Computer vision assisted tool to extract numerical data from plot images. 项目地址: https://gitcode.com/gh_mirrors/we/WebPlotDigitizer 你是否曾经面…...

如何快速掌握CoolProp:热物理性质计算的完整指南

如何快速掌握CoolProp&#xff1a;热物理性质计算的完整指南 【免费下载链接】CoolProp Thermophysical properties for the masses 项目地址: https://gitcode.com/gh_mirrors/co/CoolProp 在工程设计和科学研究中&#xff0c;热物理性质计算是每个工程师和研究人员都必…...