Linuxday4——文件管理

一、文件系统与目录结构

 

目录描述
/ 第一层次结构 的根、 整个文件系统层次结构的根目录。
/bin/ 需要在单用户模式可用的必要命令(可执行文件);面向所有用户,例如: cat、 ls、 cp。
/boot/ 引导程序文件,例如: kernel、initrd;时常是一个单独的分区[6]
/dev/ 必要设备, 例如:, /dev/null.
/etc/ 特定主机,系统范围内的配置文件。

关于这个名称目前有争议。在贝尔实验室关于UNIX实现文档的早期版本中,/etc 被称为etcetera, [7] 这是由于过去此目录中存放所有不属于别处的所有东西(然而,FHS限制/etc存放静态配置文件,不能包含二进制文件)。 [8] 自从早期文档出版以来,目录名称已被以各种方式重新称呼。最近的解释包括反向缩略语如:"可编辑的文本配置"(英文 "Editable Text Configuration")或"扩展工具箱"(英文 "Extended Tool Chest")。 [9]

/etc/opt/
/opt/的配置文件
/etc/X11/
X Window系统(版本11)的配置文件
/etc/sgml/
SGML的配置文件
/etc/xml/
XML的配置文件
/home/ 用户的家目录,包含保存的文件、个人设置等,一般为单独的分区。
/lib/ /bin/ 和 /sbin/中二进制文件必要的库文件。
/media/ 可移除媒体(如CD-ROM)的挂载点 (在FHS-2.3中出现)。便携式挂载点
/mnt/ 临时挂载的文件系统。
/opt/ 可选应用软件 包。[10]
/proc/ 虚拟文件系统,将内核与进程状态归档为文本文件。例如:uptime、 network。在Linux中,对应Procfs格式挂载。
/root/ 超级用户的家目录
/sbin/ 必要的系统二进制文件,例如: init、 ip、 mount。
/srv/ 站点的具体数据,由系统提供。
/tmp/ 临时文件(参见 /var/tmp),在系统重启时目录中文件不会被保留。
/usr/ 用于存储只读用户数据的第二层次; 包含绝大多数的(多)用户工具和应用程序。[11]
/usr/bin/
非必要可执行文件 (在单用户模式中不需要);面向所有用户。
/usr/include/
标准包含文件。
/usr/lib/
/usr/bin//usr/sbin/中二进制文件的库。
/usr/sbin/
非必要的系统二进制文件,例如:大量网络服务的守护进程。
/usr/share/
体系结构无关(共享)数据。
/usr/src/
源代码,例如:内核源代码及其头文件。
/usr/X11R6/
X Window系统 版本 11, Release 6.
/usr/local/
本地数据的第三层次, 具体到本台主机。通常而言有进一步的子目录, 例如:bin/lib/share/.

[12]

/var/ 变量文件——在正常运行的系统中其内容不断变化的文件,如日志,脱机文件和临时电子邮件文件。有时是一个单独的分区。
/var/cache/
应用程序缓存数据。这些数据是在本地生成的一个耗时的I/O或计算结果。应用程序必须能够再生或恢复数据。缓存的文件可以被删除而不导致数据丢失。
/var/lib/
状态信息。 由程序在运行时维护的持久性数据。 例如:数据库、包装的系统元数据等。
/var/lock/
锁文件,一类跟踪当前使用中资源的文件。
/var/log/
日志文件,包含大量日志文件。
/var/mail/
用户的电子邮箱。
/var/run/
自最后一次启动以来运行中的系统的信息,例如:当前登录的用户和运行中的守护进程。现已经被/run代替[13]
/var/spool/
等待处理的任务的脱机文件,例如:打印队列和未读的邮件。
/var/spool/mail/
用户的邮箱(不鼓励的存储位置)
/var/tmp/
在系统重启过程中可以保留的临时文件。
/run/ 代替/var/run目录。

文件系统

  文件和目录被组织成一个单根倒置树结构

  文件系统从根目录下开始,用“/”表示

  根文件系统(rootfs):root filesystem

  文件名称区分大小写

  以.开头的文件为隐藏文件

  路径分隔的 / u 文件有两类数据:  元数据:metadata  数据:data

  文件系统分层结构:LSB  Linux Standard Base 

  FSH  http://www.pathname.com/fhs/ 

