Linux的Shell基础知识总结

Shell 简介

  1. 图形界面和命令行的目的一样,都是让用户控制计算机。
  2. 真正控制计算机硬件(CPU、内存、显示器等)的只有操作系统内核(Kernel)。
  3. 图形界面和命令行只是架设在用户和内核之间的一座桥梁。
  4. Shell 是一个应用程序,连接用户和 Linux 内核,让用户能够高效、安全、低成本地使用 Linux 内核。
  5. Shell 不是内核的一部分,它是在内核的基础上编写的一个应用程序,和其它软件没有什么区别。
  6. Shell 有它的特殊性: 开机立马启动,不启动 Shell,用户没法使用 Linux。
  7. Shell 熟练度反映Linux掌握程度,运维工程师、网络管理员、程序员都应该学习 Shell。
  8. Shell 是解释型语言或者脚本语言(Script)。
  9. 编译型语言速度快、硬件要求低、保密性好,适合开发操作系统、大型应用程序、数据库等。脚本语言则灵活、部署容易、跨平台性好,非常适合 Web 开发以及小工具的制作。
  10. Shell 脚本很适合处理纯文本类型的数据,而 Linux 中几乎所有的配置文件、日志文件(如 NFS、Rsync、Httpd、Nginx、MySQL 等),以及绝大多数的启动文件都是纯文本类型的文件。
  11. Shell 脚本是实现自动管理以及自动化运维必备工具。Linux管理或运维,熟练编写Shell 脚本,提升运维工作效率,减少重复劳动

Shell 是如何连接用户和内核的

  1. Shell 接收用户输入的命令,并进行处理,后再将结果反馈给用户,比如输出到显示器、写入到文件等,

  2. Shell 程序本身的功能是很弱的,比如文件操作、输入输出、进程管理等都得依赖内核。

  3. 运行命令,大部分情况下 Shell 都会去调用内核暴露出来的接口,这就是在使用内核,

  4. 调用过程被 Shell 隐藏了起来,它只是在背后默默进行,我们看不到而已。

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

举例说明Shell运行过程

我们都知道在 Shell 中输入cat log.txt命令就可以查看 log.txt 文件中的内容,然而,log.txt 放在磁盘的哪个位置?分成了几个数据块?在哪里开始?在哪里终止?如何操作探头读取它?这些底层细节 Shell 统统不知道的,

  1. 它只能去调用内核提供的 open() 和 read() 函数,告诉内核我要读取 log.txt 文件,请帮助我,
  2. 然后内核按照 Shell 的命令去读取文件,并将读取到的文件内容交给 Shell,
  3. 最后再由 Shell 呈现给用户(其实呈现到显示器上还得依赖内核)。
  4. 整个过程中 Shell 就是一个中介者,它在用户和内核之间"倒卖"数据,只是用户不可见。
相关推荐
864记忆7 分钟前
Linux操作系统自带的测试内存泄漏的命令
java·linux·运维
大柏怎么被偷了25 分钟前
【Linux】文件系统
linux·运维·数据库
Guistar~~42 分钟前
【Linux驱动开发IMX6ULL】交叉编译环境安装
linux·驱动开发
茉莉玫瑰花茶1 小时前
ProtoBuf - 3
服务器·c++·protobuf
KingRumn1 小时前
Linux进程间通信之消息队列(POSIX)
linux·服务器
laoliu19961 小时前
Odoo 18企业版源码 包含 部署教程
运维·服务器
唐墨1232 小时前
linux kernel源码解析之:smp系统cpu热插拔
linux
守城小轩2 小时前
基于Chrome140的Quora账号自动化(关键词浏览)——运行脚本(三)
运维·自动化·chrome devtools·指纹浏览器·浏览器开发
未来之窗软件服务2 小时前
幽冥大陆(五十五)ASR SetThreadInformation C语言识别到自动化软件
运维·自动化·asr·东方仙盟·操作系统级别错误