前言
计算机软硬件体系结构
| 层状结构 | |
|---|---|
| 应用软件 | Word,Matlab |
| 操作系统 | Windows,Linux |
| 设备驱动 | 声卡驱动 |
| 硬件 | CPU,内存,磁盘,显示器,键盘 |
操作系统概念
操作系统
是一款进行软硬件资源管理的软件
例子
比如在学校里的各种设施,如机房、实验室、体育场、宿舍、食堂…,都叫做硬件
在学校宿舍楼里的楼管,就是对一栋楼的硬件资源做管理;机房有微机老师;大门有门卫大爷;图书馆有图书管理员…
每一种硬件都有特定的驱动来管理这个硬件在这个基础上,学校层面也有各种各样其他的管理,比如学生什么时候上下课;什么时候放假;举办的各种活动…都需要有底层的软硬件来配合
操作系统就相当于学校里的一套领导班子
为什么要进行软硬件资源管理
把软硬件资源管理好,给上层的用户提供良好的稳定的运行服务——工具
承上启下
使用XShell远程登录Linux
安装XShell
我们购买的云服务器,是远端云服务器,其实际地点可能在北京等地
而自己的计算机是在其他地方
XShell:远程登录软件
其中的远程登录或者输入指令,所有行为都是通过网络来进行的
![![[Pasted image 20240507163541.png]]](https://i-blog.csdnimg.cn/blog_migrate/c7333e80ab99bf66879ccf8c9bb5f6df.png)
使用命令行登录
输入
ssh root@你的云服务器公网IP
将云服务器的信息添加到列表当中
![![[Pasted image 20240507164017.png]]](https://i-blog.csdnimg.cn/blog_migrate/c67bfd75a5a2967a7e37ef8b4ab8995a.png)
点击新建
![![[Pasted image 20240507164211.png]]](https://i-blog.csdnimg.cn/blog_migrate/3fe594ac6f96902a3da8f02b8266d4da.png)
输入常规内容,其他的都不要动,点击确定
![![[Pasted image 20240507164301.png]]](https://i-blog.csdnimg.cn/blog_migrate/b9207e6d6f4fd0a0aee5d8dadb9f7c23.png)
这样打开会话弹窗里面,就出现了对应的机器
这样以后登录的时候,点击它,就不需要再去命令行输入指令了
![![[Pasted image 20240507164424.png]]](https://i-blog.csdnimg.cn/blog_migrate/859f09664d6124a3ff00eda38fd22c55.png)
点击连接,首次需要输入用户名

点击确认
接下来输入密码登录就可以了
XShell里的复制粘贴
- 复制:ctrl + insert
- 粘贴:shift + insert
ctrl + c / ctrl + v 是不行的
XShell常用功能
-
全屏/返回全屏:alt+enter
-
可以选择配色方案
![![[Pasted image 20240507165801.png]]](https://i-blog.csdnimg.cn/blog_migrate/66a3c632d80e7103e9f98267aa672afc.png)
-
可以设置字体
![![[Pasted image 20240507165820.png]]](https://i-blog.csdnimg.cn/blog_migrate/cd5e016d212175dc9aa85b7113d12807.png)
Linux基本指令
指令操作的理解
现在的Linux是进行纯指令操作的
Windows也是支持指令操作的,Cmd
刚开始所有的计算机是没有鼠标的,输入输出的时候一定是先有的键盘。先有的指令,然后才有的图形化界面
指令操作和图形化界面操作是没有本质区别的,只有形式上的不同
图形化界面操作比指令操作更容易使用
各种商业发行版的Linux可能为了服务好自己的用户,有一些准程序员,所以慢慢有了图形化界面——Ubuntu
系统当中只要是指令操作,大部分的作用都可以在图形化界面中找到操作的原型
简单指令学习
- 知道当前登录的账号是谁
whoami
![![[Pasted image 20240507171942.png]]](https://i-blog.csdnimg.cn/blog_migrate/8d133d21cf565ebd567e90a1a781ff6b.png)
- 查看当前有哪些用户正在系统当中
who
![![[Pasted image 20240507172046.png]]](https://i-blog.csdnimg.cn/blog_migrate/da1805c16ccf7c7e96fc6d4097ef19c2.png)
- 显示当前所处的工作目录
pwd
![![[Pasted image 20240507172436.png]]](https://i-blog.csdnimg.cn/blog_migrate/3bc0233db18a7299b0804deca8af92ce.png)
- 显示当前目录下的文件信息
ls
ls -l
![![[Pasted image 20240507172628.png]]](https://i-blog.csdnimg.cn/blog_migrate/9f87cbeaba65d107ca7359f0a39a7f0b.png)
- 清屏
clear
![![[Pasted image 20240507172841.png]]](https://i-blog.csdnimg.cn/blog_migrate/648ebc2b01f0047701d268502cc6c663.png)
01. ls指令
-a 列出目录下的所有文件,包括以 . 开头的隐含文件。
-d 将目录象文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录
-i 输出文件的 i 节点的索引信息。 如 ls –ai 指定文件
-k 以 k 字节的形式表示文件的大小。ls –alk 指定文件
-l 列出文件的详细信息。
-n 用数字的 UID,GID 代替名称。 (介绍 UID, GID)
-F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;“/”表示目录;“@”表
示符号链接;“|”表示FIFOs;“=”表示套接字(sockets)。(目录类型识别)
-r 对目录反向排序。
-t 以时间排序。
-s 在l文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件)
-R 列出所有子目录下的文件。(递归)
-1 一行只输出一个文件。
1. ls
可以默认显示当前所指的目录下的所有的文件名属性
![![[Pasted image 20240507194534.png]]](https://i-blog.csdnimg.cn/blog_migrate/21d43f3c5a25e1920ef60416ad8cb4b0.png)
2. ls -l
l是list的意思,就相当于显示文件的属性列表
![![[Pasted image 20240507194554.png]]](https://i-blog.csdnimg.cn/blog_migrate/0517430e9068429a2d9779bb2a9bb7ac.png)
补充知识
如果在Windows上新建一个空文件,这个文件要占据磁盘/固态硬盘的存储空间吗
一定要占据磁盘空间虽然文件本身没有内容,但是文件的名字,修改时间,类型,大小,各种属性。也是数据,需要被记录下来
文件 = 文件内容 + 文件属性
全都是二进制数据,都需要被存储我们以前,现在,未来,学习的所有的文件操作,本质是:
- 对文件内容做操作
- 对文件属性做操作
3. ls -a/ls -l -a/ls -a -l/ls -la/ls -al
显示当前目录下的隐藏文件
![![[Pasted image 20240507194641.png]]](https://i-blog.csdnimg.cn/blog_migrate/7f68c7f2d6a7d37dfa2b0b78fba5f8c0.png)
Linux当中有
隐藏文件,在Linux中隐藏文件通常以.开头
4. ll
等价于ls -l
![![[Pasted image 20240507194741.png]]](https://i-blog.csdnimg.cn/blog_migrate/1fbfc8429df12a674bb0e706379c2dcc.png)
02. pwd命令
用来显示当前所处的工作目录
![![[Pasted image 20240507194804.png]]](https://i-blog.csdnimg.cn/blog_migrate/077e6a83dd0503c4f213b8d21c1a1810.png)
pwd
p - process
w - work
d - directory
表示当前对应的工作目录
03. cd命令
用来改变工作目录,将当前工作目录改变到指定的目录下
c - change
d - directory
cd .. : 返回上级目录
![![[Pasted image 20240507194855.png]]](https://i-blog.csdnimg.cn/blog_migrate/e72be3f00d84e6f56dbd3cf6ce46709a.png)
Linux下的目录结构的认识
.称之为当前路径
..称之为上级路径
任何一个目录里都有.和..
![![[Pasted image 20240507195125.png]]](https://i-blog.csdnimg.cn/blog_migrate/56d8324e882bb62e80033fa0441ea4f1.png)
证明.是当前路径
![![[Pasted image 20240507195546.png]]](https://i-blog.csdnimg.cn/blog_migrate/38f5b1b51daa8d74778fb849f37c1fc4.png)
cd ..
回退到上级路径
![![[Pasted image 20240507222551.png]]](https://i-blog.csdnimg.cn/blog_migrate/fdb04b275027156c25b8143473f1f917.png)
cd后可以直接跟当前目录的文件夹
![![[Pasted image 20240507222625.png]]](https://i-blog.csdnimg.cn/blog_migrate/df7ebaa77d738afc3b1548b37f38894e.png)
cd后面跟绝对路径/相对路径即可
根目录
cd ..回退最后只剩下一个/
再回退,就一直是/,因为根节点的parent指针指向它自己,所以回退的时候就直接指向自己
称之为Linux的根目录,也是一个目录,也是一个文件夹
在Windows中喜欢把文件夹叫做文件夹,在Linux中,喜欢把文件夹叫做目录
整个Linux系统中,最开始的一个目录就是只有一个根目录
![![[Pasted image 20240507215744.png]]](https://i-blog.csdnimg.cn/blog_migrate/17526b6c6dea03f49a240cd4d5ce3104.png)
根目录是目录,因为最开始以d开头,d就是directory,目录的意思
根目录里有更多的目录
![![[Pasted image 20240507215936.png]]](https://i-blog.csdnimg.cn/blog_migrate/fe6f4dabc53847b6c0aa520dd397fcd5.png)
整体目录结构
Linux的整体目录结构是一棵多叉树的样子
![![[Pasted image 20240507220042.png]]](https://i-blog.csdnimg.cn/blog_migrate/d1ff7feb66ed0d098ecd547dc289ba3a.png)
结论
- 整个多叉树的叶子节点一定对应的是普通文件,或者是空目录
- 路上节点,非叶子节点,一定是目录(不是叶子节点,目录里面一定有其他文件)
- 访问一个文件的本质,需要先找到它;找到文件的本质,就是在一棵多叉树中进行节点的查找
- 路径的本质就是这一棵多叉树的搜索路径
- 几乎所有的操作系统,文件夹或者目录结构都是树状的
路径
什么叫做路径
具有唯一性的,在多叉树结构当中,标识指定文件的用一串特殊符号分割的,由多个目录构成的一段对应的字符串,称之为路径
Linux下的路径分隔符:/
两个/之间的一定是一个目录或者是文件夹
目录的最后一个可能是一个文件或者是文件夹
Windows下的路径分隔符\
为什么要有分隔符
为了区分分隔符和分隔符之间是一个文件夹,可以通过一个文件夹进入另一个文件夹
为什么要有路径
路径的本质就是这一棵多叉树的搜索路径
任何一个目录(包括根目录),可以有多棵子目录或者子文件夹;但是任何一个节点,永远只有一个父节点
所以从根目录开始逆向地推回来的时候,这条路径具有唯一性
路径分类
cd /home/litao/linux/ : 绝对路径
cd ../day02/ : 相对路径
绝对路径
从根目录开始,定位一个叶子文件的方式,形成的路径:绝对路径
在Linux中,无论在哪里,都可以唯一定位一个文件,放在哪里都是有效的
一般在一些配置文件中常用
手写的时候一般用得比较少
相对路径
相对于自身当前所处的目录为参考点,定位一个文件的路径:相对路径
相对路径只能与自身当前所处的目录强相关,当前路径变了,相对路径也要变化
比较适合在命令行场景中使用,打的代码比较少
04. tree命令
如何证明Linux是树状结构
tree 跟当前要显示的目录
以树状结构将当前目录及其子目录给组织起来
![![[Pasted image 20240507225811.png]]](https://i-blog.csdnimg.cn/blog_migrate/8ad75b589603279fb44a511b2528c8ce.png)
安装tree命令
如果输入tree命令,显示command not found
表示当前命令没有被安装
可以使用以下命令进行安装
yum install -y tree
![![[Pasted image 20240507230649.png]]](https://i-blog.csdnimg.cn/blog_migrate/cc155efebbbd8fc697f20f66d4d71111.png)
如果没有安装yum
输入
apt-get install tree
![![[Pasted image 20240507230726.png]]](https://i-blog.csdnimg.cn/blog_migrate/7beacda335b699c5971b247586092267.png)
显示已经是最新版本
05. cd的其他操作
cd ~
cd -
![![[Pasted image 20240507232647.png]]](https://i-blog.csdnimg.cn/blog_migrate/9a21601d8a6c4dbeddcb70cc84fddda9.png)
cd -:跳转到最近一次所处的目录
可以在两个目录之间快速跳转
cd ~:
![![[Pasted image 20240507233333.png]]](https://i-blog.csdnimg.cn/blog_migrate/60592f65d06ae2c2f27530fbe961782d.png)
当用户是root的时候,执行这条指令就会进入到/root的路径下
这条路径称为当前用户的家目录
/root就是超级用户root的家目录
在Linux中有两大类用户
- root
- XXX
在centos系统中
root的家目录:/root
普通用户的家目录:/home/XXX
家目录
windows中,其实有桌面概念,但是本质桌面也是文件夹
只不过当用户登录的时候,家目录里面有桌面的文件夹,windows把这个文件夹中的所有的文件或者文件夹,以图标的形式展示在显示器上,就有了桌面
在windows中下载东西的时候,默认下载的地方,就是当前用户账号下的下载的文件夹里
在Linux中,每一个用户都有自己的家目录
root的家目录,就是/root
普通用户的家目录就是/home/XXX
默认登录的时候,默认登陆所处的路径,就是当前登录用户的家目录
未来写的代码,创建的文件,建议统一放在自己的家目录下
06. touch命令
有两个作用
1. 创建普通文件
touch t1.txt
touch t2
touch t3
touch t4 t5 t6 t7 t8
![![[Pasted image 20240508080507.png]]](https://i-blog.csdnimg.cn/blog_migrate/387567ced3db300b39123a2240763b2a.png)
d开头证明是一个目录
-开头证明是一个普通文件
2. 更改文件时间
-a 或--time=atime或--time=access或--time=use只更改存取时间。
-c 或--no-create 不建立任何文档。
-d 使用指定的日期时间,而非现在的时间。
-f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
-m 或--time=mtime或--time=modify 只更改变动时间。
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t 使用指定的日期时间,而非现在的时间。
如何获取文件的时间,更详细的属性列表
stat 文件名
![![[Pasted image 20240508082828.png]]](https://i-blog.csdnimg.cn/blog_migrate/49c98d8ac4551893996445403d6d5e15.png)
07. mkdir命令
创建一个空目录
mkdir code
在当前目录下创建一个名为“code”的目录
![![[Pasted image 20240508083409.png]]](https://i-blog.csdnimg.cn/blog_migrate/9ba1748c343af5aa487cdb84a93af6ad.png)
创建了code目录
code默认情况下,是空的文件夹
![![[Pasted image 20240508083523.png]]](https://i-blog.csdnimg.cn/blog_migrate/7e035a14f58e54e6d796935fa13de478.png)
创建一条路径
mkdir dira/dirb/dirc/dire
无法创建一整串路径
只能不断cd进去,进行操作
mkdir -p dira/dirb/dirc/dird
递归建立多个目录
这样可以创建一整条路径
![![[Pasted image 20240508084012.png]]](https://i-blog.csdnimg.cn/blog_migrate/15da69694d26061bd3f4d63473d19503.png)
08. rmdir/rm命令
删除空目录
rmdir 目录名
可以删除空目录
-p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。
如果目录非空,会报错
![![[Pasted image 20240508085911.png]]](https://i-blog.csdnimg.cn/blog_migrate/6afcb925cabf8d4fc83d2975359f40b6.png)
删除文件或目录
rm 目录名
![![[Pasted image 20240508090148.png]]](https://i-blog.csdnimg.cn/blog_migrate/db8550e491757aa15cbeb696ce611df5.png)
同样报错
-f 即使文件属性为只读(即写保护),亦直接删除
-i 删除前逐一询问确认
-r 删除目录及其下所有文件
递归删除
树状结构在定义时,就是递归定义的
如果一个目录不为空,极有可能目录里面还有目录
要删除一棵树,一定是先深度优先遍历,到叶子节点,递归返回时,再一个个删除
rm -r 目录名
递归式删除
![![[Pasted image 20240508090446.png]]](https://i-blog.csdnimg.cn/blog_migrate/796cffca9cdcf8ca901351c4cb885511.png)
强制删除
期间可能会需要进行y/n的确认,如果不想交互
rm -rf 目录名
09. 代码细节
1. ls
ls dira
![![[Pasted image 20240508084759.png]]](https://i-blog.csdnimg.cn/blog_migrate/d59a15c151c822c761f221fd601b417c.png)
ls dira,可以直接ls+目录,默认显示的是目录里面的内容
也可以dira/,带不带/都可以,也可以带./
不过简写成ls dira
如果不想显示这个目录里面的内容,就想显示目录本身
![![[Pasted image 20240508085055.png]]](https://i-blog.csdnimg.cn/blog_migrate/369787be3d8ad66fb5964cafbdd83a6b.png)
带-d,写什么就显示什么
-ld,会显示更详细的信息
不进入这个目录,只把这个目录本身的属性显示出来
2. 上下键
可以通过键盘的上下箭头的两个按键,快速翻阅历史命令,不用再敲
292

被折叠的 条评论
为什么被折叠?



