Linux目录结构的特点
分区 ‘加载’ 于目录结构:
使用树形目录结构来组织和管理文件。
整个系统只有一个位于根分区的一个根目录(树根)、一棵树
其他所有分区、目录、文件以及外部设备(如硬盘、光驱等)都是以根目录为起点,挂接在目录树的
某个目录中的
通过访问挂载点目录,即可实现对这些分区的访问。
Linux的根目录用“/”表示
Windows的目录结构属于分区;
每个主分区或逻辑分区都有一个独立的根目录和相应的树形目录结构,各分区采用盘符进行区分和标识。
/ | 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 | 通常各种系统日志文件放在这里 |
工作目录、用户家目录及路径
用“路径”来表示某个文件(或目录)在目录结构中所处的位置。顾名思义,路径是指从树型目录中的某个目录层次到达某一文件或子目录的一条线路,路径由以“/”为分隔符的多个目录名构成。
路径可分为:
绝对路径:是指以根目录“/”为起点来表示系统中某个文件(或目录)的位置的方式
相对路径:是以当前目录为起点,表示系统中某个文件或目录在目录结构中的位置的方式。
Linux的文件类型大致可分为:
普通文件:用于存放数据、程序等信息的文件。
目录文件:是由文件系统中一个目录所包含的目录项组成的文件。
链接文件:又称符号链接文件, 用于不同目录下文件的共享。实际上它指向另一个文件。
设备文件:用于与I/O设备提供连接的一种文件,分为
块设备:文件:表示磁盘、光盘等
字符设备:文件:联系着按照字符进行操作的终端、键盘等设备。
管道文件:主要用于在进程间传递数据。
套接字文件 :套接字(socket)文件通常用于网络数据连接。
说明:
Linux没有隐藏属性,文件或目录要实现隐藏,在命名时只要以“.”开头即可。
对于隐藏文件或目录,必须使用带“-a”参数的ls命令才能查看到。
查看文件系统类型:
方法1:使用ls -l
# ls -l /dev/tty1
crw--w---- 1 root tty 4, 1 12月 26 09:20 /dev/tty1
# ls -l /dev/sda
brw-rw---- 1 root disk 8, 0 12月 26 09:20 /dev/sda
# ls -l anaconda-ks.cfg
-rw-------. 1 root root 1486 11月 27 10:26 anaconda-ks.cfg
# ls -l /bin/sh
lrwxrwxrwx. 1 root root 4 11月 27 10:52 /bin/sh -> bash
# ls -ld /tmp/
drwxrwxrwt. 12 root root 4096 12月 26 12:21 /tmp/
# ls -l /run/dmeventd-client
prw------- 1 root root 0 12月 26 09:20 /run/dmeventd-client
# ls -l /dev/log
srw-rw-rw- 1 root root 0 12月 26 09:20 /dev/log
方法2: 使用file
# file anaconda-ks.cfg
anaconda-ks.cfg: ASCII text
# file /dev/sda
/dev/sda: block special
# file /dev/tty1
/dev/tty1: character special
# file /tmp
/tmp: sticky directory
# file /dev/log
/dev/log: socket
# file /bin/sh
/bin/sh: symbolic link to `bash'
# file /run/dmeventd-client
/run/dmeventd-client: fifo (named pipe)
目录操作命令
名规则:
1、长度不能超过255个字符;
2、不能使用/当文件名;
3、严格区分大小写;
绝对路径: 从/开始的路径 /home/alice/file1
相对路径: 相对于当前目录开始 a.txt ./a.txt ../bob/b.txt [假如:此时在目录/home/alice]
1.查看当前的工作目录(Print Working Directory)——pwd命令
2.改变工作目录(Change Directory)——cd命令
3.列表(list)显示目录内容——ls命令
# cd /usr/local/lib //改变目录到/usr/local/lib目录下
# cd .. //进入当前目录的父目录
# cd ../etc //进入当前目录的父目录下的etc子目录
# cd ~ //进入root用户登录时的工作目录(家目录)
# cd 桌面 //进入当前目录下的“桌面”子目录
# cd //进入当前用户的家目录
命令格式:ls [选项] 文件名或目录名
常用选项:
选项 | 功能 |
-a | 显示所有子目录和文件的信息,包括名称以“.”开头的隐藏目录和隐藏文件。 |
-A | 与-a选项的作用类似,但不显示表示当前目录的“.”和表示父目录的“..”。 |
-c | 按文件的修改时间排序后,予以显示。 |
-d | 显示指定目录本身的信息,而不显示目录下的各个文件和子目录的信息。 |
-h | 以更人性化的方式显示出目录或文件的大小,默认的大小单位为字节,使用-h选项后将显示为 K、M等单位。此选项需要和-l选项结合使用才能体现出结果。 |
-l | 以长格形式显示文件和目录的详细信息,ls命令默认只显示名称的短格式。 |
-R | 以递归的方式显示指定目录及其子目录中的所有内容。 |
创建目录(make directory)——mkdir命令
命令格式: mkdir [-p] [/路径/]目录名
-p——可快速创建出目录结构中指定的每个目录,对于已存在的目录不会被覆盖
示例:
我们在创建目录前先用ls进行查找;然后再用用 madir -p /root/test 创建一个目录;创建目录完成后我们可以用ls进行查找,我们会发现我们创建了一个新的目录test。我们可以看出在创建前我们是没有test这个目录的,但是在我们用了mkdir命令创建test目录后我们在用ls查询,就出现了我我们新创建的目录
[root@ccw ~]# ls
12345 Public
anaconda-ks.cfg Templates
betxin.txt test1
cont-1743875-13176484-155100_adpkg-ad_hd.mp4 test2
Desktop test3
Documents test4
Downloads test5
index.html test8
index.html.1 Videos
index.html.2 wget-log3
index.html.3 wget-log_backup
initial-setup-ks.cfg wget-log_hlink
log3 wget-log_link
Music wget-log_slink
Pictures
[root@ccw ~]# mkdir -p /root/test
[root@ccw ~]# ls
12345 Public
anaconda-ks.cfg Templates
betxin.txt test
cont-1743875-13176484-155100_adpkg-ad_hd.mp4 test1
Desktop test2
Documents test3
Downloads test4
index.html test5
index.html.1 test8
index.html.2 Videos
index.html.3 wget-log3
initial-setup-ks.cfg wget-log_backup
log3 wget-log_hlink
Music wget-log_link
Pictures wget-log_slink
[root@ccw ~]#
接下来我们将用两种方法在我建立的test目录中建立文本文件text1.txt和rext2.txt
新建空文件或更新已有文件或目录的修改日期——touch命令
格式: touch [选项] 文件或目录名列表
功能:
若指定的文件或目录已存在,则将文件或目录的日期和时间修改为当前系统的日期和时间。
若指定的文件不存在,则以指定的文件名创建空文件
选项:
选项 | 功能 |
-d yyyymmdd | 把文件的存取或修改时间改为 yyyy年mm月dd日。 |
-a | 只把文件的存取时间改为当前时间。 |
-m | 只把文件的修改时间改为当前时间。 |
我们在test中建立文本文件,我们首先需要进入到test这个目录中去(cd beixin/),进入目录后我们输入touch test1.txt,然后我们在用ls,查找test中的文件就会有test1.txt文本文件
[root@ccw ~]# cd test/
[root@ccw test]# touch test1.txt
[root@ccw test]# ls
test1.txt
而我们的第二种添加文本文件的方式是在test的目录中用vim test2.txt,去建立文本文件,因为 vim 可以直接打开文本文件如果目录中没有此文本文件会自动建立这个文本文件,我们想要退出文本,先Esc退出编辑模式,然后用冒号+wq,退出即可。
[root@ccw test]# vim test2.txt
[root@ccw test]# ls
test1.txt test2.txt
使用Vim在文件text1.txt中写入
Welcome to my Linux.
You are the best.
This is my first file to create on linux
接下来我们将test中的文件拷贝到test2目录
cp命令
功能:目录或文件的复制。
命令:cp [选项] 源文件 目标文件
选项
选 项 | 功能 |
-a | 通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝目录 |
-d | 拷贝时保留链接。 |
-f | 在覆盖已经存在的目标文件时不提示。 |
-i | 在覆盖目标文件之前将给出提示要求用户确认。回答y时目标文件将被覆盖,是交互式拷 贝。 |
-p | 除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中。 |
-r | 若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标 文件必须为一个目录名。 |
-l | 不作拷贝,只是链接文件。 |
复制过去之后我们会发现它自动创建test2这个目录
[root@ccw ~]# cp -r test test2
[root@ccw ~]# ls
12345 Public
anaconda-ks.cfg Templates
betxin.txt test
cont-1743875-13176484-155100_adpkg-ad_hd.mp4 test1
Desktop test2
Documents test3
Downloads test4
index.html test5
index.html.1 test8
index.html.2 Videos
index.html.3 wget-log3
initial-setup-ks.cfg wget-log_backup
log3 wget-log_hlink
Music wget-log_link
Pictures wget-log_slink
我们用进入test2的目录用ls查看后可以看到test2中有test1中的文本文件,然后我们用more test.txt,可以看到之前写的文字。
[root@ccw ~]# cd test2
[root@ccw test2]# vim
[root@ccw test2]# ls
test1.txt test2.txt
[root@ccw test2]# more test1.txt
Welcome to my Linux.
You are the best.
This is my first file to create on linux
将test2目录中的test1.txt重命名为test111.txt
mv命令
mv命令用于剪切或重命名文件,英文全称为:“move”
语法格式为:“mv [参数] 源文件名称 目标文件名称”。
剪切操作不同于复制操作,因为它会把源文件删除掉,只保留剪切后的文件。如果在同一个目录中将某个文件剪切后还粘贴到当前目录下,其实本质就是对文件进行了重命名操作:
[root@ccw test2]# mv test1.txt test111.txt
[root@ccw test2]# ls
test111.txt test2.txt
在test2目录中新建test111.txt的软链接文件 test111_soft.txt
为文件或目录建立链接(Link)——ln命令
命令格式: ln [选项] 被链接的源文件或目录 链接文件或目标目录
选项:
-s——建立符号链接(软链接),不加该选项时建立的链接为硬链接。
-f——删除已经存在目标文件与源文件之间的链接关系。
-i——交互式地删除目标文件与源文件之间的链接关系。
软连接(ln -s test111.txt test111_soft.txt)
[root@ccw test2]# ln -s test111.txt test111_soft.txt
[root@ccw test2]# ls
test111_soft.txt test111.txt test2.txt
硬链接(ln test111.txt test111_hard.txt)
[root@ccw test2]# ln test111.txt test111_hard.txt
[root@ccw test2]# ls
test111_hard.txt test111_soft.txt test111.txt test2.txt
删除test目录中test1.txt
删除test目录
我们可以用cd ~退出test2文件目录,然后我们用cd test/ 进入test,然后我们用rm -rf test1.txt删除test中的文本文件,删除完后再用 cd ~ 退出test,然后用 rm -rf test 删除test文件。
[root@ccw test2]# cd ~
[root@ccw ~]# cd test/
[root@ccw test]# ls
test1.txt test2.txt
[root@ccw test]# rm -rf test1.txt
[root@ccw test]# ls
test2.txt
[root@ccw test]# cd ~
[root@ccw ~]# rm -rf test
[root@ccw ~]# ls
12345 Public
anaconda-ks.cfg Templates
betxin.txt test1
cont-1743875-13176484-155100_adpkg-ad_hd.mp4 test2
Desktop test3
Documents test4
Downloads test5
index.html test8
index.html.1 Videos
index.html.2 wget-log3
index.html.3 wget-log_backup
initial-setup-ks.cfg wget-log_hlink
log3 wget-log_link
Music wget-log_slink
Pictures
rm命令
格式:rm [选项] 文件或目录名及路径
功能:删除文件或目录,可包含一个或多个文件名(各文件间用空格分隔)或用通配符表达,以实现删除多
个文件或目录。
选 项 | 功能 |
-f | 在覆盖已经存在的目标文件时不提示。 |
-i | 在覆盖目标文件之前将给出提示要求用户确认。回答y时目标文件将被覆盖,是交互式拷 贝。 |
-r | 递归删除整个目录树。 |
本次分享到此结束,谢谢大家的观看!