《鸟哥的Linux私房菜》学习笔记(3)——根文件系统
一、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