文件名规则

  文件名最长255个字节

  包括路径在内文件名称最长4095个字节

  蓝色→目录 

  绿色→可执行文件   

  红色→压缩文件  

  浅蓝色→链接文件

  灰色→其他文件

  粉色→sock文件

  浅黄色→管道文件

  除了斜杠,所有字符都有效.但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用它们。

  标准Linux文件系统(如ext4),文件名称大小写敏感。例如:MAIL, Mail, mail, mAiL

文件类型

  -:普通文件

  d: 目录文件

  b: 块设备

  c: 字符设备

  l: 符号链接文件

  p: 管道文件pipe

  s: 套接字文件socket 

应用程序的组成部分

  二进制程序:/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 

CentOS 7目录变化

  u/bin 和 /usr/bin 

  u/sbin 和 /usr/sbin 

  u/lib 和/usr/lib 

  u/lib64 和 /usr/lib64 

 二、创建和查看文件

显示当前工作目录

  每个shell和系统进程都有一个当前的工作目录 

  CWD:current work directory

  显示当前shell CWD的绝对路径

  pwd:(printing working directory)

           -P 显示真实 物理路径

           -L 显示链接路径(默认)

 

绝对和相对路径

  绝对路径   以正斜杠开始  完整的文件的位置路径

                     可用于任何想指定一个文件名的时候

  相对路径名    不以斜线开始    指定相对于当前工作目录或某目录的位置    可以作为一个简短的形式指定一个文件名

  基名:basename

[root@centos6 ~]#basename /etc/sysconfig/network
network

  目录名:dirname

[root@centos6 ~]#dirname /etc/sysconfig/network
/etc/sysconfig

  

更改目录

 cd  改变目录

  使用绝对或相对路径: cd /home/wang/        cd home/wang

  切换至父目录:          cd ..

  切换至当前用户主目录: cd

  切换至以前的工作目录: cd -

  选项:-P 

  相关的环境变量:

 PWD:当前目录路径 

 OLDPWD:上一次目录路径

列出目录内容

  列出当前目录的内容或指定目录

  用法:ls [options] [files_or_dirs]

  示例:

  ls -a 包含隐藏文件

  ls -l 显示额外的信息

  ls -R  目录递归通过

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

  ls -1  文件分行显示

  ls –S  按从大到小排序

  ls –t   按mtime排序

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

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

  ls –X  按文件后缀排序

查看文件状态

 stat

  文件:metadata, data

  三个时间戳:

    access time:访问时间,atime,读取文件内容     

    modify time: 修改时间, mtime,改变文件内容(数据)

    change time: 改变时间, ctime,元数据发生改变

 

文件通配符

文件通配符

预定义的字符类:man 7 glob

文件通配符

创建空文件和刷新时间

 touch [OPTION]... FILE...

    -a   仅改变 atime和ctime

    -m  仅改变 mtime和ctime   

    -t  [[CC]YY]MMDDhhmm[.ss] 

        指定atime和mtime的时间戳   

    -c  如果文件不存在,则不予创建

复制文件和目录cp

  cp [OPTION]... [-T] SOURCE DEST

  cp [OPTION]... SOURCE... DIRECTORY

  cp [OPTION]... -t DIRECTORY SOURCE...

  cp SRC DEST

  SRC是文件:
  如果目标不存在:新建DEST,并将SRC中内容填充至DEST中
  如果目标存在:
    如果DEST是文件:将SRC中的内容覆盖至DEST中
     基于安全,建议为cp命令使用-i选项
    如果DEST是目录:在DEST下新建与原文件同名的文件,并将SRC中内容填充至新文件中

cp常用选项

  -i:覆盖前提示  –n:不覆盖,注意两者顺序

  -r, -R: 递归复制目录及内部的所有内容

  -a: 归档,相当于-dR --preserv=all

  -d:--no-dereference --preserv=links 不复制原文件,只复制链接名

  --preserv[=ATTR_LIST]

  mode: 权限 

  ownership: 属主属组 

  timestamp:  

  links 

  xattr 

  context 

  all

cp 选项

  -p: 等同--preserv=mode,ownership,timestamp

  -v: --verbose

  -f: --force

  -u:--update 只复制源比目标更新文件或目标不存在的文件

  --backup=numbered 目标存在,覆盖前先备份加数字后缀 

