重学操作系统(五)
前言
上面几篇文章,学习了关于计算机的基本理论,计算机原理,底层一些知识点。也算为我打开一扇大门。其中很多知识点和思想,都是曾经没学到的。之前几篇文章,让我受益匪浅。接下来几篇是介绍Linux指令相关的。Linux指令在面试中,不一定都会问到,但是就我的经验,问到后,答得越多,越准确,是十分加分的一项,尤其是社招。
贯穿全文的问题:rm / -rf什么意思?
什么是Shell
简单来说,就是一个命令行的用户界面。
Bash:Bourne Again Shell,是Shell的组成程序。由Steve Bourne发明的。
Linux对文件目录的抽象
Linux对文件进行了一个树状的抽象。/代表根目录,每一层目录用/分开。
路径(Path)
路径就是一个文件在文件系统的地址。目标文件的绝对目录(Absolute Path),也叫完全路径(Full Path),是从/开始,接下来每一层都是一级子目录,直到定位到目标文件为止。
工作目录
Shell抽象出得目录。相对路径是以工作目录为基点的路径比如如果在/usr目录内,rm文件的相对路径是bin/rm。
.代表当前目录,..代表上级目录。
cd指令(Change Directory):切换工作路径,既可以是绝对路径,也可以是相对路径。
cd(不加参数):回到home
cd .:什么都不发生
cd..:返回上级目录
pwd:查看当前目录
几种常见的文件类型
- 普通文件(比如文本文件)
- 目录文件(特殊文件,存储文件清单,/也是一个文件)
- 可执行文件(rm这种命令文件就是可执行文件)
- 管道文件
- socket文件
- 软链接文件(相当于指向另一个文件所在路径的符号)
- 硬连接文件(指向另一个文件的指针)
ls -F 可以看到当前目录下文件和它的类型:
- *结尾是可执行文件
- =结尾是socket文件
- @结尾是软链接
- |结尾是管道文件
- 没有符号的是普通文件
- /结尾是目录文件
设备文件
Socket是网络插座,是客户端和服务端之间同步数据的接口。 Linux把设备抽象成文件,因为设备和操作系统交换数据就是有读,写两个操作。类似文件的操作。Linux把设备,如打印机,显卡等抽象成文件,使文件系统设计变得统一。
文件的增删改查
tips: man [指令] 可以查看相应指令的帮助,man是manual。比如man rm,man touch等。
增加
- touch:用来改变时间戳,但是如果没有文件,就会创建文件。
- mkdir: 创建目录(mkdir 目录名)
- mkdir -p:递归创建,比如创建A/B/C
查看
- ls: list缩写,查看文件夹内容
- ls -l: 展示详细信息,比如权限,大小,修改时间
- ls -a:显示所有
- ls -al:显示所有的详细信息
删除
- rm:删除文件
- rm -r:递归删除,删除目录
- rm -f:强制删除,-f force(删除不给提示)
修改
- nano,vim:Linux自带编辑器
查阅文件内容
- cat:适合浏览比较小的文件,比如配置文件。cat指令将文件连接到标准输出流并打印到屏幕
- 标准输出流(Standard Output)也是一种文件。
- more:定位是一个阅读过滤器,可以支持翻页,也支持文本搜索
- less:和more类似,less支持向上翻页,因此less用途比较多
- head/tail:head和tail是一组,他们读取头部N行或者尾部N行(tail -n 1000)
- tail -f:f是follow,会自动输出追加的内容(tailf)
- grep:g = global,re = regular expression,p = pattern,所以它的作用是通过正则全局搜索一个文件找到的匹配模式
- grep [一段ip] ./nginx_logs.txt
- grep [一个时间(20/April/2021:19:20)] ./nginx_logs.txt
查找文件
- which:文件所在位置(which grep =》返回grep指令文件所在位置)
- find:在文件系统中查找文件(find / -iname “*.txt”, -iname是用来匹配查找,i忽略大小写,-name是不忽略大小写)
总结
全文下来,收获很丰富,了解了很多知道,但是知之不深的一些指令。回到前面的问题,rm -rf /,会删除根目录及其下所有文件和文件夹,并不给任何提示。所以不要乱用啊~~