一、文件系统与目录结构
1、文件系统
文件和目录被组织成一个单根倒置树结构
文件系统从 根目录 下开始,用“/” 表示
根文件系统(rootfs) :root filesystem
名称是大小写敏感
## FAT32文件系统不区分大小写 文件系统敏感,并非是linux敏感
标准Linux 文件系统(如ext4),文件名称大小写敏感。例如:MAIL, Mail, mail, mAiL以. 开头的文件为隐藏文件
路径分隔的 /
文件有两类数据:
元数据:metadata 文件属性
数据:data
dateblock 数据块
文件系统分层结构:LSB Linux Standard Base
FHS: (Filesystem Hierarchy Standard)
2、文件名规则
包括路径在内文件名称最长4095 个字节,用/分隔的路径不能超过255 个字节。
蓝色--> 目录
绿色--> 可执行文件
红色--> 压缩文件
浅蓝色--> 链接文件
灰色--> 其他文件
×××-->设备文件
除了斜杠和NUL, 所有字符都有效.但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用它们。
3、文件系统结构
linux的文件系统有规范的,所有发行版都遵循基本的文件系统结构,一些发行版还会添加一些独有的目录。
基本的文件系统结构:
/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 相关的安全策略等信息的存储位置文件系统结构
[root@6 ~]# ls / bin dev home lib64 media mnt opt root selinux sys tmp var boot etc lib lost+found misc net proc sbin srv testdir usr [root@7 ~]# ls / bin dev home lib64 mnt proc run srv testdir usr boot etc lib media opt root sbin sys tmp var ##可以看出centos6、7中都有基本的文件系统,它们各自有些独有的文件目录。 centos6: selinux lost+found misc net centos7:run ( cdrom挂载在run,/run/media/)
centos 7 目录变化
/bin 和 /usr/bin
/sbin 和 /usr/sbin
/lib 和/usr/lib
/lib64 和 /usr/lib64
[root@7 ~]# ls -dl /bin /usr/bin lrwxrwxrwx. 1 root root 7 7月 21 01:25 /bin -> usr/bin dr-xr-xr-x. 2 root root 40960 7月 25 15:21 /usr/bin [root@7 ~]# ls -dl /sbin /usr/sbin lrwxrwxrwx. 1 root root 8 7月 21 01:25 /sbin -> usr/sbin dr-xr-xr-x. 2 root root 20480 7月 21 01:37 /usr/sbin [root@7 ~]# ls -dl /lib /usr/lib lrwxrwxrwx. 1 root root 7 7月 21 01:25 /lib -> usr/lib dr-xr-xr-x. 41 root root 4096 7月 21 01:36 /usr/lib [root@7 ~]# ls -dl /lib64 /usr/lib64 lrwxrwxrwx. 1 root root 9 7月 21 01:25 /lib64 -> usr/lib64 dr-xr-xr-x. 138 root root 69632 7月 21 01:38 /usr/lib64
4、Linux 上的应用程序的组成部分
二进制程序:/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
6、Linux 下的文件类型
- :普通文件
d: 目录文件
b: 块设备 block 随机访问 有缓存 物理设备
c: 字符设备 character 顺序访问 没有缓存 逻辑设备
l: 符号链接文件
p: 管道文件pipe
s: 套接字文件socket 用于进程间的通讯
空设备 :dev/null
零设备:/dev/zero
[root@7 ~]# ls -l /testdir 总用量 8 -rw-r--r--. 1 root root 0 7月 25 16:55 3 drwxr-xr-x. 2 root root 6 7月 27 11:39 ab -rw-r--r--. 1 root root 0 7月 27 11:29 a.rar -rw-r--r--. 1 root root 259 7月 25 19:50 birthday.sh brw-rw----. 1 root disk 8, 0 7月 27 10:56 sda drwxrwxrwt. 2 root root 4096 7月 27 10:57 shm lrwxrwxrwx. 1 root root 15 7月 27 10:56 stderr -> /proc/self/fd/2
7、显示当前工作目录
每个shell 和系统进程都有一个当前的工作目录
CWD:current work directory
显示当前shell CWD 的绝对路径
#pwd: printing working directory
[root@7 scsi_host]# pwd /sys/class/scsi_host
8、绝对和相对路径名
1、绝对路径
从根目录开始,完整的文件的位置路径
可用于任何想指定一个文件名的时候
/ :根目录
2、相对路径名
从上级父目录或当前目录,相对当前的工作目录位置
可以作为一个简短的形式指定一个文件名
. :表示当前目录
.. ;表示上级父目录
9、更改目录
1、cd 改变目录
为绝对或相对路径:
cd /home/joshua/work
cd project/docs
到上一级目录:
cd ..
为了你的主目录:
cd
到以前的工作目录:
cd -
到达某用户的家目录:
cd ~lvasu
2、相关的环境变量:
PWD :保存了当前目录路径;
OLDPWD:上一次所在目录路径;
[root@7 scsi_host]# echo $PWD /sys/class/scsi_host [root@7 scsi_host]# PWD=/ [root@7 /]# [root@7 VAR]# cd /tmp [root@7 tmp]# echo $OLDPWD /VAR
10、列出目录内容 ls
1、列出当前目录的内容或指定目录(默认排列按字母的顺序)
1 12 99 123 a aa
[root@7 test]# touch 1 12 99 123 a aa zx 256 aaz [root@7 test]# ls 1 12 123 256 99 a aa aaz zx
2、用法:
ls [options] [files_or_dirs]
3、Example:
ls -a 包含隐藏文件
[root@7 testdir]# ls -a . .. 3 ab a.rar birthday.sh sda shm stderr
ls -l 显示额外的信息
[root@7 testdir]# ls -l 总用量 8 -rw-r--r--. 1 root root 0 7月 25 16:55 3 drwxr-xr-x. 2 root root 6 7月 27 11:39 ab -rw-r--r--. 1 root root 0 7月 27 11:29 a.rar -rw-r--r--. 1 root root 259 7月 25 19:50 birthday.sh brw-rw----. 1 root disk 8, 0 7月 27 10:56 sda drwxrwxrwt. 2 root root 4096 7月 27 10:57 shm lrwxrwxrwx. 1 root root 15 7月 27 10:56 stderr -> /proc/self/fd/2
ls -R 目录递归通过
[root@7 testdir]# ls -R .: 3 ab a.rar birthday.sh sda shm stderr ./ab: ./shm: pulse-shm-1252644643 pulse-shm-2651354234 pulse-shm-4205311524 pulse-shm-2110518405 pulse-shm-4167128232 pulse-shm-686084036
ls -ld 目录和符号链接信息
[root@7 testdir]# ls -ld drwxr-xr-x. 4 root root 86 7月 27 12:26 .
ls -1 文件分行显示
[root@7 testdir]# ls -1 3 ab a.rar birthday.sh sda shm stderr
ls –S 按从大到小排序
[root@7 testdir]# ls -1 3 ab a.rar birthday.sh sda shm stderr [root@7 testdir]# ls -S shm birthday.sh stderr ab 3 a.rar sda [root@7 testdir]# ls -lS 总用量 8 drwxrwxrwt. 2 root root 4096 7月 27 10:57 shm -rw-r--r--. 1 root root 259 7月 25 19:50 birthday.sh lrwxrwxrwx. 1 root root 15 7月 27 10:56 stderr -> /proc/self/fd/2 drwxr-xr-x. 2 root root 6 7月 27 11:39 ab -rw-r--r--. 1 root root 0 7月 25 16:55 3 -rw-r--r--. 1 root root 0 7月 27 11:29 a.rar brw-rw----. 1 root disk 8, 0 7月 27 10:56 sda
ls -s 按占用的块文件的由大到小排列
[root@7 testdir]# ls -s 总用量 8 0 3 0 ab 0 a.rar 4 birthday.sh 0 sda 4 shm 0 stderr [root@7 testdir]# ls -ls 总用量 8 0 -rw-r--r--. 1 root root 0 7月 25 16:55 3 0 drwxr-xr-x. 2 root root 6 7月 27 11:39 ab 0 -rw-r--r--. 1 root root 0 7月 27 11:29 a.rar 4 -rw-r--r--. 1 root root 259 7月 25 19:50 birthday.sh 0 brw-rw----. 1 root disk 8, 0 7月 27 10:56 sda 4 drwxrwxrwt. 2 root root 4096 7月 27 10:57 shm 0 lrwxrwxrwx. 1 root root 15 7月 27 10:56 stderr -> /proc/self/fd/2
ls –u 配合-t 选项,显示并按atime 从新到旧排序
[root@7 testdir]# ls -ut ab shm stderr sda a.rar birthday.sh 3
ls –U 不排序按目录存放顺序显示
[root@7 testdir]# ls -U birthday.sh 3 a.rar ab sda shm stderr
ls -l --time=atime file access
ls -l --time=ctime file change
ls -l file modify
ls -l =ll
[root@7 testdir]# ls -l --time=atime 3 -rw-r--r--. 1 root root 0 7月 25 16:52 3 [root@7 testdir]# ls -l --time=ctime 3 -rw-r--r--. 1 root root 0 7月 25 16:55 3 [root@7 testdir]# ls -l 3 -rw-r--r--. 1 root root 0 7月 25 16:55 3 [root@7 testdir]# ll --time=atime 3 -rw-r--r--. 1 root root 0 7月 25 16:52 3 [root@7 testdir]# ll --time=ctime 3 -rw-r--r--. 1 root root 0 7月 25 16:55 3 [root@7 testdir]# ll 3 -rw-r--r--. 1 root root 0 7月 25 16:55 3
11、查看文件状态
1、stat
2、文件:metadata, data
3、三个时间戳:
access time :访问时间,atime ,读取文件内容
改变条件:1、访问间隔超过一天以上
2、比modify时间旧
chattr +A file 锁定atime时间
modify time: 修改时间, mtime,改变文件内容(数据)
change time: 改变时间, ctime ,元数据发生改变 名字,权限,所有者
[root@7 testdir]# stat 3 文件:"3" 大小:0 块:0 IO 块:4096 普通空文件 设备:fd02h/64770d Inode:132 硬链接:1 权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root) 环境:unconfined_u:object_r:etc_runtime_t:s0 最近访问:2016-07-25 16:52:00.377406113 +0800 最近更改:2016-07-25 16:55:23.864418908 +0800 最近改动:2016-07-25 16:55:23.864418908 +0800 创建时间:-
练习
1、只显示某个目录的隐藏文件
ls -aF|grep "^\..*[^/]$"
[root@6 ~]# ls -aF|grep "^\..*[^/]$" .bash_history .bash_logout .bash_profile .bashrc .cshrc .esd_auth .gtk-bookmarks .ICEauthority .imsettings.log .pulse-cookie .tcshrc [root@6 tmp]# ls -aF|grep "^\..*[^/]$" .X0-lock
2、只显示某个目录下的目录列表
ls -aF | grep /$
ls -d */
[root@6 tmp]# ls -aF | grep /$ ./ ../ .esd-0/ .ICE-unix/ keyring-2jZI6Q/ keyring-tCyBhg/ keyring-YaRraG/ orbit-root/ pulse-J2ZDSaV08Ul3/ pulse-oP9seHXgszkC/ virtual-root.4utSzT/ virtual-root.FxkLEs/ virtual-root.Iijauo/ virtual-root.J6cIbr/ virtual-root.JYi1Oz/ virtual-root.KC9oNe/ virtual-root.R3l3AH/ virtual-root.rT9hFx/ virtual-root.vBh2Io/ virtual-root.vs1qJy/ virtual-root.z3gfQQ/ vmware-config0/ VMwareDnD/ vmware-root/ .X11-unix/ [root@6 ~]# ls -aF|grep /$ ./ ../ .abrt/ .cache/ .config/ .dbus/ .gconf/ .gconfd/ .gnome2/ .gnote/ .gnupg/ .gstreamer-0.10/ .gvfs/ .local/ .nautilus/ .pulse/ .ssh/ .thumbnails/ 公共的/ 模板/ 视频/ 图片/ 文档/ 下载/ 音乐/ 桌面/