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 就是一个中介者,它在用户和内核之间"倒卖"数据,只是用户不可见。
相关推荐
微刻时光6 分钟前
Docker部署Nginx
运维·nginx·docker·容器·经验
小安运维日记21 分钟前
CKA认证 | Day3 K8s管理应用生命周期(上)
运维·云原生·容器·kubernetes·云计算·k8s
小han的日常1 小时前
接口自动化环境搭建
运维·自动化
小扳1 小时前
Docker 篇-Docker 详细安装、了解和使用 Docker 核心功能(数据卷、自定义镜像 Dockerfile、网络)
运维·spring boot·后端·mysql·spring cloud·docker·容器
运维小文1 小时前
服务器硬件介绍
运维·服务器·计算机网络·缓存·硬件架构
小周不摆烂1 小时前
丹摩征文活动 | 丹摩智算平台:服务器虚拟化的璀璨明珠与实战秘籍
大数据·服务器
中云DDoS CC防护蔡蔡1 小时前
为什么海外服务器IP会被封
服务器·经验分享
是安迪吖1 小时前
nfs服务器
运维·服务器
鱼骨不是鱼翅1 小时前
模拟回显服务器
运维·服务器
运维佬1 小时前
CentOS 9 配置网卡
linux·centos