移动和重命名文件

 mv [OPTION]... [-T] SOURCE DEST

  mv [OPTION]... SOURCE... DIRECTORY umv [OPTION]... -t DIRECTORY SOURCE...

     常用选项: 

       -i: 交互式

       -f: 强制

删除

 rm [OPTION]... FILE...

  常用选项:

  -i       交互式

       -f       强制删除

       -r       递归

       --no-preserve-root  删除/ 

示例: 

                 rm -rf    /

目录操作

 tree 显示目录树

    -d: 只显示目录

    -L level:指定显示的层级数目

      -P pattern: 只显示由指定pattern匹配到的路径

 mkdir 创建目录

         -p: 存在于不报错,且可自动创建所需的各目录

    -v: 显示详细信息

         -m MODE: 创建目录时直接指定权限

 rmdir 删除空目录

        -p: 递归删除父空目录

        -v: 显示详细信息

  rm -r 递归删除目录树

索引节点

  inode(index node)表中包含文件系统所有文件列表

  一个节点 (索引节点)是在一个表项,包含有关文件的信息( 元数据 ),包括:

  文件类型,权限,UID,GID   

  链接数(指向这个文件名路径名称个数) 

  该文件的大小和不同的时间戳 

  指向磁盘上文件的数据块指针

  有关文件的其他数据

inode表结构

目录

  文件引用一个是 inode号

  人是通过文件名来引用一个文件

  一个目录是目录下的文件名和文件inode号之间的映射

 

inode表

 

 

cp和inode

  在 CP的 命令: 

   分配一个空闲的inode号,在inode表中生成新条目  在目录中创建一个目录项,将名称与inode编号关联    拷贝数据生成新的文件

rm和inode

  rm 命令:

    链接数递减,从而释放的inode号可以被重用 

    把数据块放在空闲列表中

         删除目录项

    数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖。

 

mv和inode

  如果mv命令的目标和源在相同的文件系统,作为mv 命令 

  用新的文件名创建对应新的目录项   

  删除旧目录条目对应的旧的文件名 

  不影响inode表(除时间戳)或磁盘上的数据位置:没有数据被移动!

  如果目标和源在一个不同的文件系统, mv相当于cp和rm 

硬链接

  创建硬链接会增加额外的记录项以引用文件

  对应于同一文件系统上一个物理文件

  每个目录引用相同的inode号

  创建时链接数递增

  删除文件时:

    rm命令递减计数的链接

    文件要存在,至少有一个链接数

    当链接数为零时,该文件被删除

  不能跨越驱动器或分区

  语法: 

   ln  filename  [linkname ] 

符号(或软)链接

  一个符号链接指向另一个文件

  ls - l的 显示链接的名称和引用的文件

  一个符号链接的内容是它引用文件的名称

  可以对目录进行

  可以跨分区

  指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少目标文件inode的引用计数;

  语法:

         ln -s  filename  [linkname]

软链接与硬链接的区别:

  本质:

  1)硬链接:一个文件多个名字

  2)软连接:一个文件对应的快捷方式,不同文件

  表现:

  1) 链接数

  硬链接增长,软连接不增张

  2) 软连接可以跨分区

  3) 目录

  硬链接只能链接文件

  4) 原始和链接文件的关系

  硬链接平等关系

  软连接是依赖关系

  5) 删除

  删除后硬链接可用

  6)大小

  软连接大小取决于路径的长度

注意:创建软连接时优先使用相对路径;(源文件的路径是相对路径 ,一定是相对与软连接文件的路径,而不是相对于当前路径)

确定文件内容

  文件可以包含多种类型的数据

  检查文件的类型,然后确定适当的打开命令或应用程序使用

 file [options] <filename>...

  常用选项:

     -b 列出文件辨识结果时,不显示文件名称

     -f filelist 列出文件filelist中文件名的文件类型

      -F 使用指定分隔符号替换输出文件名后默认的”:”分隔符

      -L 查看对应软链接对应文件的文件类型

           --help 显示命令在线帮助 

 

posted @ 2018-04-03 08:25  Gmiao  阅读(243)  评论(0编辑  收藏  举报