Linux 文件系统

1 Linux 文件系统简介

  1. 在 Linux 操作系统中,所有被操作系统管理的资源,例如网络接口卡、磁盘驱动器、打印机、输入输出设备、普通文件或是目录都被看作是一个文件;
  2. 在 Linux 系统中有一个重要的概念:一切都是文件。其实这是 Unix 哲学的一个体现,而 Linux 是重写 UNIX 而来,所以这个概念也就传承了下来。在 UNIX 系统中,把一切资源都看作是文件,包括硬件设备。UNIX 系统把每个硬件都看成是一个文件,通常称为设备文件,这样用户就可以用读写文件的方式实现对硬件的访问;

2 Linux 目录结构

Linux 文件系统的结构层次鲜明,就像一棵倒立的树,最顶层是其根目录。

在这里插入图片描述
目录说明:

  • /root:超级用户(系统管理员)的主目录;
  • /bin:存放二进制可执行文件(ls、cat、mkdir等),常用命令一般都在这里;
  • /etc:存放系统管理和配置文件;
  • /home:存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示;
  • /usr:用于存放系统应用程序;
  • /opt:额外安装的可选应用程序包所放置的位置。一般情况下,我们可以把tomcat等都安装到这里;
  • /proc:虚拟文件系统目录,是系统内存的映射。可直接访问这个目录来获取系统信息;
  • /sbin: 存放二进制可执行文件,只有root才能访问。这里存放的是系统管理员使用的系统级别的管理命令和程序。如ifconfig等;
  • /dev:用于存放设备文件;
  • /mnt:系统管理员安装临时文件系统的安装点,系统提供这个目录是让用户临时挂载其他的文件系统;
  • /boot:存放用于系统引导时使用的各种文件;
  • /lib:存放着和系统运行相关的库文件 ;
  • /tmp:用于存放各种临时文件,是公用的临时文件存储点;
  • /var:用于存放运行时需要改变数据的文件,也是某些大文件的溢出区,比方说各种服务的日志文件(系统启动日志等)等;
  • /lost+found: 这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows下叫XX.chk)就在这里;

3 Linux 文件类型

常见的文件类型及其含义有:

  • d:目录
  • -:普通文件
  • l:链接文件
  • c:字符设备文件
  • b:块设备文件

4 Linux 文件权限

用户分为三种:

  • 文件拥有者(owner)
  • 群组(group)
  • 其它人(other)

对不同的用户有不同的文件权限.

文件权限字段一共有 9 位。每 3 个为一组,共 3 组,每一组分别代表对文件拥有者、所属群组以及其他人的文件权限。一组权限中的 3 位分别为 r、w、x 权限,表示可读、可写、可执行;

文件权限字段的八进制模式

权限二进制位八进制位
---0000
--x0011
-w-0102
-wx0113
r--1004
r-x1015
rw-1106
rwx1117

修改权限

1 使用数字修改文件权限

命令基本格式为:

chmod [-R] 权限值 文件名

-R表示连同子目录中的所有文件,也都修改设定的权限。

示例:将 .bashrc 文件的权限修改为 -rwxr-xr–。

chmod 754 .bashrc

2 使用字母修改文件权限

命令基本格式为:

chmod [ugoa]  [+-=] [rwx] dirname/filename


- u:拥有者
- g:所属群组
- o:其他人
- a:所有人
- +:添加权限
- -:移除权限
- =:设定权限

示例:为 .bashrc 文件的所有用户添加写权限。

chmod a+w .bashrc

5 Linux 文件属性

使用 ls -l查看一个文件的信息时,会显示一个文件的信息,例如

drwxr-xr-x 3 root root 17 May 6 00:14 .config

对这个信息的解释如下:

  • drwxr-xr-x:文件类型以及权限,第 1 位为文件类型字段(这里是 d,即目录),后 9 位为文件权限字段(rwxr-xr-x)
  • 3:链接数
  • root:文件拥有者
  • root:所属群组
  • 17:文件大小
  • May 6 00:14:文件最后被修改的时间
  • .config:文件名

