Linux的文件系统和目录结构图:
先看centos6.8的目录结构:用tree命令可以查看,如果没安装请使用 sudo yum install tree 命令安装
- [root@centos6 cent]# tree / -L 1
- /
- ├── bin 1
- ├── boot 2
- ├── dev 3
- ├── etc 4
- ├── home 5
- ├── lib 6
- ├── lib64 7
- ├── lost+found centos7已弃用
- ├── media 8
- ├── misc centos7已弃用
- ├── mnt 9
- ├── net centos7已弃用
- ├── opt 10
- ├── proc 11
- ├── root 12
- ├── sbin 13
- ├── selinux centos7已弃用
- ├── srv 14
- ├── sys 15
- ├── tmp 16
- ├── usr 17
- └── var 18
再看centos7的目录结构:用tree命令可以查看
- [root@localhost ~]# tree / -L 1
- /
- ├── bin -> usr/bin 1
- ├── boot 2
- ├── dev 3
- ├── etc 4
- ├── home 5
- ├── lib -> usr/lib 6
- ├── lib64 -> usr/lib64 7
- ├── media 8
- ├── mnt 9
- ├── opt 10
- ├── proc 11
- ├── root 12
- ├── run centos7新特性
- ├── sbin -> usr/sbin 13
- ├── srv 14
- ├── sys 15
- ├── tmp 16
- ├── usr 17
- └── var 18
RHEL7目录变化:
/bin 和 /usr/bin
/sbin 和 /usr/sbin
/lib 和/usr/lib
/lib64 和 /usr/lib64
还有一张整理好的图片:
文件系统结构详解:
/boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器 (bootloader, grub)都存放于此目录
/bin:供所有用户使用的基本命令;不能关联至独立分区, OS启动即会用到的程序
/sbin:管理类的基本命令;不能关联至独立分区,OS启动即 会用到的程序
/lib:启动时程序依赖的基本共享库文件以及内核模块文件 (/lib/modules)
/lib64:专用于x86_64系统上的辅助共享库文件存放位置
/etc:配置文件目录
/home/USERNAME:普通用户家目录
/root:管理员的家目录
/media:便携式移动设备挂载点
/mnt:临时文件系统挂载点
/dev:设备文件及特殊文件存储位置 b: block device,随机访问 c: character device,线性访问
/opt:第三方应用程序的安装位置
/srv:系统上运行的服务用到的数据
/tmp:临时文件存储位置
/usr: universal shared, read-only data
bin: 保证系统拥有完整功能而提供的应用程序
sbin:
lib:32位使用
lib64:只存在64位系统
include: C程序的头文件(header files)
share:结构化独立的数据,例如doc, man等
local:第三方应用程序的安装位置 bin, sbin, lib, lib64, etc, share
/var: variable data files
cache: 应用程序缓存数据目录
lib: 应用程序状态信息数据
local:专用于为/usr/local下的应用程序存储可变数据;
lock: 锁文件
log: 日志目录及文件
opt: 专用于为/opt下的应用程序存储可变数据;
run: 运行中的进程相关数据;通常用于存储进程pid文件
spool: 应用程序数据池
tmp: 保存系统两次重启之间产生的临时数据
/proc: 用于输出内核与进程信息相关的虚拟文件系统
/sys:用于输出当前系统上硬件设备相关信息虚拟文件系统
/selinux: security enhanced Linux,selinux相关的安全策 略等信息的存储位置
一些重要目录:
二进制程序:
- /bin
- /sbin
- /usr/bin
- /usr/sbin
- /usr/local/bin
- /usr/local/sbin
库文件:
- /lib
- /lib64
- /usr/lib
- /usr/lib64
- /usr/local/lib
- /usr/local/lib64
配置文件:
- /etc
- /etc/DIRECTORY
- /usr/local/etc
帮助文件:
- /usr/share/man
- /usr/share/doc
- /usr/local/share/man
- /usr/local/share/doc
文件系统从根目录下开始的,用 "/"表示
文件和目录被组织成一个单根倒置树结构
跟文件系统(rootfs): root filesystem
名称是大小写敏感(特殊的文件系统除外)
以 . 开头的文件为隐藏文件
路径分隔符 /
文件有两类数据:
元数据 : metadate
数据 : data
文件系统分层结构:LSB Linux Standard Base
FHS : (Filesystem Hierarchy Standard):文件系统层次结构标准
文件命名规则:
包括路径在内文件名最长4095个字符,用 / 分隔的路径不能超过255个字节
除了 斜杠 和 NUL ,所有的字符都有效
使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用它们
标准的Linux文件系统(如ext4),文件名称大小写敏感
文件颜色照应:
蓝色-->目录
绿色-->可执行文件
红色-->压缩文件
浅蓝色-->链接文件
灰色-->其他文件
Linux下文件的类型:
-: 普通文件
d: 目录文件
b: 块设备
c: 字符设备
l: 符号链接文件
p: 管道文件pipe
s: 套接字文件socket
每个shell和系统进程都有一个当前的工作目录
显示当前的shell的绝对路径命名: #pwd :printing working directory
PWD:保存了当前目录路径
OLDPWD:保存上一次所在目录路径
可以用 #echo $PWD 查看
路径又分为两种,一种为绝对路径,一种为相对路径
绝对路径是以正斜杠开始,显示完整的文件的位置路径
可用于任何想指定一个文件名的时候
相对路径不用以斜线开始,指定相对于当前工作目录或某
目录的位置,可以作为一个简短的形式指定一个文件名
两种路径方式各有好处,需要灵活应用
来说一下 cd 命令的简单使用
cd : Change the current directory to dir.改变目录
可以改变相对或者绝对路径:
cd home/Download
cd /home/nineven
到上一级目录:cd..
进入自己的主目录:cd ,cd ~
进入以前的工作目录:cd -
ls,是用来列出目录内容的命令
它可以列出当前目录或指定目录的内容
用法:
ls [OPTION]... [FILE]...
比如:
ls -a 显示隐藏的文件
ls -l 显示额外的信息
ls -R 目录递归通过 ,文件夹内的内容递归显示
ls -ld 目录和符号链接信息
ls -1 文件分行显示
ls –S 按从大到小排序
ls –u 配合-t选项,显示并按atime从新到旧排序
ls –U 不排序按目录存放顺序显示
这些命令自己可以ls --help 查看,一定要自己学会运用帮助命令
文件的状态查看 stat FILENAME
stat 文件:metadate 元数据 ,date 数据
时间戳,通过stat查看,比如:
access time:访问时间,atime,读取文件内容
modify time: 修改时间, mtime,改变文件内容(数据)
change time: 改变时间, ctime,元数据发生改变
使用touch命令可以更改时间戳
先用touch --help查看一下,发现:
-a change only the access time
-m change only the modification time
-t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time
命令如下:
先查看一下详细信息:
然后执行 touch -a issue
然后执行 touch -m issue
修改指定时间比如 touch -t200808080808.24 issue
比如一些编辑vim,查看cat,复制cp等都会改变时间戳
文件通配符:
* 匹配零个或多个字符
? 匹配任何单个字符
~ 当前用户家目录
~username 用户家目录
~+ 当前工作目录
~- 前一个工作目录
[0-9] 匹配一个数字范围
[a-z]:大写和小写字母
[A-Z]:大写字母
[abc] 匹配列表中的任何的一个字符
[^abc] 匹配列表中的所有字符以外的字符
预定义的字符类:
可以用 #man -f glob 查看所在的章节然后 #man 7 glob
[:digit:] :任意数字,相当于0-9
[:lower:] :任意小写字母
[:upper:] :任意大写字母
[:alpha:] :任意大小写字母
[:alnum:] :任意数字或字母
[:space:] :空格
[:punct:] :标点符号
实战训练:
1、显示/var目录下所有以l开头,以一个小写字母结尾,且中 间出现至少一位数字的文件或目录
ls -d /var/l*[[:digit:]]*[[:lower:]]
2、显示/etc目录下以任意一位数字开头,且以非数字结尾的 文件或目录
ls -d /etc/[[:digit]]*[^[:digit:]]
3、显示/etc/目录下以非字母开头,后面跟了一个字母及其 它任意长度任意字符的文件或目录
ls -d /etc/[^[:alpha:]][[:alpha:]]*[[:alnum:]]*
4、显示/etc目录下所有以m开头以非数字结尾的文件或目录
ls -d /etc/m*[^[:digit:]]
5、显示/etc目录下,所有以.d结尾的文件或目录
ls -d /etc/*.d
6、显示/etc目录下,所有.conf结尾,且以m,n,r,p开头的文 件或目录
ls -d /etc/[mnrp]*.conf