阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

当你敲下命令的瞬间,发生了什么?

279次阅读
没有评论

共计 2082 个字符,预计需要花费 6 分钟才能阅读完成。

导读 我们总是在敲命令,但是有没有思考当我们敲下命令的瞬间,我们的操作系统为我们做了什么呢?本文主要讲一讲当我们敲下命令按了回车,系统做了什么事情。希望可以让我们对于系统的理解更加深入。

日常工作中,我们总是在敲命令,但是有没有思考当我们敲下命令的瞬间,我们的操作系统为我们做了什么呢?下面我们主要讲一讲当我们敲下命令按了回车,系统做了什么事情。希望可以让我们对于系统的理解更加深入。

我们都知道,linux 里面一切都是文件,那么其实我们敲的命令也不例外,命令也是文件。那当我们敲下比如“pwd”命令的时候,发生了什么事情呢?

1、了解 shell

计算机硬件是由运算器、控制器、存储器、输入输出设备等设备组成的,而能够让机箱内各种设备各司其职的叫做系统内核。系统内核负责驱动硬件、管理活动和分配 / 管理硬件资源,它对于计算机太重要了,所以不可以让用户直接操作。

因为用户不能直接控制硬件,也不能直接操作系统内核,于是便需要基于“系统调用接口”开发出的程序 / 服务来满足用户的日常工作,那么 shell 就是人与硬件之间的翻译官。

用户将一些命令“告诉”Shell,它就会调用相应的程序服务执行工作啦,很厉害吧~~ 现在包括红帽系统在内的许多热门 Linux 系统主流默认字符 Shell 是Bash(Bourne-Again SHell)。

bash 拥有以下四点优点:

1. 通过上下方向键来调取过往执行过的命令。2. 命令或参数仅需输入前几位就可以用 tab 键补全。3. 强大的批处理脚本。4. 实用的环境变量。
2、检查命令的路径

比如我们写一个“ls”命令给系统,系统如何知道我们写的这个命令是什么意思呢?

首先,第一步骤阶段是判断用户是否以绝对路径方式输入命令。如果是绝对路径(如 /bin/ls)的话则直接执行。如果不是的话,系统就直接进入下一步的判断。

3、别名命令?

然后,系统会判断是不是别名命令。即用一个自创的命令名称来替换原本的命令名称。

咱们可以用 alias 命令来创建自己的命令别名,格式为:“alias 别名 = 命令”,若要取消一个别名的话则是用 unalias 命令,格式为:“unalias 别名”。

例如咱们以前用 rm 命令删除文件的时候都要被要求再确认是否执行删除操作,其实这就是 Linux 系统为了防止用户误删除文件而特意设置的 rm 别名命令,咱们可以将它取消掉:

[root@localhost ~]# ls
anaconda-ks.cfg Documents initial-setup-ks.cfg Pictures Templates
Desktop Downloads Music Public Videos
[root@localhost ~]# rm anaconda-ks.cfg 
rm: remove regular file‘anaconda-ks.cfg’? y
[root@localhost ~]# alias rm
alias rm='rm -i'
[root@localhost ~]# unalias rm
[root@localhost ~]# rm initial-setup-ks.cfg 
[root@localhost ~]#
4、内部 / 外部命令?

然后,就是由 SHELL 解释器(Bash)来判断用户输入的是内部命令还是外部命令。

所谓的内部命令是解释器内部的指令(在启动时就调入内存的,执行效率高),会被直接的执行,而绝大部分的时候都会是外部命令(系统的软件功能,用户需要时才从硬盘调入内存的),交由给第四步骤来继续处理,当然您还可以使用“type 命令名称”来手工判断是内部命令还是外部命令,也是很有趣的。

5、查找命令

当 bash 判断该命令是外部命令的时候,我们需要系统在多个路径中查找用户输入的命令文件,而定义这些路径的变量叫做 PATH,可以简单把它理解成是“解释器的小助手”,作用是告诉解释器要执行的命令可能存放到了那里,然后 bash 就会乖乖的在这些目录中逐个查找。PATH 是由多个路径值组成的变量,每个路径值之间用冒号间隔,咱们对这些路径的增加和删除操作就是在直接影响 bash 解释器搜索 linux 命令的位置。

[root@linuxprobe ~]# echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin
[root@linuxprobe ~]# PATH=$PATH:/root/bin
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin
经典问题:为什么不能在 $PATH 中添加进当前目录 (.) 那?

虽然将 $PATH 变量添加了当前目录 (.) 会在一些情况让用户免去输入命令所在路径的麻烦,但如果黑客在比较常用的公共目录 /tmp 中存放了一个名为 ”ls“ 或 ”cd“ 的同名木马文件,那么用户就极有可能错误的执行了。

所以作为一名谨慎的、有经验的运维人员在接手了一台 Linux 系统后一定会在执行命令前先检查下 PATH 变量中是否有可疑的目录,您可以使用 env 命令来查看到 linux 系统中所有的环境变量。

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-24发表,共计2082字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19348
评论数
4
阅读量
7801340
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...
亚马逊云崩完,微软云崩!当全球第二大云“摔了一跤”:Azure 宕机背后的配置风险与警示

亚马逊云崩完,微软云崩!当全球第二大云“摔了一跤”:Azure 宕机背后的配置风险与警示

亚马逊云崩完,微软云崩!当全球第二大云“摔了一跤”:Azure 宕机背后的配置风险与警示 首先来回顾一下 10...
星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

  星哥带你玩飞牛 NAS-16:不再错过公众号更新,飞牛 NAS 搭建 RSS 对于经常关注多个微...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你 为什么要用宝塔跑分? 宝塔跑分其实就是对 CPU、内存、磁盘、IO 做...
颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

  颠覆 AI 开发效率!开源工具一站式管控 30+ 大模型 ApiKey,秘钥付费 + 负载均衡全...
国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号 AI 知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率 大家好,我是星哥,...
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...