目录
2.6 Linux系统的目录结构
2.7 目录操作命令
2.8 文件操作命令
2.6 Linux系统的目录结构
1、Linux目录结构的特点
分区加载于目录结构:
使用树形目录结构来组织和管理文件。整个系统只有一个位于根分区的一个根目录(树根)、一棵树。其他所有分区、目录、文件以及外部设备(如硬盘、光驱等)都是以根目录为起点,挂接在目录树的某个目录中的,通过访问挂载点目录,即可实现对这些分区的访问。Linux的根目录用 “ / ” 表示。
而Windows的目录结构属于分区,每个主分区或逻辑分区都有一个独立的根目录和相应的树形目录结构,各分区采用盘符进行区分和标识。
以下是Linux系统的目录结构:
/ | Linux文件系统的最上层根目录,其他所有目录均是该目录的子目录 |
/bin | Binary的缩写,存放普通用户可执行的程序或命令 |
/boot | 存放系统启动时所需的文件,这些文件若损坏常会导致系统无法启动,一般不要改动 |
/dev | dev是设备(device)的英文缩写。包括所有的设备文件 |
/etc(来源于法语,属于历史遗留问题) | 存放了系统管理时要用到的各种配置文件和子目录 |
/home | 存放一般用户的个人目录 |
/lib | 是库(library)的英文缩写,存放系统的各种库文件 |
/lib64 | 存放系统本身需要用到64位程序的共享函数库(library) |
/mnt | 可以临时将别的文件系统挂在这个目录下,即为其他的文件系统提供安装点 |
/media | 原本是用于存放媒体文件的,后来也可以用来将别的文件系统挂载在这个目录下 |
/opt | 该目录通常提供给较大型的第三方应用程序使用,例如Sun Staroffice、Corel WordPerfect,这可避免将文件分散至整个文件系统 |
/proc | 可以在这个目录下获取系统信息,这些信息是在内存中由系统自己产生的 |
/root | 超级用户的个人目录,普通用户没有权限访问 |
/run | 保存自系统启动以来描述系统信息的文件 |
/sbin | 和/bin类似,这些文件往往用来进行系统管理,只有root用户可以使用 |
/srv | srv是服务(server)的简写,服务启动之后需要访问的数据目录 |
/sys | 本目录是将内核的一些信息映射文件,以供应用程序所用 |
/tmp | 用来存放不同程序执行时产生的临时文件。 |
/home | 存放一般用户的个人目录 |
/usr | 一般用户程序安装所在的目录,用于安装各种应用程序 |
/var | 通常各种系统日志文件放在这里 |
2、工作目录、用户家目录及路径
用“路径”来表示某个文件(或目录)在目录结构中所处的位置。顾名思义,路径是指从树型目录中的某个目录层次到达某一文件或子目录的一条线路,路径以“/”为分隔符的多个目录名构成。
路径可分为:
①绝对路径:是指以根目录“/”为起点来表示系统中某个文件(或目录)的位置的方式。
②相对路径:是以当前目录为起点,表示系统中某个文件或目录在目录结构中的位置的方式。
3、Linux的文件类型大致可分为:
-:普通文件,用于存放数据、程序等信息的文件。
d:directory,目录文件,是由文件中一个目录所包含的目录项所组成的文件。
l:link file,链接文件,又称符号链接文件,用于不同目录下文件的共享。实际上它指向另一个文件。
设备文件:用于与I/O设备提供连接的一种文件,分为:
b:block,块设备文件,表示磁盘、光盘等
c:character,字符设备文件,联系着按照字符进行操作的终端、键盘等设备。
p:pipe,管道文件,主要用于在进程间传递数据
s:socket,套接字文件,通常用于网络数据连接
注:Linux没有隐藏属性,文件或目录要实现隐藏,在命名时只要以“.”开头即可,对于隐藏文件或目录,必须携带“-a”参数的ls命令才能查看到。
查看文件系统类型:
[root@rhcsa ~]# ls -l /dev/tty1
crw--w----. 1 gdm tty 4, 1 May 17 21:04 /dev/tty1
[root@rhcsa ~]# ls -l /dev/nvme0n1
brw-rw----. 1 root disk 259, 0 May 17 21:04 /dev/nvme0n1
[root@rhcsa ~]# ls -l anaconda-ks.cfg
-rw-------. 1 root root 1657 Apr 17 18:21 anaconda-ks.cfg
[root@rhcsa ~]# ls -l /bin/sh
lrwxrwxrwx. 1 root root 4 Aug 30 2019 /bin/sh -> bash
[root@rhcsa ~]# ls -l /tmp/
drwx------. 2 root root 6 May 14 10:10 vmware-root_1032-2999133043
[root@rhcsa ~]# ls -l /run/dmeventd-client
prw-------. 1 root root 0 May 17 21:04 /run/dmeventd-client
#套接字文件我的虚拟机里/dev/run目录下并未找到,找了一个命令
# ls -l /dev/log
srw-rw-rw- 1 root root 0 12月 26 09:20 /dev/log
使用file查看文件类型
[root@rhcsa ~]# file anaconda-ks.cfg
anaconda-ks.cfg: ASCII text
2.7 目录操作命令
路径(定位文件)
1、查看当前的工作目录(Print Working Directory)--- pwd命令
[root@rhcsa ~]# pwd
/root
2、改变工作目录(Change Directory)--- cd命令
cd /usr/local/lib //改变目录到/usr/local/lib目录下
cd .. //进入当前目录的父目录
cd ../etc //进入当前目录的父目录下的etc子目录
cd ~ //进入root用户登录时的工作目录(家目录)
cd 桌面 //进入当前目录下的“桌面”子目录
cd //进入当前用户的家目录
[root@rhcsa /]# cd /usr/local/lib
[root@rhcsa lib]#
3、列表(list)显示目录内容 --- ls命令
命令格式:ls [选项] 文件名或目录名
常用选项:
选项 | 功能 |
-a | 显示所有子目录和文件的信息,包括名称以“.”开头的隐藏目录和隐藏文件 |
-A | 与-a选项的作用类似,但不显示表示当前目录的“.”和表示父目录的“..”。 |
-c | 带-lt:排序,并显示ctime(文件状态信息最后一次修改的时间); with-l:显示ctime并按名称排序;否则:按ctime排序,最新优先 |
-d | 显示指定目录本身的信息,而不显示目录下的各个文件和子目录的信息。 |
-h | 以更人性化的方式显现出目录或文件的大小,默认的大小单位为字节,使用-h选项后将显示为K、M等单位。此选项需要和-l选项结合使用才能体现出结果。 |
-l | 以长格形式显示文件和目录的详细信息,ls命令默认只显示名称的短格式。 |
-R | 以递归的方式显示指定目录及其子目录中的所有内容。 |
示例:
[root@rhcsa /]# ls -alh
4、创建目录(make directory)--- mkdir命令
命令格式:mkdir [-p] [/路径/] 目录名
-p:可快速创建出目录结构中指定的每个目录,对于已存在的目录不会被覆盖
示例:
[root@rhcsa /]# mkdir -p /test/mk
5、统计目录及文件的空间占用情况 --- du命令
功能:查看某个目录中的各级子目录所占用的磁盘空间数。
命令格式:du [选项] [目录名]
如果不跟目录名,则缺省为当前目录。
选项:
选项 | 功能 |
-a | 统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录。 |
-s | 只统计每个参数所占用空间总的大小,而不是统计每个子目录、文件的大小。 |
-h | 以K,M,G为单位显示磁盘使用情况,以提高信息的可读性。 |
示例:
[root@rhcsa lib]# du -ah /test
0 /test/mk
0 /test
2.8 文件操作命令
1、新建空文件或更新已有文件或目录的修改日期 --- touch命令
格式:touch [选项] 文件或目录名列表
功能:若指定的文件或目录已存在,则将文件或目录的日期和时间修改为当前系统的日期和时间。
若指定的文件不存在,则以指定的文件名创建空文件
选项:
选项 | 功能 |
-d yyyymmdd | 把文件的存取或修改时间改为 yyyy年mm月dd日。 |
-a | 只把文件的存取时间改为当前时间。 |
-m | 只把文件的修改时间改为当前时间。 |
示例:
[root@rhcsa test]# touch file{1..9}
[root@rhcsa test]# ls
file1 file2 file3 file4 file5 file6 file7 file8 file9 mk
2、stat 命令
stat 是查看文件详细信息的命令,而且可以看到文件的这三个时间, 其基本信息如下。
命令名称: stat。
英文原意: display file or file system status。
所在路径: /usr/bin/stat。
执行权限:所有用户。
功能描述:显示文件或文件系统的详细信息。
[root@rhcsa test]# stat file1
File: file1
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 613278 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:default_t:s0
Access: 2023-05-17 21:48:53.158416504 +0800 #访问文件时间
Modify: 2023-05-17 21:48:53.158416504 +0800 #数据修改时间
Change: 2023-05-17 21:48:53.158416504 +0800 #状态修改时间
Birth: -
3、复制(copy)文件或目录 --- cp命令
功能:目录或文件的复制。
命令:cp [选项] 源文件 目标文件
选项:
选项 | 功能 |
-a | 通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝目录 |
-d | 拷贝时保留链接。 |
-f | 在覆盖已经存在的目标文件时不提示。 |
-i | 在覆盖目标文件之前将给出提示要求用户确认。回答y时目标文件将被覆盖,是交互式拷贝。 |
-p | 除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中。 |
-r | 若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名。 |
-l | 不作拷贝,只是链接文件。 |
示例:
[root@rhcsa test]# cp -r mk ack
[root@rhcsa test]# ls
ack file1 file2 file3 file4 file5 file6 file7 file8 file9 mk
3.移动(mv)文件或目录 --- mv命令
mv命令用于剪切或重命名文件,英文全称为:“move”
语法格式为:“mv [参数] 源文件名称 目标文件名称”。
剪切操作不同于复制操作,因为它会把源文件删除掉,只保留剪切后的文件。如果在同一个目录中将某个文件剪切后还粘贴到当前目录下,其实本质就是对文件进行了重命名操作:
示例:
[root@rhcsa test]# mv file12 filex2
[root@rhcsa test]# ls
ack file1 file3 file4 file5 file6 file7 file8 file9 filex2 mk
4.删除(remove)文件或目录 --- rm命令
格式:rm [选项] 文件或目录名及路径
功能:删除文件或目录,可包含一个或多个文件名(各文件间用空格分隔)或用通配符表达,以实现删除多个文件或目录。
选项:
选项 | 功能 |
-f | 在覆盖已经存在的目标文件时不提示。 |
-i | 在覆盖目标文件之前将给出提示要求用户确认。回答y时目标文件将被覆盖,是交互式拷贝。 |
-r | 递归删除整个目录树。 |
注:不要将rm -rf *在任意一个目录下使用,否则将会导致严重的后果(除非有特殊需要)
5.为文件或目录建立链接(Link)——ln命令
命令格式: ln [选项] 被链接的源文件或目录 链接文件或目标目录
选项:
选项 | 功能 |
-s | 建立符号链接(软链接),不加该选项时建立的链接为硬链接。 |
-f | 删除已经存在目标文件与源文件之间的链接关系。 |
-i | 交互式地删除目标文件与源文件之间的链接关系。 |
软链接和硬链接的区别:
比较 | 硬链接 | 符号链接(软链接) |
不同点 | 使用不带选项-s的ln命令创建 | 使用带选项-s的ln命令创建 |
只能在与源文件相同的文件系统、分区 和挂载设备上创建 | 可跨越不同的文件系统、分区和挂载设备创建 | |
只能针对文件创建硬链接,不能针对目录 | 针对文件和目录均可建立软链接 | |
具有硬链接关系的两个文件名指向的是 硬盘上的同一块存储空间 | 一个文件(或目录)指向另外一个文件(或目录)的 文件名(或目录名),类似于Windows系统中的快 捷方式 | |
删除硬链接的任何一方文件后,另一方文 件仍然有效 | 删除源文件或目录后,软链接文件或目录无效 | |
相同点 | 对任何一方的内容进行修改都会影响到 另一方 | |
链接文件都不会将源文件复制一份,只会 占用非常少量的用于存储链接信息的存 储空间 |