🌕写在前面
- 🍊博客主页:kikoking的江湖背景
- 🎉欢迎关注🔎点赞👍收藏⭐️留言📝
- 🌟本文由 kikokingzz 原创,CSDN首发!
- 📆首发时间:🌹2021年12月24日🌹
- 🆕最新更新时间:🎄2021年12月24日🎄
- ✉️坚持和努力一定能换来诗与远方!
- 🙏作者水平很有限,如果发现错误,请留言轰炸哦!万分感谢感谢感谢!、
🍒关于为什么现在开Linux?
- 关注我的大佬们可能知道,我之前有开了一篇操作系统的文章,对付408考试是绰绰有余了,但是那只是纸上功夫,编程技术我们既要笔杆子硬,上机操作也必须硬,因此接下来我会通过Linux的实战过程中穿插和附带操作系统的408知识,希望各位可以关注本栏目哦~
- 💎这是一篇有关操作系统的入门文章:💎用一首圣诞歌的时间·入门操作系统吧~💎
目录
🔥1.后端VS前端
前端:前端就是我们直接接触到的一些app(手机里的微信、抖音、淘宝、QQ)
后端服务器:Linux操作系统跑在后端服务器上,为微信、抖音、淘宝、qq提供后台服务
✨✨✨我是分割线✨✨✨
🔥2.企业为什么选择使用Linux作为后台服务器?
Linux:免费、开源、稳定高效
阿里云、腾讯云、亚马逊aws业务,说白了就是给企业提供Linux后台云服务的
开源会让系统更安全还是更糟糕呢?
kiko:系统会变得更安全、更稳定!超nice!
✨✨✨我是分割线✨✨✨
🔥3.为什么要学好Linux?
1.会Linux是一种职业化的表现(铁汁,你职业吗?)
2.学习Linux本质是对平台的学习,该平台会横跨多学科,会将我们学到的大量知识进行整合,从而形成对技术框架的全认知
3.企业大量使用,会倒逼招聘对Linux提出一定要求,为了招聘要求,我们需要对Linux方面进行准备
✨✨✨我是分割线✨✨✨
🔥4.如何学好Linux?
Linux是一个注重实操的学科,具有很强的平台性,所以除了需要底层的操作系统、计算机网络、组成原理等原理性知识外,还需要多多在Linux中进行各种实操
·基础理论:操作系统、计算机网络、组成原理
·基础操作:基本指令/权限,Linux环境编程(基本编程、系统编程、网络编程)
✨✨✨我是分割线✨✨✨
🔥5.OS概念,定位
资源链接:用一首圣诞歌的时间·入门操作系统吧~
具体了解可以点击上方链接
✨✨✨我是分割线✨✨✨
🔥命令行方式VS图形界面方式
🍊为什么选用命令行的方式呢?
我们从历史角度向下推论一下:
a.最初是为了计算导弹弹道轨道——————>发明了第一台计算机:埃尼亚克
b.计算机发明出来是给人使用的,那么人该如何使用呢?
人把数据给计算机——>计算机内部运算——>将计算结果返给人
[ 人——>机——>人] 这是一次人机交互的过程
c.键盘 VS 鼠标: 哪个先有呢? 打字机——>(早期键盘)——>键盘
综上所述,最初只能用键盘交互,所以只能通过输入命令的方式进行计算机数据交互,时间久了,就有了命令行的交互方式!
d.为什么鼠标会存在? 相比键盘,鼠标更符合人性,所见点击即所得(在商业上,注定是需要的);但是真正的推广还是由于图形化界面的产生
e.命令行VS图形化界面
图形化界面(不断迭代)——>手指——>语音——>意识
选择命令行的原因:
1.命令行更靠近历史的前期,因此命令行更靠近底层
2.企业的后端服务器硬件没有图形化界面,只能用命令行交互
🍊命令行方式
✨✨✨我是分割线✨✨✨
🔥配置一个云服务器
✨✨✨我是分割线✨✨✨
✅登录XSHELL
·输入用户名和密码
1.普通用户和root用户(只有一个):普通用户名不能叫做root
2.普通用户的密码尽量不要和root一样
·成功登录
✨✨✨我是分割线✨✨✨
✅1.pwd指令:显示当前目录
·语法: pwd
·功能:显示用户当前所在的目录
·常用选项:无
默认登录,会登进自己的主工作目录
Linux也叫做多用户操作系统!—— 可以给多个用户使用的
这里是向服务器请求资源,由于这边的目录分隔符是 / ,可见后台服务器所用的是Linux操作系统
✨✨✨我是分割线✨✨✨
✅2.ls指令:显示该目录下所有子目录与文件
·语法: ls [选项][目录或文件]
·功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。
·命令组合: cd + ls == windows里的双击查看文件夹内的内容
🍊ls:显示当前目录
此处ls显示了当前目录中的所有文件,只有一个,该文件为kiko_class
🍊ls -a:显示所有文件,包括隐藏文件
仅仅以 “.”开头的文件,称为隐藏文件;下例中 .findme 为隐藏文件,仅在 ls -a 指令下才显示
🍓. 一个点代表——>当前目录
🍓.. 两个点表示——>上级目录
🍓/ 表示为——>根目录
a.根目录是目录
退到不能再退时 [root@ecs-99730 ~]# cd .. [root@ecs-99730 /]# pwd / #根目录 [root@ecs-99730 /]# cd .. [root@ecs-99730 /]# pwd / [root@ecs-99730 /]# cd .. [root@ecs-99730 /]# pwd /
根目录中包含了很多目录:
根的目录结构就是一种树的数据结构
Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件。
可见根目录作为树的根结点,可以放很多文件和目录作为其子结点:
目录树中的叶子结点:
1.普通文件,不能再被进入的文件
2.Linux中不存在空目录的,只要有目录里面就会包含"." 和 ".."
[root@ecs-99730 kiko_class]# mkdir empty 创建一个empty目录 [root@ecs-99730 kiko_class]# ls 显示当前目录下有哪些子目录和文件 empty file filel test1.c test.c [root@ecs-99730 kiko_class]# cd empty 进入empty目录 [root@ecs-99730 empty]# ls [root@ecs-99730 empty]# ls -al 显示empty目录中的所有文件和目录(包括隐藏文件) total 8 drwxr-xr-x 2 root root 4096 Dec 19 14:35 . 可见仍然有 . ->当前目录 drwxr-xr-x 3 root root 4096 Dec 19 14:35 .. 任然有 .. ->上一级目录 [root@ecs-99730 empty]#
✨✨✨我是分割线✨✨✨
✅路径
从上图中可以得到,假如要访问test.c
//访问test.c的一些路径: #绝对路径 /home/bit/test.c 根目录->home目录->bit目录->test.c文件 #相对路径 dev/../home/bit/test.c dev目录->返回到上一级目录(根目录)->home目录->bit目录->test.c文件 #相对路径 lib/../../home/bit/test.c lib文件->返回到上一级usr目录->返回到上一级目录(根目录)->home目录->bit目录->test.c文件
🍓相对路径:可以有多种,容易失效
🍓绝对路径: 从/(根目录)开始的路径,只有一种路径,不会失效
1.基本上所有的操作系统文件管理,都采用的是树状结构,
2.一般来说绝对路径,我们在配置文件中使用的最多,因为不论配置文件在哪里,路径都是唯一且有效的
✨✨✨我是分割线✨✨✨
✅3.cd指令
·语法:cd 目录名
·功能:改变工作目录。将当前工作目录改变到指定的目录下。
🍊cd ~ 进入当前用户的主工作目录
·此处例子中的主工作目录是 /root
[root@ecs-99730 empty]# pwd //当前所在目录为: /root/kiko_class/empty //root目录下的->kiko_class目录中的->empty目录 [root@ecs-99730 empty]# cd ~ //返回主工作目录->root目录 [root@ecs-99730 ~]# pwd //直接显示为root目录 /root
🍊cd -返回最近访问目录
·此处 cd - 返回的是时间上最近访问的目录
[root@ecs-99730 ~]# pwd /root [root@ecs-99730 ~]# cd /root/kiko_class/empty [root@ecs-99730 empty]# pwd //时间点1.此时处于/root/kiko_class/empty目录下 /root/kiko_class/empty [root@ecs-99730 empty]# cd /root/kiko_class //前往root目录下的kiko_class目录 [root@ecs-99730 kiko_class]# pwd /root/kiko_class //时间点2.此时处于/root/kiko_class目录下 [root@ecs-99730 kiko_class]# cd - //“-”记录的是最近你从哪个路径来的,保存时间上最近路径 /root/kiko_class/empty //对于时间点2来说,它的时间上的最近路径就是时间点1的路径 [root@ecs-99730 empty]# //因此cd前往的就是/root/kiko_class/empty
✨✨✨我是分割线✨✨✨
✅4.touch指令
·语法:touch [选项]... 文件...
·功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。
🍊touch -d 使用指定的日期时间,而非现在的时间
·常用选项:
- -a 或--time=atime或--time=access或--time=use只更改存取时间。
- -c 或--no-create 不建立任何文档。
- -d 使用指定的日期时间,而非现在的时间。
- -f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
- -m 或--time=mtime或--time=modify 只更改变动时间。
- -r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
- -t 使用指定的日期时间,而非现在的时间。
✨✨✨我是分割线✨✨✨
✅5.ll指令
[root@ecs-99730 kiko_class]# ll total 4 drwxr-xr-x 2 root root 4096 Dec 19 14:35 empty -rw-r--r-- 1 root root 0 Dec 18 21:48 file //文件属性 + 文件名 -rw-r--r-- 1 root root 0 Dec 18 21:48 filel -rw-r--r-- 1 root root 0 Dec 18 21:48 test1.c -rw-r--r-- 1 root root 0 Dec 18 21:38 test.c [root@ecs-99730 kiko_class]# ls -l total 4 drwxr-xr-x 2 root root 4096 Dec 19 14:35 empty -rw-r--r-- 1 root root 0 Dec 18 21:48 file -rw-r--r-- 1 root root 0 Dec 18 21:48 filel -rw-r--r-- 1 root root 0 Dec 18 21:48 test1.c -rw-r--r-- 1 root root 0 Dec 18 21:38 test.c [root@ecs-99730 kiko_class]#
问题1:如果我在win下创建一个空文件,这个文件占不占用磁盘空间呢?
答:即便上面新建的文本文档大小为0KB,但仍占用空间! 因为 文件 = 文件内容 + 属性
那么属性是数据吗?是!因此仍然占有空间
问题2:文件的类别,是文件的属性吗?
答:文件的类别是文件的属性,需要被保存起来!windos和Linux保存文件的方式有差别:
windows:通过文件名后缀区分文件类型的
Linux:文件类型和文件后缀没有直接关系!但是我们依旧保留这种做法,为了照顾人的习惯
例如在 Linux中 a.out, a.exe可以表示同一个文件,后缀不影响文件类型
问题3:Linux用什么来区分文件类型呢?
🍓目录:第一个列的第一个字母为d的是目录
drwxr-xr-x 2 root root 4096 Dec 19 14:35 empty
🍓普通文件:第一列的第一个字母为“-”的是普通文件
-rw-r--r-- 1 root root 0 Dec 18 21:48 test1.c
✨✨✨我是分割线✨✨✨
✅6.mkdir指令:新建目录(文件夹)
·语法:mkdir [选项] dirname...
·功能:在当前目录下创建一个名为 “dirname”的目录
[root@ecs-99730 kiko_class]# mkdir anana //新建一个anana目录 [root@ecs-99730 kiko_class]# ll total 8//验证 anana到底是不是目录: drwxr-xr-x 2 root root 4096 Dec 19 17:07 anana //第一列的第一个字母为d 所以anana是目录 drwxr-xr-x 2 root root 4096 Dec 19 14:35 empty -rw-r--r-- 1 root root 0 Dec 18 21:48 file -rw-r--r-- 1 root root 0 Dec 18 21:48 filel -rw-r--r-- 1 root root 0 Dec 18 21:48 test1.c -rw-r--r-- 1 root root 0 Dec 18 21:38 test.c
可见也可以进入anana目录中:
🍊mkdir -p 一次生成一串路径(只包含目录)
·使用mkdir -p只能建立一连串的目录
[root@ecs-99730 test]# mkdir test1/test2/test3/file.c mkdir: cannot create directory ‘test1/test2/test3/file.c’: No such file or directory //直接使用mkdir建立一连串的目录,没法建立 [root@ecs-99730 test]# mkdir -p test1/test2/test3/file.c //使用mkdir -p 建立成功 [root@ecs-99730 test]# ls test1 [root@ecs-99730 test]# cd test1 [root@ecs-99730 test1]# ls test2 [root@ecs-99730 test1]# cd test2 [root@ecs-99730 test2]# ls test3 [root@ecs-99730 test2]# cd test3 [root@ecs-99730 test3]# ll total 4 drwxr-xr-x 2 root root 4096 Dec 19 17:29 file.c //第一个字母为d——>file.c是目录 [root@ecs-99730 test3]#
🍊tree 通过树状结构显示目录结构
🍓安装 tree
一般来说XSHELL不自带tree命令,需要自己安装。安装只需要输入以下代码即可:
[root@ecs-99730 kiko_class]# yum install -y tree
🍓tree的实现
输入命令查看root目录下的所有子目录和文件
[root@ecs-99730 kiko_class]# tree /root
✨✨✨我是分割线✨✨✨
✅7.rmdir指令:删除空目录
/root/kiko_class ├── anana ├── empty ├── file ├── filel ├── test │ └── test1 │ └── test2 │ └── test3 │ └── file.c ├── test1.c └── test.c [root@ecs-99730 kiko_class]# pwd /root/kiko_class [root@ecs-99730 kiko_class]# rmdir empty //rmdir 负责删除空目录 [root@ecs-99730 kiko_class]# tree . . ├── anana ├── file ├── filel ├── test │ └── test1 │ └── test2 │ └── test3 │ └── file.c ├── test1.c └── test.c //从上图中发现,empty目录被删除了 [root@ecs-99730 kiko_class]# rmdir test //尝试删除非空目录test目录 rmdir: failed to remove 'test': Directory not empty //报错显示:目录非空,无法用rmdir指令删除
✨✨✨我是分割线✨✨✨
✅8.rm指令:删除文件或目录
🍊rm 删除文件
[root@ecs-99730 kiko_class]# ls anana file filel test1.c test.c [root@ecs-99730 kiko_class]# rm test.c //删除test.c文件 rm: remove regular empty file 'test.c'? 1 //是否确定删除? 1-确定 [root@ecs-99730 kiko_class]# ls anana file filel test1.c //可见test.c文件已被删除 [root@ecs-99730 kiko_class]#
🍊rm -f 强制删除文件
·可以以普通用户的身份强制删除root编写的文件
🍊rm -r 递归删除非空目录
[root@ecs-99730 ~]# tree . . └── kiko_class ├── anana ├── file ├── filel ├── test │ └── test1 │ └── test2 │ └── test3 │ └── file.c ├── test1.c └── test.c [root@ecs-99730 kiko_class]# ls anana file filel test test1.c test.c [root@ecs-99730 kiko_class]# rm -r test //递归删除test目录 rm: descend into directory 'test'? 1 rm: descend into directory 'test/test1'? 1 rm: descend into directory 'test/test1/test2'? 1 rm: descend into directory 'test/test1/test2/test3'? 1 rm: remove directory 'test/test1/test2/test3/file.c'? 1 rm: remove directory 'test/test1/test2/test3'? 1 rm: remove directory 'test/test1/test2'? 1 rm: remove directory 'test/test1'? 1 rm: remove directory 'test'? 1 [root@ecs-99730 kiko_class]# ls anana file filel test1.c test.c //可见,此时test目录已被删除
🍊rm -rf 强制递归删除非空目录
rm -rf / //强制删除根目录下的所有目录