linux入门之目录结构和文件管理
前言
文章的内容来源拉钩教育上的课程学习,通过写博客的方式,更好的提高对该知识的掌握。
一、Shell是什么?
- 在我们学习Linux之前,先说下什么是shell,所谓的shell就是把我们输入的指令,传递到操作系统中去执行,所以shell是一个命令行的用户界面。
- 早期程序员没有图形界面,就用shell,而且图形制作成本高,不能实现所有功能,所以shell编程还是在使用。
- 平时我们还会看到一个词,叫做bash(Bourne Again Shell),它是shell组成的程序,这里的Bourne,还是个人名,Steve Bourne是bash的发明者。
- 所有的指令,不是写死在操作系统中,而是一个个程序,可以通过which 指令查看它所在目录。
如ls,通过命令 which ls 即可以查找目录文件夹位置
二、Linux对目录的抽象
- Linux对文件进行了一个树状的抽象。/代表根目录,每一节目录也有/分开,所以上图结果,/usr/bin/ls中,第一级目录是/根目录,第二级时usr目录,第三级时bin目录,最后是ls。
1.路径
- 如/usr/bin/ls 是可执行文件ls的路径。路径就是一个文件在文件系统中的地址。如果文件系统是树型结构,那么通常一个文件只有一个路径。
- 目标文件的绝对路径(Absolute path),也称为完全路径(full 路径),是从 /开始,接下来每一级都是一级子目录,直到定位到目标文件为止。
2.工作目录
-
为了方便工作,shell也抽象出工作目录,当用户打开Shell的时候,Shell就会给用户安排一个工作目录,也就产生了相对路径(Relative
path)- 当用户在/usr目录下, ls文件的相对路径是bin/ls
- 当用户在/usr/bin目录下,ls文件的相对的路径就是当前路径./ls
- 当用户在/usr/bin/somdir下,那么ls的文件的相对路径即使 …/ls
3.常见的几种文件类型
-
常见的文件类型有7种:
1.普通文件(如一个文本文件)
2.目录文件(目录也是一个特殊的文件,它用例存储文件清单,如/也是一个文件)
3.可执行文件(上面ls就是一个可执行文件)
4.管道文件
5.Socket文件
6.软链接文件(相当于指向另一个文件的符号)
7.硬链接文件(相当于指向另一个文件的指针) -
使用ls -F 就可以看到当前目录下的文件和它的类型
1.*结尾的是可执行文件
2.=结尾的是Socket文件
3.@结尾的是软链接
4.|结尾的是管道文件
5.没有符号结尾的是普通文件
6./结尾的是目录
设备文件
Socket是网络插座,是客户端和服务器之间同步数据的接口。其实,Linux不只是把socket抽象成了文件,设备基本也被抽象成文件。因为设备需要不断和操作系统交换数据。而交换方式只有两种—读和写。所以设备是可以被抽象成文件的,因为文件也支持这两种操作。
4.文件的增删改查
-
增加
创建一个普通文件的方法有很多种,最常见的有touch指令,如下面创建以一个demo.txt
创建一个目录 使用mkdir(make directory)
-
查看
通过ls指令查看当前目录下的文件,ls是list的缩写
通过pwd查看当前目录文件夹
文件较小,可以使用cat指令。
more 可以帮助我们读取文件,但不需要读取整个文件到内存中。
less是一个和more类似的指令,less支持向上翻阅。grep
-
有时需要查看一个指定的ip的nginx日志,或者查看一段时间内的nignx日志。如果不想用less和more进入文件中去查看,就用grep命令。
-
Linux的文件命令风格很短,所以影响了很多人,gerp这个词,可以分为三段来看,是g | re | p
·g就是global,全局
·re就是regular expression,正则表达式
·p 就是 pattern,模式 -
查找文件
- find指令帮助我们在文件系统中查找文件。比如我们如果想要查找所有的.txt扩展名的文件,可以使用
- find / -iname “*.txt” ,-iname这个参数是用来匹配查找的,i字母代表忽略大小写,这里也可以用-name替代。
-
删除
通过rm指令删除刚刚创建的demo.txt文件和demo文件夹
-
修改
修改一个文件,可以使用nano或者vi编辑器,nano和vi是自带的
vi编辑器需要自己去细化学习。
面试题
- rm / -rf的作用是?
- rm 是删除
- /是文件系统根目录
- -r是递归(recursive)
- f是强制(force),遇到只读文件也不提示,直接删除。 综合即是删除整个文件系统上的所有文件,并不给用户提示。