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 就是一个中介者,它在用户和内核之间"倒卖"数据,只是用户不可见。
相关推荐
洛阳纸贵Coco.Leo.YI2 分钟前
10分钟在Windows11下Ubuntu内安装docker-Version28.51
linux·ubuntu·docker
阿巴~阿巴~3 分钟前
Ubuntu 20.04 安装 Redis
linux·服务器·数据库·redis·ubuntu
aitav019 分钟前
⚡ arm 32位嵌入式 Linux 系统移植 NTP 服务
linux·arm开发·ntp
weixin_4569042724 分钟前
工业自动化通信控制
运维·struts·自动化
爱奥尼欧38 分钟前
【Linux笔记】网络部分——socket 编程 TCP实现多台虚拟机使用指令访问云服务器
linux·服务器·网络
yolo_guo43 分钟前
sqlite 使用: 03-问题记录:在使用 sqlite3_bind_text 中设置 SQLITE_STATIC 参数时,处理不当造成的字符乱码
linux·c++·sqlite
m0”-“0m1 小时前
MySQL、Nignx和Docker在Linux上的安装详解
linux·数据库·mysql
野犬寒鸦1 小时前
从零起步学习Redis || 第十章:主从复制的实现流程与常见问题处理方案深层解析
java·服务器·数据库·redis·后端·缓存
luopandeng1 小时前
amd npt技术 对比 intel ept 技术
java·linux·网络
---学无止境---2 小时前
Linux中kmalloc内存分配函数的实现
linux