前言
计算机软硬件体系结构
层状结构 | |
---|---|
应用软件 | Word,Matlab |
操作系统 | Windows,Linux |
设备驱动 | 声卡驱动 |
硬件 | CPU,内存,磁盘,显示器,键盘 |
操作系统概念
操作系统
是一款进行软硬件资源管理的软件
例子
比如在学校里的各种设施,如机房、实验室、体育场、宿舍、食堂…,都叫做硬件
在学校宿舍楼里的楼管,就是对一栋楼的硬件资源做管理;机房有微机老师;大门有门卫大爷;图书馆有图书管理员…
每一种硬件都有特定的驱动来管理这个硬件在这个基础上,学校层面也有各种各样其他的管理,比如学生什么时候上下课;什么时候放假;举办的各种活动…都需要有底层的软硬件来配合
操作系统就相当于学校里的一套领导班子
为什么要进行软硬件资源管理
把软硬件资源管理好,给上层的用户提供良好的稳定的运行服务——工具
承上启下
使用XShell远程登录Linux
安装XShell
家庭/学校免费 - NetSarang Website
我们购买的云服务器,是远端云服务器,其实际地点可能在北京等地
而自己的计算机是在其他地方
XShell:远程登录软件
其中的远程登录或者输入指令,所有行为都是通过网络来进行的
使用命令行登录
输入
ssh root@你的云服务器公网IP
将云服务器的信息添加到列表当中
点击新建
输入常规内容,其他的都不要动,点击确定
这样打开会话弹窗里面,就出现了对应的机器
这样以后登录的时候,点击它,就不需要再去命令行输入指令了
点击连接,首次需要输入用户名
点击确认
接下来输入密码登录就可以了
XShell里的复制粘贴
- 复制:ctrl + insert
- 粘贴:shift + insert
ctrl + c / ctrl + v 是不行的
XShell常用功能
-
全屏/返回全屏:alt+enter
-
可以选择配色方案
-
可以设置字体
Linux基本指令
指令操作的理解
现在的Linux是进行纯指令操作的
Windows也是支持指令操作的,Cmd
刚开始所有的计算机是没有鼠标的,输入输出的时候一定是先有的键盘。先有的指令,然后才有的图形化界面
指令操作和图形化界面操作是没有本质区别的,只有形式上的不同
图形化界面操作比指令操作更容易使用
各种商业发行版的Linux可能为了服务好自己的用户,有一些准程序员,所以慢慢有了图形化界面——Ubuntu
系统当中只要是指令操作,大部分的作用都可以在图形化界面中找到操作的原型
简单指令学习
- 知道当前登录的账号是谁
whoami
- 查看当前有哪些用户正在系统当中
who
- 显示当前所处的工作目录
pwd
- 显示当前目录下的文件信息
lsls -l
- 清屏
clear
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
可以默认显示当前所指的目录下的所有的文件名属性
2. ls -l
l是list的意思,就相当于显示文件的属性列表
补充知识
如果在Windows上新建一个空文件,这个文件要占据磁盘/固态硬盘的存储空间吗
一定要占据磁盘空间虽然文件本身没有内容,但是文件的名字,修改时间,类型,大小,各种属性。也是数据,需要被记录下来
文件 = 文件内容 + 文件属性
全都是二进制数据,都需要被存储我们以前,现在,未来,学习的所有的文件操作,本质是:
- 对文件内容做操作
- 对文件属性做操作
3. ls -a/ls -l -a/ls -a -l/ls -la/ls -al
显示当前目录下的隐藏文件
Linux当中有
隐藏文件,在Linux中隐藏文件通常以.
开头
4. ll
等价于ls -l
02. pwd命令
用来显示当前所处的工作目录
pwd
p - process
w - work
d - directory
表示当前对应的工作目录
03. cd命令
用来改变工作目录,将当前工作目录改变到指定的目录下
c - change
d - directory
cd .. : 返回上级目录
Linux下的目录结构的认识
.
称之为当前路径
..
称之为上级路径
任何一个目录里都有.
和..
证明.
是当前路径
cd ..
回退到上级路径
cd后可以直接跟当前目录的文件夹
cd后面跟绝对路径/相对路径即可
根目录
cd ..
回退最后只剩下一个/
再回退,就一直是/
,因为根节点的parent指针指向它自己,所以回退的时候就直接指向自己
称之为Linux的根目录,也是一个目录,也是一个文件夹
在Windows中喜欢把文件夹叫做文件夹,在Linux中,喜欢把文件夹叫做目录
整个Linux系统中,最开始的一个目录就是只有一个根目录
根目录是目录,因为最开始以d开头,d就是directory,目录的意思
根目录里有更多的目录
整体目录结构
Linux的整体目录结构是一棵多叉树的样子
结论
- 整个多叉树的叶子节点一定对应的是普通文件,或者是空目录
- 路上节点,非叶子节点,一定是目录(不是叶子节点,目录里面一定有其他文件)
- 访问一个文件的本质,需要先找到它;找到文件的本质,就是在一棵多叉树中进行节点的查找
- 路径的本质就是这一棵多叉树的搜索路径
- 几乎所有的操作系统,文件夹或者目录结构都是树状的
路径
什么叫做路径
具有唯一性的,在多叉树结构当中,标识指定文件的用一串特殊符号分割的,由多个目录构成的一段对应的字符串,称之为路径
Linux下的路径分隔符:/
两个/
之间的一定是一个目录或者是文件夹
目录的最后一个可能是一个文件或者是文件夹
Windows下的路径分隔符\
为什么要有分隔符
为了区分分隔符和分隔符之间是一个文件夹,可以通过一个文件夹进入另一个文件夹
为什么要有路径
路径的本质就是这一棵多叉树的搜索路径
任何一个目录(包括根目录),可以有多棵子目录或者子文件夹;但是任何一个节点,永远只有一个父节点
所以从根目录开始逆向地推回来的时候,这条路径具有唯一性
路径分类
cd /home/litao/linux/ : 绝对路径
cd ../day02/ : 相对路径
绝对路径
从根目录开始,定位一个叶子文件的方式,形成的路径:绝对路径
在Linux中,无论在哪里,都可以唯一定位一个文件,放在哪里都是有效的
一般在一些配置文件中常用
手写的时候一般用得比较少
相对路径
相对于自身当前所处的目录为参考点,定位一个文件的路径:相对路径
相对路径只能与自身当前所处的目录强相关,当前路径变了,相对路径也要变化
比较适合在命令行场景中使用,打的代码比较少
04. tree命令
如何证明Linux是树状结构
tree 跟当前要显示的目录
以树状结构将当前目录及其子目录给组织起来
安装tree命令
如果输入tree命令,显示command not found
表示当前命令没有被安装
可以使用以下命令进行安装
yum install -y tree
如果没有安装yum
输入
apt-get install tree
显示已经是最新版本
05. cd的其他操作
cd ~
cd -
cd -
:跳转到最近一次所处的目录
可以在两个目录之间快速跳转
cd ~
:
当用户是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
d开头证明是一个目录
-开头证明是一个普通文件
2. 更改文件时间
-a 或--time=atime或--time=access或--time=use只更改存取时间。
-c 或--no-create 不建立任何文档。
-d 使用指定的日期时间,而非现在的时间。
-f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
-m 或--time=mtime或--time=modify 只更改变动时间。
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t 使用指定的日期时间,而非现在的时间。
如何获取文件的时间,更详细的属性列表
stat 文件名
07. mkdir命令
创建一个空目录
mkdir code
在当前目录下创建一个名为“code”的目录
创建了code目录
code默认情况下,是空的文件夹
创建一条路径
mkdir dira/dirb/dirc/dire
无法创建一整串路径
只能不断cd进去,进行操作
mkdir -p dira/dirb/dirc/dird
递归建立多个目录
这样可以创建一整条路径
08. rmdir/rm命令
删除空目录
rmdir 目录名
可以删除空目录
-p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。
如果目录非空,会报错
删除文件或目录
rm 目录名
同样报错
-f 即使文件属性为只读(即写保护),亦直接删除
-i 删除前逐一询问确认
-r 删除目录及其下所有文件
递归删除
树状结构在定义时,就是递归定义的
如果一个目录不为空,极有可能目录里面还有目录
要删除一棵树,一定是先深度优先遍历,到叶子节点,递归返回时,再一个个删除
rm -r 目录名
递归式删除
强制删除
期间可能会需要进行y/n的确认,如果不想交互
rm -rf 目录名
09. 代码细节
1. ls
ls dira
ls dira
,可以直接ls+目录,默认显示的是目录里面的内容
也可以dira/
,带不带/
都可以,也可以带./
不过简写成ls dira
如果不想显示这个目录里面的内容,就想显示目录本身
带-d
,写什么就显示什么
-ld
,会显示更详细的信息
不进入这个目录,只把这个目录本身的属性显示出来
2. 上下键
可以通过键盘的上下箭头的两个按键,快速翻阅历史命令,不用再敲