一、Linux目录结构
rootfs:根文件系统,根是"/"。
1、/boot
系统启动相关的文件,如内核、intrd、以及grub(bootloader)
root@hao:~# ls / boot abi - 3.2 . 0 - 29 -generic-pae grub memtest86+.bin System.map- 3.2 . 0 - 29 -generic- pae config - 3.2 . 0 - 29 -generic-pae initrd.img- 3.2 . 0 - 29 -generic-pae memtest86+_multiboot.bin vmlinuz- 3.2 . 0 - 29 -generic-pae
2、/dev
设备文件。所有的硬件都被识别为文件,比如插入一个U盘,也会在dev目录下创建一个文件,如下图。显示为青色的是符号链接文件,黄色为特殊文件,作为设备的访问入口存在。设备文件分为块设备和字符设备,块设备可以随机访问,按数据块访问。字符设备线性访问,字符为单位,比如显示器和鼠标。
3、/etc
配置文件。系统中所有的程序的配置文件都在该目录或其子目录下。因此,这里的文件大多是纯文本格式。
4、/home
用户家目录。默认为home下的跟用户名同名的目录,如
root@hao:~# ls / home hao
5、/root
root用户家目录。直接在根目录下,而不是在home下。
6、/lib
库文件及内核模块文件目录。库文件分为静态库.a和动态库.so(shared object 共享对象)两种。库是被调用的封装好的功能,在系统上执行时,共享库载入内存时,一份存储,多个程序使用。而静态库,直接链接到程序的地址空间并且作为程序的一部分存在。内核模块文件:/lib/modules。绿颜色,表示有执行权限。
7、/media
挂载点目录。把某个设备与某个目录建立关系就叫做挂载。media 用于挂载移动设备
8、/mnt
挂载点目录。挂载额外的临时文件系统。
9、/misc
杂项
10、/opt
可选目录。第三方程序的安装目录。现在通常放在/usr/local
11、/proc
伪文件系统。系统未启动时,没有任何内容,其实为空。系统启动后便不为空,为内核映像文件,保存内核的可调参数和内核工作的统计数据,系统调优和性能监控都与其相关。
12、/sys
伪文件系统。跟硬件设备相关的属性映射文件,修改磁盘调度队列时与其相关。
13、/tmp
临时文件目录。一般每个月会清除。每个用户都可创建,仅可删除自己创建的文件。
14、/var
可变化的文件目录。
15、/bin(binary)
用户命令。可执行文件。系统启动时需要的执行文件(二进制)
16、/sbin
管理命令。
17、/usr(Universal shared Read-Only)
只读文件。
/usr/(s)bin不同于/bin,这里的命令为了正常提供基本功能,与系统启动无关。
/usr/lib不同于/lib,这里的库不是公共库
/usr/local用来安装第三方软件
/usr/local/(s)bin
/usr/local/(s)bin
root@hao:~# ls / usr bin games include lib local sbin share src
二、Linux文件目录命名规则
1、长度不能超过255个字符
2、严格区分大小写
3、不能使用/
三、目录管理
前面讲的ls cd pwd命令外,还有下面命令
1、mkdir(make directory):创建空目录
-p:未加该选项时,创建目录一定要保证其父目录的存在,如下面的mkdir x/y/z要创建z目录,一定要保证x与y存在,如果不存在则需要先创建x再创建y然后再创建z。加上该选项可以在没有父目录的情况下,连同父目录一块创建。
-v(verbose):显示创建过程可以和-p选项一起使用
root@hao:~# mkdir x root@hao: ~# ls x root@hao: ~# mkdir x/ y root@hao: ~# mkdir x/y/ z root@hao: ~# sudo apt-get install tree Reading package lists... Done Building dependency tree Reading state information... Done ... root@hao: ~ # tree x x ` -- y ` -- z 2 directories, 0 files
root@hao:~# mkdir -p m/n/ t root@hao: ~ # tree m m ` -- n ` -- t 2 directories, 0 files
使用-pv,及花括号展开,来一次创建多个目录
root@hao:~# mkdir -pv /mnt/test/{x/ m,y} mkdir : created directory `/mnt/test ' mkdir : created directory `/mnt/test/x ' mkdir : created directory `/mnt/test/x/m ' mkdir : created directory `/mnt/test/y ' root@hao:~# tree / mnt / mnt ` -- test |-- x | `-- m ` -- y 4 directories, 0 files
使用-pv,在/mnt/test下创建 a_b,a_c,d_b,d_c
root@hao: ~# mkdir -pv /mnt/test/ {a,d}_{b,c} mkdir : created directory `/mnt/test/a_b ' mkdir : created directory `/mnt/test/a_c ' mkdir : created directory `/mnt/test/d_b ' mkdir : created directory `/mnt/test/d_c ' root@hao:~# tree / mnt / mnt ` -- test |-- a_b |-- a_c |-- d_b |-- d_c |-- x | `-- m ` -- y 8 directories, 0 files
2、rmdir(remove directory)删除目录
只能删除空目录,如果该目录删除,其父目录也为空,则其父目录也删除,如此递归
root@hao:~# rmdir /mnt/test/ y root@hao: ~# tree / mnt / mnt ` -- test |-- a_b |-- a_c |-- d_b |-- d_c ` -- x ` -- m 7 directories, 0 files
root@hao:~# tree / root / root |-- m | `-- n | `-- t ` -- x ` -- y ` -- z 6 directories, 0 files
root@hao:~# rmdir -p /root/x/y/ z rmdir : failed to remove directory `/root ' : Directory not empty root@hao:~# tree / root / root ` -- m ` -- n ` -- t 3 directories, 0 files