探索交互的本质:从指令到界面的演进与Linux基础指令的深入剖析
目录
1.指令 vs 界面//选读
1.1交互的需求
满足需求的第一阶段-指令
满足需求的第二阶段-界面
1.2 指令 和 界面交互
区别
2.操作系统介绍
2.1 举例说明
驱动软件层
2.2 为什么要有操作系统?
0x03 为什么要进行指令操作?
3.Linux基本指令
ls 指令
当前路径与上级路径( . 和 .. )
pwd 指令
cd 指令
touch 指令
mkdir 指令
rmdir 指令
rm 指令
编辑
sum
1.指令 vs 界面//选读
指令,可能有的小伙伴是第一次听,但是它确实历史悠久,而且先于界面
1.1交互的需求
- 计算机被创造出来,是为了为人提供服务的。但是为了让计算机更好的为人服务,前提是人必须的和计算机交互起 来。
- 类比一下另一种机器,那就是汽车,汽车是为了给人提供交通服务的,但是造出来之后,需要人通过某种 方式去控制汽车,当然在汽车里,人和汽车的交互方式是通过方向盘,油门去交互的
满足需求的第一阶段-指令
打字机的产生是在19-20世纪,反正是远远早于计算机发明的。所以我们要和新发明的计算机进行交互,人们先想到 的是借鉴一下打字机的输入方式,来进行常规交互,慢慢演化下,就有了现在的键盘。既然早期交互硬件只有键盘, 那么初期的交互方式,也变很顺理成章的是指令方式喽(又没有鼠标可以点)。
- 思考一下,为什么键盘现在的按键布局,是现在这个样子的呢?
1946年2月14,世界第一台计算机ENIAC问世,后因交互的需求,借鉴了打字机键盘,就有了初期的指令交互方式
满足需求的第二阶段-界面
虽然我们还没有正式操作过,但是直觉告诉我们,指令这种方式,可能不太方便。
一个问题想问问大家,PC时代,要点击界面,需要有鼠标点击,那么, 是先有鼠标,还是先有真正意义上的图形化界面呢?答案是,先有鼠标,先看看世界上第一个鼠标的样子吧。

