一、文件系统与目录结构

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/
公共的/
模板/
视频/
图片/
文档/
下载/
音乐/
桌面/