Linux基础(五)——文件管理

一、文件系统

文件系统特征

* 文件和目录被组织成一个单根倒置树结构
* 文件系统从根目录下开始,用“/” 表示
* 根文件系统(rootfs): root filesystem
* 文件名称:区分大小写
* 以.开头的文件为隐藏文件
* 路径分隔的 /
* 文件有两类数据:
* 
    * 元数据: metadata
    * 数据: data

* 

 元数据内容包括

    * 
        * 文件名
        * 文件大小
        * 文件所在数据块
        * 数据块的大小
        * 文件类型
        * 文件所在的Inode
        * 硬链接次数
        * 权限
        * 属主id
        * 属组id
        * 最近一次访问时间戳
        * 最近一次更改文件内容的时间戳
        * 最近一次更改文件元数据的时间戳

* 

* 文件系统分层结构: LSB(Linux Standard Base)
  FHS: (Filesystem Hierarchy Standard)
  http://www.pathname.com/fhs/

文件命名规则

* 文件名最长255个字节
* 包括路径在内文件名称最长4095个字节
* 在系统中默认显示:
蓝色-->目录 
绿色-->可执行文件 
红色-->压缩文件
浅蓝色-->链接文件
灰色-->其他文件

* 除了 斜杠和NUL,所有字符都有效.但使用特殊字符的目录名和文件不推荐使用,某些字符需要用引号来引用
* 标准Linux文件系统(如ext4),文件名称大小写敏感
例如: MAIL, Mail, mail, mAiL

注:大小写敏感与否与文件系统格式有关,如windows系统挂载到Linux中,大小写不敏感

二、目录结构

* /boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)都存放于此目录
* /bin:所有用户使用的基本命令;不能关联至独立分区, OS启动即会用到的程序(另:该“目录”是一个链接文件,链接至/usr/bin)

* /sbin:管理类的基本命令;不能关联至独立分区, OS启动即会用到的程序(另:该“目录”是一个链接文件,链接至/usr/sbin)

* /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: 保证系统拥有完整功能而提供的应用程序,参考/bin
    * sbin: 参考/sbin
    * tmp: 

    * 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相关的安全策略等信息的存储位置

三、Linux文件类型

* - 普通文件
* d 目录文件
* b 块设备
* c 字符设备
* l 符号链接文件
* p 管道文件pipe
* s 套接字文件socket

四、绝对路径及相对路径

绝对路径

* 以正斜杠开始
* 完整的文件位置路径
* 可用于指定任何一个文件名

相对路径

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

五、文件通配符

  • 匹配零个或多个字符
    ? 匹配任何单个字符
    ~ 当前用户家目录
    ~username 用户家目录
    ~+ 当前工作目录
    ~- 前一个工作目录
    [0-9] 匹配数字范围
    [a-z] 字母
    [A-Z] 字母
    [wang] 匹配列表中的任何的一个字符
    [^wang] 匹配列表中的所有字符以外的字符

    预定义的字符类:
    可以使用命令查看:man 7 glob
    [:digit:]:任意数字,相当于0-9
    [:lower:]:任意小写字母
    [:alnum:]:任意数字或字母
    [:blank:]:水平空白字符
    [:space:]:水平或垂直空白字符
    [:punct:]:标点符号
    [:print:]:可打印字符
    [:cntrl:]:控制(非打印)字符
    [:graph:]:图形字符
    [:xdigit:]:十六进制字符

六、文件管理相关命令

pwd(print working directory):列出当前工作目录

相关变量:
PWD:当前目录路径
OLDPWD:前一次目录路径

basename:获取文件基名

dirname:获取文件路径名

cd:切换目录
.. 切换至上一层目录(父目录)

~ 切换至当前用户家目录(只用cd也可切换至用户家目录)

  • 切换至前上次所在目录

ls:列出当前路径下内容
-a 包含隐藏文件

-l 显示额外的信息(= ll)

-R 目录递归显示

-ld 目录和符号链接信息

-1 文件分行显示

–S 按从大到小排序

–t 按mtime(内容修改时间)排序

–u 配合-t选项,显示并按atime(文件访问时间)从新到旧排序

–U 按目录存放顺序显示

–X 按文件后缀排序

stat:display file or file system status(显示文件及文件系统状态)

touch:change file timestamps(修改文件时间戳,创建新文本文件)
-c:如果文件不存在,不创建文件;如果存在则更新时间戳

      -a:change only the access time(只更改访问时间)

      -m:change only the modification time(只更改内容时间)

      注:无论使用 -a or -m ,Change time都会跟着变化

      -t STAMP:指定atime 和 mtime时间戳
           use [[CC]YY]MMDDhhmm[.ss] instead of current time

cp:copy files and directories(复制文件及目录)
cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
cp SRC DEST

      -a:--archive,same as -dR --preserve=all(做备份时使用)

      -u:--update,只复制发生改变及新增的文件及目录(包含其下内容),个人理解为“增量备份”

      -i:交互式复制,覆盖前提示(默认情况下,cp被系统alias为cp -i)
      -n:不覆盖,与-i连用,使用时注意两者顺序(-i -n)

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

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

mode: 权限
ownership: 属主属组
timestamp:
links
xattr
context
all

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

      -v: --verbose

      -f: --force,强制复制

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

mv:移动( 重命名)文件(目录)
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...

      基本参数用法,参考cp命令

-i: 交互式
-f: 强制移动
-b: 目标存在,覆盖前先备份

rm
rm [OPTION]... FILE...

      基本参数用法,参考cp命令

-i 交互式
-f 强制删除
-r 递归;
rm -r 递归删除目录树
--no-preserve-root 删除 / 目录

tree:显示目录树
-d: 只显示目录
-L level:指定显示的层级数目
-P pattern: 只显示由指定pattern匹配到的路径

mkdir:创建目录
-p: 存在也不报错,且可自动创建所需的各目录
-v: 显示详细信息
-m MODE: 创建目录时直接指定权限

rmdir:删除空目录
-p: 递归删除父空目录

-v: 显示详细信息

file:determine file type(确定文件类型)

ln:创建链接文件
硬链接:一个文件分配多个名字
ln source dest

1. 创建硬链接会增加额外的记录项以引用文件
2. 对应于同一文件系统上一个物理文件
3. 每个文件引用相同的inode号
4. 不能跨越驱动器或分区
5. 链接数:

创建时链接数递增
删除文件时:rm命令递减计数的链接
文件要存在,至少有一个链接数
当链接数为零时,该文件被删除

 软链接:相当于Windows下的快捷方式
      ln -s source dest

1. 一个符号链接指向另一个文件
2. ls - l 可以显示链接的名称和引用的文件
3. 一个符号链接的内容是它引用文件的名称
4. 可以对目录进行软链接
5. 可以跨分区进行软链接
6. 指向的是另一个文件的路径;
7. 其大小为指向的路径字符串的长度;
8. 不增加或减少目标文件inode的引用计数
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章