美国人道格拉斯·恩格尔巴特发明。这个样子的鼠标在1968年面世。
有了硬件设备的支持,同时指令用起来给一般用户的体验特别不好,再这样的需求促进下,乔布斯在1979年参观完 施乐公司Xerox Alto(阿尔托)系统之后,迅速模仿并商业化出来了图形化界面交互式的方式,并诞生了世界上第一 台商业图形化交互方式的电脑:lisa(当然,后面因为成本问题,效果并不理想,后来乔布斯又继续改良,就有了划 时代产品Macintosh(麦金塔),也就是第一代mac笔记本,乔布斯就此封神)
与此同时,比尔盖茨在借鉴苹果lisa下,带着他的windows 1.0,后续在商业上迅速跟进。 乔布斯对苹果的定位是一家计算机科技公司,属于软硬件都做的那种,有自己的软件操作系统,也有自己的硬件设计 方案,而且乔布斯是一个神一样的产品经理,所以对软硬件的整合能力,对用户的理解,都造就了一款符合事宜,又 设计精良的电脑问世。mac 1问世之后,迅速走红。
可是,走向世界的是苹果,覆盖世界的却是微软。 比尔盖茨看到这样的苹果公司,走的早,产品还好。如何赢?差异化。
比尔盖茨对微软的定义是一家软件公司,也就是只负责软件,可是计算机毕竟是一个软硬件结合的产物,于是微软便 找了自己的硬件合作方intel(开始是IBM,大家理念有差异,散了)开始搞事。合作的最大好处是成本好控制,生产效 率高,毕竟是产业分工的产物,慢慢的windows便席卷全球,就有了摆在我们面前的windows操作系统~
- 苹果的操作系统,一般都在苹果的计算机上跑 微
- 软的windows操作系统,什么品牌的电脑都能跑,像联想,dell,华为,鸿基,东芝等。细心的同学应 该能发现,所有的这些品牌的计算机上面搭载的CPU都是Intel的X86...
我们把时间先罗列一下
- 打字机产生1808年7月24日(衍生键盘)
- 1946年2月14,世界第一台计算机ENIAC问世因为有交互的需求,计算机交互便借鉴打字机的键盘,慢慢演化,就有了键盘,所以当时人们对交互的想 象只能是命令行
- 鼠标在1968年面世 1973年施乐公司Xerox Alto(阿尔托)系统,世界上第一个非商业图形化操作系统
- 1979年乔布斯和施乐进行利益交换,带团队参观施乐计算机研究中心,借鉴并商业化带UI的操作系统, 后来衍生出来mac图形化界面(期间也有windwos的故事)
- 随后,微软推出了自己的桌面级操作系统windows 1.0
- 两家商业公司,两个老总,开始撕
- 就有了现在的PC界面交互方式
最后,有一个问题,就是为什么电子计算机,操作系统,各种电子设备会在1950~2000年这50年大量爆发。
这个问题有点远,有兴趣的老铁,可以在了解一下,当时的时代背景,你可能会有不一样的收获
1.2 指令 和 界面交互
了解过历史之后,我们能理解,为何会有指令交互和界面交互这样的现象,但是还有两个问题的在讨论一下
- 这两种方式,在操作系统层面有啥区别?
- 既然界面方式是发展的产物,为什么还要在学命令行?
区别
区别这个问题,比较难理解,目前也不打算谈。但是在功能定位上,是一样的,都是让用户进行和系统进 行交互。也就是说,界面的点击操作,一般也有对应的命令与之对应? 是的
为什么要学命令行
- windows/苹果图形界面,是商业化的产物,也就是使用必须简单小白,才能有人用,so what?
- 严格意义上讲,我们必须要学一下Linux命令行。因为企业后端有大量的服务器,服务器上跑的全是 Linux,Linux上部署的全是服务(比如:qq的服务,王者荣耀,LOL的服务等),无论是成本角度,还是 资源效率角度,后台的服务器,都不会大量给你也安装一个界面让你来控制(界面也是要占系统资源的 哦)但是服务器上面的服务需要维护,需要管理,也就衍生大量的对基本操作的需求。也就是企业的用人 需求
- Linux命令行是职业化的表现,想职业化/成大神,必须掌握Linux
- Linux命令行,更接近系统原生,用的多了,面对很多系统现象,会更好理解
严格意义上讲,光光学习Linux操作是远远不够的。
后续先把平台熟悉起来,后面还有系统,网络,这个后面有机会再说
2.操作系统介绍
软件实际上是可以操作硬件的,那这个操作具体是怎么完成的呢?
- 在计算机的整个结构中,最底层是硬件。所谓的硬件包括键盘、显示器、网卡、显卡等各种设备。所有这些底层设备都叫硬件。
- 在硬件层上还存在一个软件层,称为“驱动软件层”。我们可以通过驱动软件层帮助上层实现对硬件的基本访问。每种硬件都有对应的驱动程序。
2.1 举例说明
在 Windows 中使用鼠标时,如果鼠标未插入计算机,滚动鼠标没有反应。但当鼠标插入 USB 接口的一瞬间,可能还是没有反应,过了几秒后,电脑发出驱动提示音,此时鼠标便和电脑相连接了。
当我们新增一个设备时,插入的短暂期间是没有反应的,过了一会儿才有反应。这个过程中,操作系统在根据硬件选择对应的驱动程序。操作系统的核心工作是提供访问硬件的接口。
一般而言,硬件的驱动程序由操作系统获取与安装,对用户是透明的。
驱动软件层
驱动软件层帮助上层实现对硬件的基本访问。再往上,还有一层软件层,我们称之为操作系统内核。狭义上讲,这就是我们的操作系统。操作系统内部一般由以下四大构成:
- 进程管理
- 文件管理
- 内存管理
- 驱动管理
操作系统的核心工作是帮助我们进行上述内容的管理工作。再往上就是用户层,比如图形化界面、各种库以及用户的一些应用程序等。
2.2 为什么要有操作系统?
举例
比如在玩《CSGO》时,如果电脑频繁卡死重启,或者动不动蓝屏,这样的游戏体验将非常差。操作系统的管理功能确保我们有一个良好的使用体验。
管理的目的
- 对上:提供一个良好稳定的运行环境。
- 对下:管理好软硬件资源。
从而整体达到提高操作效率的目的,这就是操作系统。
总结:操作系统(OS)是一款用于管理软硬件资源的软件。
不同种类的操作系统
就像现实中有不同的银行(中国银行、中国建设银行、中国农业银行),我们的操作系统也有不同的种类。尽管它们各自有独特之处,但最终都是围绕“对上和对下”展开的。
0x03 为什么要进行指令操作?
对于非专业人员,指令操作并不必要。对于专业人员,可以必要,也可以不必要。然而,对于我们学习操作系统原理、编程和指令操作,掌握这些是必须的。
- 早期的操作系统是通过键盘给 OS 和计算机传递数据的。所有操作系统刚开始时都支持指令操作。我们的操作系统也支持指令操作,比如 cmd 命令提示符。
- 虽然指令操作成本高,但操作系统公司为了取悦用户,开发了图形化界面。然而,学习指令操作更接近操作系统的特性,有助于我们更好地掌握操作系统。
sum:

