linux 文件管理

文件管理

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 

还有一张整理好的图片:

052049040017593.png

文件系统结构详解:

/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 显示隐藏的文件

blob.png

ls -l 显示额外的信息

blob.png


ls -R 目录递归通过 ,文件夹内的内容递归显示

blob.png

ls -ld 目录和符号链接信息 

blob.png

ls -1  文件分行显示 

blob.png

ls –S  按从大到小排序 

ls –u   配合-t选项,显示并按atime从新到旧排序 

ls –U  不排序按目录存放顺序显示

这些命令自己可以ls --help 查看,一定要自己学会运用帮助命令



文件的状态查看 stat FILENAME


stat 文件:metadate 元数据  ,date 数据

时间戳,通过stat查看,比如:

blob.png

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  

命令如下:

    先查看一下详细信息:

blob.png

然后执行 touch -a issue

blob.png

然后执行 touch -m issue

blob.png

修改指定时间比如 touch -t200808080808.24 issue

blob.png


比如一些编辑vim,查看cat,复制cp等都会改变时间戳



文件通配符:


  • * 匹配零个或多个字符 

    blob.png

  • ? 匹配任何单个字符

  • ~ 当前用户家目录 

  • ~username 用户家目录 

  • ~+ 当前工作目录 

  • ~- 前一个工作目录 

  • [0-9] 匹配一个数字范围 

    blob.png

  • [a-z]:大写和小写字母 

  • [A-Z]:大写字母

 blob.png

  • [abc] 匹配列表中的任何的一个字符 

  • [^abc] 匹配列表中的所有字符以外的字符

  • blob.png


预定义的字符类:

可以用 #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