Linux 【杂谈】基础知识(二)
前言
本文主要是讲解在Linux指令阶段,一些比较重要的是又比较琐碎的相关知识。
本文对标的是
【Linux 第三讲 --- 基础指令(三)-CSDN博客】 【Linux 第四讲 --- 基础指令(四)-CSDN博客】
中出现的新的概念。
目录
前言
一、如何理解Shell
1.0Shell的概念
1.1Shell的运行原理
1.2、为啥需要Shell呢?
1.3、Shell 的工作流程
二、重定向
2.1重定向的概念
2.2重定向的分类
三、日志
3.1日志的概念
四、时间戳
时间戳
注意事项
五、管道
总结
一、如何理解Shell
1.0Shell的概念
我们都知道Windows以图形化界面为交互方式,而Linux以命令行界面为交互方式。Windows和Linux的交互方式虽然不同,但本质上是一样的,图形化界面和命令行界面都是为了让用户进行相关操作,而图形化界面和命令行界面就是我们所说的“外壳程序”。
而Shell 是用户与操作系统内核(Kernel)之间的关键接口,充当“命令解释器”的角色,允许用户通过输入指令或脚本来控制系统功能。
Shell最简单的定义就是“命令行解释器”:
1)将使用者的命令翻译给核心(kernel)处理。
2)将核心的处理结果翻译给使用者。
3)保护OS,对于用户的非法请求,直接拦截
1.1Shell的运行原理
Shell运行原理:
1)创建子进程,让子进程进行命令行解释,当然有些特殊的指令如cd指令是由bash直接执行的
2)子进程出现任何问题,都不影响父进程Shell。
对比到Windows当中就是,我们每运行一个程序就是创建了一个子进程,例如,登录微信、QQ。而这些子进程当中任何一个进程出现问题,都不会影响父进程,例如,当你的QQ出现卡死情况(程序异常)或你的QQ被关掉(程序终止),但其他子程序仍然可以运行。
1.2、为啥需要Shell呢?
很简单,操作系统也就是计算机不认识我们的字符串,像我们平时写的指令什么的,如果没有Shell,它是无法被操作系统识别的,并执行的。那这就要求在用户与内核当中存在一种角色,翻译用户的指令,并将操作系统的执行结果返回。
1.3、Shell 的工作流程
-
读取输入
从终端、脚本或管道获取命令。 -
解析语法
分割命令与参数,处理特殊符号(如管道|
)。 -
执行命令
-
内部命令:直接由 Shell 处理(如
cd
)。 -
外部程序:通过系统调用启动(如
/usr/bin/grep
)。
-
-
返回结果
输出至屏幕、文件或传递给下一个命令。
注意: Shell只是所有外壳程序的统称,例如在centos 7当中的外壳程序名叫bash,不同平台的Shell实际指代不同。
二、重定向
2.1重定向的概念
重定向 是一种将程序的输入或输出从默认位置(如键盘、屏幕)转移到其他位置(如文件、设备)的机制。主要通过符号来实现,常见于命令行环境
像我们在学习echo指令的时候,我们发现如果echo后接字符串,那么echo会将字符串输出到屏幕上,但是在添加一些特殊的符号使用重定向,就可以将字符流写入其他文件当中。
2.2重定向的分类
1.输出重定向
- 上面第二个输出方式就叫做输出重定向
- 输出重定向使用的符号是“>”
2.输入重定向
1.输入重定向 是指将程序的标准输入从默认的键盘输入改为从其他来源(如文件、字符串或另一个命令的输出)读取数据。
2.输入重定向的符号是“<”
3.追加重定向
- 在命令行中,追加重定向是指将程序的输出追加到文件的末尾,而不是覆盖原有内容。与普通的覆盖重定向(
>
)不同,适用于日志记录、数据累积等场景。- 追加重定向的符号是“
>>”。
三、日志
3.1日志的概念
日志是计算机系统、应用程序或设备在运行过程中记录的详细事件或状态信息,主要用于追踪活动、排查问题、分析性能或审计安全。
日志是系统的“监控摄像头”,帮你事后回放发生了什么,是开发和运维的重要工具。
当然在这里仅是介绍一下啥是日志,关于如何通过程序打印,保存日志,我们会在后面的项目编写当中遇到的。
四、时间戳
时间戳
时间戳是一个很有意思的概念,因为每个地方时间都不一样,计算机界为了同一时间,就把1970年00:00作为一个起点,之后每过一秒加1,一直持续到现在,由于我国的时区与外国的不同,所以当我们的时间戳是以北京时间,1970年1月1号的上午8点开始的。
注意事项
-
时区问题:确保时间戳的时区一致(如UTC+8或UTC)。
-
精度差异:Unix时间戳可以是秒(10位)、毫秒(13位)、微秒(16位)。
-
存储优化:在数据库中常用整数存储时间戳(节省空间,便于索引)。
五、管道
在我们的指令章节当中学习到了,如何读取大文件,但是它们往往是要创建一个临时文件。
这样写显然有点麻烦,而操作系统提供了一种简便的方式可以实现该操作,该方式需要用到“管道”。
我们知道,管道是用于传输某种资源的(下水管道用于传输水,天然气管道用于传输天然气),而计算机上面最重要的资源就是数据。
在命令行中管道用“|”来表示,管道左边接收产生的数据,右边读取数据。
注:管道通常是数据交流(进程间通信)的一个重要方法,关于它的详细使用,我们会在进程间通信会再谈的。
总结
本文的主要是对前面文章当中出现的新概念,大家对这些新概念,有个大概的了解即可,我们下期见。