了解之后让我们来揭开linux的神秘面纱吧
3.Linux基本指令
下面让我们来学习一些基本的指令吧
ls 指令
语法:
ls [选项] [目录或文件]
功能:列出目录下的所有子目录与文件,或显示文件名及其他信息。
| 选项 | 说明 |
|---|---|
| -a | 列出所有文件,包括以 . 开头的隐含文件。 |
| -d | 将目录像文件一样显示,而不是显示其下的文件。 |
| -i | 输出文件的 i 节点的索引信息。 |
| -k | 以 k 字节的形式表示文件的大小。 |
| -l | 列出文件的详细信息。 |
| -t | 以时间排序。 |
| -R | 递归列出所有子目录下的文件。 |
举例:
ls -l:列出文件的详细信息。ls -a:列出所有文件,包括隐藏文件。

为什么都没有呢,因为我们要先建立一个文件~

touch建立一个文件就可以显示啦,我们现在还没有目录,可以先用 mkdir 创建出一个目录出来
!输入指令,一定要记得带上空格

d1就是一个我们创建出来的目录啦,讲一个 ls 补充了这么多指令,就是为了做一个 ls 的演示,相当于是一个 "起手式" 。只是为了能快速操作起来,我们下面还要对我们刚才提前用到的指令详细介绍一下~
ls -l

我们可以发现指令是可以带选项的
我们存空文件的时候会占内存吗?会的,因为还有文件自身的属性
文件的属性是数据吗?也是数据,是数据就要存储
文件=文件内容+属性
ls -a

复合使用

当前路径与上级路径( . 和 .. )
其实,任意目录下都会存在两个隐藏文件:
. (当前路径)
.. (上级路径)
它们都是以 . 开头的。如果我们想回到上级路径,该如何操作?
cd .. :回到上级路径

`/home/lvy1007` 是一个具体的文件路径,类似于Windows中的路径
C:\Users\xumen\Desktop\map
`/` 是Linux系统中的根目录,相当于Windows下的”C:\“。

要返回到 `/home/lvy ` 目录,可以使用 `cd /home/lvy` 命令。
`.` 是当前路径的表示,比如 `./a.out` 表示当前目录中的 `a.out` 文件。
`ls` 命令有很多选项,其中最常用的是 `-a` 和 `-l`。
那当前路径 . ,这一个点,有什么用?
📜 我们在上一章试着写 Hello Linux 时,当时就用到了 ./a.out
(./ --当前路径下,这是一个相对路径的使用,绝对路径一般是从/home开始的)
路径定位,唯一性的原因,绝对路径
每个儿子都只有一个爸爸,从根目录开始是绝对路径
- Linux系统中的文件路径是一个多叉树的结构,根目录 `/` 是路径的起始点。路径定位是具有唯一性的。
- 绝对路径是指从根目录开始的完整路径例如:`/home/lvy/test.c` ,而相对路径是相对于当前位置的路径。
- 相对路径容易失效,而绝对路径是永远有效的。
- 在使用 `cd` 命令时,可以使用绝对路径或相对路径。
pwd 指令
语法:pwd
功能:显示用户当前所在的目录。
cd 指令
语法:cd 目录名
功能:改变工作目录。
举例:
cd ..:返回上级目录。cd /home/user/:进入绝对路径。cd ../dir/:进入相对路径。cd ~:进入用户家目录。cd -:返回最近访问的目录。
touch 指令
语法:touch [选项]... 文件...
功能:更改文件或目录的日期时间,或新建一个不存在的文件。
| 选项 | 说明 |
|---|---|
| -a | 只更改存取时间。 |
| -d | 使用指定的日期时间,而非现在的时间。 |
| -f | 解决BSD版本touch指令的兼容性问题。 |
| -m | 只更改变动时间。 |
| -r | 把指定文档或目录的日期时间设成和参考文档或目录的日期时间相同。 |
| -t | 使用指定的日期时间。 |
对于 touch 修改文件时间等用法我们放到讲开发工具 makefile 的时候再讲,让我们先来用touch创建一个