6 目录的基本操作

6.1 ls

列出文件或者目录的信息,目录的信息就是其中包含的文件。

# ls [-aAdfFhilnrRSt] file|dir
-a :列出全部的文件
-d :仅列出目录本身
-l :以长数据串行列出,包含文件的属性与权限等等数据
...

6.2 cd

更换当前目录。

cd [相对路径或绝对路径]

6.3 mkdir

创建目录。

# mkdir [-mp] 目录名称
-m :配置目录权限
-p :递归创建目录

6.4 rmdir

删除目录,目录必须为空。

rmdir [-p] 目录名称
-p :递归删除目录

6.5 pwd

显示当前所在位置。

7 文件的基本操作

7.1 touch

  1. 把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来;
  2. 用来创建新的空文件;
# touch [-acdmt] filename
-a :更新读取时间
-c :若该文件不存在则不建立新文件
-m :更新修改时间
-d :后面可以接更新日期而不使用当前日期,也可以使用 --date="日期或时间"
-t :后面可以接更新时间而不使用当前时间,格式为[YYYYMMDDhhmm]

7.2 cp

复制文件。如果源文件有两个以上,则目的文件一定要是目录才行。

# cp [-adfilprsu] source destination
-a :相当于 -dr --preserve=all
-d :若来源文件为链接文件,则复制链接文件属性而非文件本身
-i :若目标文件已经存在时,在覆盖前会先询问
-p :连同文件的属性一起复制过去
-r :递归复制
-u :destination 比 source 旧才更新 destination,或 destination 不存在的情况下才复制
--preserve=all :除了 -p 的权限相关参数外,还加入 SELinux 的属性, links, xattr 等也复制了

7.3 rm

删除文件。

# rm [-fir] 文件或目录
-f :即使原档案属性设为唯读,亦直接删除,无需逐一确认
-i :删除前逐一询问确认
-r :将目录及以下之档案亦逐一删除

7.4 mv

移动文件。

# mv [options] source dest
# mv [options] source... directory
-b: 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。
-i: 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。
-f: 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。
-n: 不要覆盖任何已存在的文件或目录。
-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。

7.5 vim

文本编辑器。

  • i 切换到输入模式,以输入字符;
  • : 切换到底线命令模式,以在最底一行输入命令。
命令作用
:w写入磁盘
:w!当文件为只读时,强制写入磁盘。到底能不能写入,与用户对该文件的权限有关
:q离开
:q!强制离开不保存
:wq写入磁盘后离开
:wq!强制写入磁盘后离开



8 获取文件内容

8.1 cat

取得文件内容。

# cat [-AbEnTv] filename
-n :打印出行号,连同空白行也会有行号,-b 不会

8.2 tac

是 cat 的反向操作,从最后一行开始打印。

8.3 more

和 cat 不同的是它可以一页一页查看文件内容,比较适合大文件的查看。

8.4 less

和 more 类似,但是多了一个向前翻页的功能。

8.5 head

取得文件前几行。

# head [-n number] filename
-n :后面接数字,代表显示几行的意思

8.6 tail

是 head 的反向操作,取得文件后几行。

9 文件搜索

9.1 whereis

文件搜索。速度比较快,因为它只搜索几个特定的目录。

# whereis [-bmsu] dirname/filename

9.2 locate

文件搜索。可以用关键字或者正则表达式进行搜索。

locate 使用 /var/lib/mlocate/ 这个数据库来进行搜索,它存储在内存中,并且每天更新一次,所以无法用 locate 搜索新建的文件。可以使用 updatedb 来立即更新数据库。

# locate [-ir] keyword
-r:正则表达式

9.3 find

文件搜索。可以使用文件的属性和权限进行搜索。

# find [basedir] [option]
# examples:
find -name "target.java" # 当前目录下查找文件
find / -name "target.java" # 根目录下查找文件
find ~ -name "target.java" # /home 目录下查找文件
find ~ -name "target.*" # /home 目录下查找文件(模糊查询)
find ~ -iname "target.java" # /home 目录下查找文件(忽略大小写)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hellosc01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值