mkdir 指令
语法:mkdir [选项] dirname...
功能:在当前目录下创建一个名为 “dirname”的目录。
| 选项 | 说明 |
|---|---|
| -p, --parents | 如果路径中的某些目录尚不存在,自动建立这些目录。 |
举例:
mkdir -p test/test1:递归建立多个目录。
rmdir 指令
语法:rmdir [-p] [dirName]
功能:删除空目录。
| 选项 | 说明 |
|---|---|
| -p | 当子目录被删除后如果父目录也变成空目录的话,连带父目录一起删除。 |
rm 指令
语法:rm [-f-i-r-v] [dirName/dir]
功能:删除文件或目录。
| 选项 | 说明 |
|---|---|
| -f | 强制删除,即使文件属性为只读。 |
| -i | 删除前逐一询问确认。 |
| -r | 删除目录及其下所有文件。 |
sum
管理 贯穿
- 操作系统 是一款做 软硬件管理 的软件
- 计算机是层状结构,所有 软件操作都会定向向下 贯穿 转化为硬件行为
先有指令,再有图形
| touch | 创建文件 |
| mkdir | 创建目录 |
| rm -r | 删除 |
相关文章:
探索交互的本质:从指令到界面的演进与Linux基础指令的深入剖析
目录 1.指令 vs 界面//选读 1.1交互的需求 满足需求的第一阶段-指令 满足需求的第二阶段-界面 1.2 指令 和 界面交互 区别 2.操作系统介绍 2.1 举例说明 驱动软件层 2.2 为什么要有操作系统? 0x03 为什么要进行指令操作? 3.Linux基本指令 l…...
uniapp vue分享功能集成
分享必须通过button设置open-type"share"拉起 <view class"img horizontal center" style"margin-right: 20rpx;"><image class"img" :src"src" click"onTapClick(xxx)" style"z-index: 1;" …...
软件工程实务:软件产品
目录 1、软件产品的基本概念 2、软件工程是什么? 为什么产生软件工程? 软件工程是做什么的? 3、定制软件和软件产品的工程比较 4 、软件产品的运行模式 5、软件产品开发时需要考虑的两个基本技术因素 6、产品愿景 7、软件产品管理 8、产品原型设计 9、小结…...
带侧边栏布局:带导航的网页
目录 任务描述 相关知识 HTML(HyperText Markup Language) CSS(Cascading Style Sheets): 编程要求 任务描述 在本关中,你的任务是创建一个带侧边栏和导航的网页布局。这种布局通常用于网站或应用程序,其中侧边栏…...
react学习-redux快速体验
1.redux是用于和react搭配使用的状态管理工具,类似于vue的vuex。redux可以不和任何框架绑定,独立使用 2.使用步骤 (1)定义一个reducer函数(根据当前想要做的修改返回一个新的状态) (2࿰…...
基于flask的网站如何使用https加密通信-问题记录
文章目录 项目场景:问题1问题描述原因分析解决步骤解决方案 问题2问题描述原因分析解决方案 参考文章 项目场景: 项目场景:基于flask的网站使用https加密通信一文中遇到的问题记录 问题1 问题描述 使用下面的命令生成自签名的SSL/TLS证书和…...
记C#优化接口速度过程
前提摘要 首先这个项目是接手的前一任先写的项目,接手后,要求对项目一些速度相对较慢的接口进行优化,到第一个速度比较慢的接口后,发现单接口耗时4-8秒,是的,请求同一个接口,在参数不变的情况下…...
windows环境如何运行python/java后台服务器进程而不显示控制台窗口
1.通常我们在windows环境下使用Java或Python语言编写服务器程序,都希望他在后台运行,不要显示黑乎乎的控制台窗口: 2.有人写了一个bat文件: cd /d D:\lottery\server && python .\main.py 放到了开机自启动里,可是开机的…...
记周末百度云防御CC攻击事件
今天一早,收到百度智能云短信提醒,一位客户的网站遭遇了CC攻击。 主机吧赶紧登陆客户网站查看,是否正常,看是否需要通知客户。 结果打开正常,看情况并没什么影响,那就等攻击结果了再看吧。 下午的时候&am…...
vue中v-bind控制class和style
当使用v-bind指令控制class和style时,可以通过动态绑定的方式根据不同的条件来添加或移除class,以及改变元素的样式。 1. 控制class 通过v-bind:class可以动态绑定class属性。可以使用对象语法、数组语法或者计算属性来实现。 对象语法:使用…...
【面试经典150题】【双指针】392. 判断子序列
题目链接 https://leetcode.cn/problems/is-subsequence/?envTypestudy-plan-v2&envIdtop-interview-150 题解思路 首先如果s的长度大于t的长度,那么s肯定不是t的子序列如果s的长度等于t的长度,那么st的情况下s才是t的子序列如果s的长度小于t的长…...
禁用PS/Photoshop等一系列Adobe旗下软件联网外传用户数据操作
方案一: 下载火绒杀毒,在联网请求上禁用Adobe软件的联网请求,甚至还可以额外发现哪些是它要想要偷偷摸摸干的。 方案二: 最后注意: 用盗版软件只是获得了使用权!...
C语言猜输赢游戏
目录 开头游戏的程序游戏的流程图结尾 开头 大家好,我叫这是我58,现在,请你看一下下面的游戏程序。 游戏的程序 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <Windows.h> int main() {int i 1;int ia 0…...
Rust 异步 trait 的实现困难
在 Rust 中,异步编程是使用 async/await 语法来实现的。与传统的同步编程不同,异步编程涉及到的特性较多,其中一个重要的特性是异步 trait。 异步 trait 是具有异步方法的 trait。在 Rust 中,trait 方法默认是同步的,…...
腾讯云和windows11安装frp,实现内网穿透
一、内网穿透目的 实现公网上,访问到windows上启动的web服务 二、内网穿透的环境准备 公网服务器、windows11的电脑、frp软件(需要准备两个软件,一个是安装到公网服务器上的,一个是安装到windows上的) frp下载地址下载版本 1.此版本(老版…...
Solidity智能合约事件(event)
文章目录 Solidity智能合约事件(event)什么是event事件event有什么作用日志内容位于区块链的什么地方?【重要】以太坊交易获取如何在 Solidity 中使用事件?参考 Solidity智能合约事件(event) 什么是event EVM有一个日志功能,用于将数据“写…...
第2章 Rust初体验7/8:错误处理时不关心具体错误类型的下划线:提高代码可读性:猜骰子冷热游戏
讲动人的故事,写懂人的代码 2.6.6 用as进行类型转换:显式而简洁的语法 贾克强:“大家在查看Rust代码时,可能会注意到这一句。在这里,如果我们不使用as i32,编译器会报错,因为它在u32中找不到abs()方法。这是因为prev和sum_of_two_dice都是u32类型,u32类型并不支持abs(…...
大话C语言:第24篇 预处理
1 C语言编译流程 C语言的编译流程包括: 预编译:将.c 中的头文件展开、宏展开,生成的文件是.i 文件。gcc指令:gcc -E file.c -o file.i 编译:将预处理之后的.i 文件生成 .s 汇编文件。gcc指令:gcc -S file…...
React如何配置路由
ReactTs配置路由 安装依赖 npm i react-router-dom在routers下面创建index.tsx import { RouteObject } from react-router-dom import React from react import PageA from /views/PageA import PageB from /views/PageB const routes: RouteObject[] [{path: /,element: …...
MAC使用初体验+入门
之前从来没有使用过MAC,这次拿到了一个 不得不说MAC度过适应期后用起来很舒服,续航长,触控板舒服,轻薄无比 我前期过度的时候记录的一部分快速指南,掌握如下一些电脑常识 可以做到正常使用了 基本操作 在 Mac 上使用桌…...
Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...
