美文网首页
第02周_文件管理

第02周_文件管理

作者: 狂神小虾 | 来源:发表于2020-06-22 07:48 被阅读0次

    1. 描述Linux发行版的系统目录名称命名规则以及用途。

    1.1. FHS目录结构

    挂载点 功能
    /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
    /var variable data files
    /proc 用于输出内核与进程信息相关的虚拟文件系统
    /sys 用于输出当前系统上硬件设备相关信息虚拟文件系统
    /selinux security enhanced Linux,selinux相关的安全策略等信息的存储位置

    1.1.1. /usr/

    bin: 保证系统拥有完整功能而提供的应用程序
    sbin:
    lib:32 位 使 用 lib64:只存在64位系统
    include: C 程 序 的 头 文 件 (header files) share:结构化独立的数据,例如doc, man等local:第三方应用程序的安装位置
    bin, sbin, lib, lib64, etc, share

    1.1.2. /var/

    cache: 应用程序缓存数据目录
    lib: 应用程序状态信息数据
    local:专用于为/usr/local下的应用程序存储可变数据lock: 锁文件
    log: 日志目录及文件
    opt: 专用于为/opt下的应用程序存储可变数据
    run: 运行中的进程相关数据,通常用于存储进程pid文件
    spool: 应用程序数据池
    tmp: 保存系统两次重启之间产生的临时数据

    1.1.3. CentOS7目录变化[以下目录为软连接]

    /bin 和 /usr/bin
    /sbin 和 /usr/sbin
    /lib 和/usr/lib
    /lib64 和 /usr/lib64

    2. 描述文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息?

    2.1. 文件元数据

    以下基于ext文件系统进行描述

    inode number : 节点编号
    file type : 文件类型(普通文件,目录,连接,设备,管道...)
    permission : 权限(0644,0755,1777等12位权限位)
    link count : 硬链接数
    uid : 属主信息
    gid : 属组信息
    size : 文件大小
    file date : 文件的日期时间(创建时间,修改时间,改变时间,访问时间)
    block : 数据块大小及占用数据块数量
    

    2.2. 查看元数据方法

    使用stat FILENAME进行查看

    stat anaconda-ks.cfg
      File: ‘anaconda-ks.cfg’
      Size: 1664        Blocks: 8          IO Block: 4096   regular file
    Device: 802h/2050d  Inode: 50331715    Links: 1
    Access: (0600/-rw-------)  Uid: (    0/    root)   Gid: (    0/    root)
    Context: system_u:object_r:admin_home_t:s0
    Access: 2020-05-17 10:48:06.964028005 +0800
    Modify: 2020-05-04 21:04:18.103138486 +0800
    Change: 2020-05-04 21:04:18.103138486 +0800
     Birth: -
    

    2.3. 修改文件时间戳

    使用touch命令进行修改
    Usage:touch [OPTION]... FILE...
    -a 仅改变 atime,同时会修改ctime
    -m 仅改变 mtime,同时会修改ctime
    -t 修改为指定日期时间,格式为 [[CC]YY]MMDDhhmm[.ss]

    # 查看文件信息
    stat statfile
      File: ‘statfile’
      Size: 0           Blocks: 0          IO Block: 4096   regular empty file
    Device: 802h/2050d  Inode: 50331715    Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Context: unconfined_u:object_r:admin_home_t:s0
    Access: 2020-06-21 07:00:46.645166801 +0800
    Modify: 2020-06-21 07:00:46.645166801 +0800
    Change: 2020-06-21 07:00:46.645166801 +0800
     Birth: -
    
    # 修改atime访问时间
    touch -a -t 202006011359.59 statfile
    stat statfile
      File: ‘statfile’
      Size: 0           Blocks: 0          IO Block: 4096   regular empty file
    Device: 802h/2050d  Inode: 50331715    Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Context: unconfined_u:object_r:admin_home_t:s0
    Access: 2020-06-01 13:59:59.000000000 +0800
    Modify: 2020-06-21 07:00:46.645166801 +0800
    Change: 2020-06-21 07:02:07.687172798 +0800
     Birth: -
    
    # 修改mtime修改时间
    touch -m -t 202006180000.01 statfile
    stat statfile
      File: ‘statfile’
      Size: 0           Blocks: 0          IO Block: 4096   regular empty file
    Device: 802h/2050d  Inode: 50331715    Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Context: unconfined_u:object_r:admin_home_t:s0
    Access: 2020-06-01 13:59:59.000000000 +0800
    Modify: 2020-06-18 00:00:01.000000000 +0800
    Change: 2020-06-21 07:03:05.121177048 +0800
     Birth: -
    

    3. 总结软连接和硬连接区别,并用实例操作说明。

    3.1. 软连接与硬链接的区别

    硬链接
    创建硬链接会增加额外的记录项以引用文件
    对应于同一文件系统上一个物理文件
    每个目录引用相同的inode号
    创建时链接数递增
    删除文件时:
     rm命令递减计数的链接
     文件要存在,至少有一个链接数
     当链接数为零时,该文件被删除
    不能跨越驱动器或分区
    语法:
    ln filename [linkname ]

    软连接
    一个符号链接指向另一个文件
    ls - l的 显示链接的名称和引用的文件
    一个符号链接的内容是它引用文件的名称
    可以对目录进行
    可以跨分区
    指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少目标文件inode的引用计数
    语法:
    ln -s filename [linkname]

    3.2. 操作实例

    # 硬链接
    ln statfile hardlinkfile
    ls -il
    50331715 -rw-r--r--. 2 root root 0 Jun 18 00:00 hardlinkfile
    50331715 -rw-r--r--. 2 root root 0 Jun 18 00:00 statfile
    
    # 软连接
    ls -il statfile softlinkfile
    50331820 lrwxrwxrwx. 1 root root 8 Jun 21 07:13 softlinkfile -> statfile
    50331715 -rw-r--r--. 2 root root 0 Jun 18 00:00 statfile
    

    4. Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。

    4.1. ls列出文件目录

    Usage: ls [OPTION]... [FILE]...
    -a:列出所有文件
    -A:列出除.和..外的所有文件
    -d:仅列出目录本身的属性
    -l:使用长格式
    -S:以文件大小排序,从大到小
    -r:反向排序
    -t:安装mtime排序
    -h,--human-readable:对文件大小进行单位转换,但转换后可能会损失精度-b
    
    # 使用长格式,列出含有隐藏属性的文件
    ls -la .
    total 32
    dr-xr-x---.  2 root root  196 Jun 21 07:13 .
    dr-xr-xr-x. 18 root root  236 May  4 21:03 ..
    -rw-------.  1 root root 2133 Jun 21 06:23 .bash_history
    -rw-r--r--.  1 root root   18 Dec 29  2013 .bash_logout
    -rw-r--r--.  1 root root  176 Dec 29  2013 .bash_profile
    -rw-r--r--.  1 root root  176 Dec 29  2013 .bashrc
    -rw-r--r--.  1 root root  100 Dec 29  2013 .cshrc
    -rw-r--r--.  2 root root    0 Jun 18 00:00 hardlinkfile
    -rw-------.  1 root root 1024 May 17 15:41 .rnd
    lrwxrwxrwx.  1 root root    8 Jun 21 07:13 softlinkfile -> statfile
    -rw-r--r--.  2 root root    0 Jun 18 00:00 statfile
    -rw-r--r--.  1 root root  129 Dec 29  2013 .tcshrc
    -rw-------.  1 root root  577 May 17 15:14 .viminfo
    
    # 使用长格式,列出不含.和..的文件,从小到大排序
    ls -AlSr .
    total 32
    -rw-r--r--. 2 root root    0 Jun 18 00:00 statfile
    -rw-r--r--. 2 root root    0 Jun 18 00:00 hardlinkfile
    lrwxrwxrwx. 1 root root    8 Jun 21 07:13 softlinkfile -> statfile
    -rw-r--r--. 1 root root   18 Dec 29  2013 .bash_logout
    -rw-r--r--. 1 root root  100 Dec 29  2013 .cshrc
    -rw-r--r--. 1 root root  129 Dec 29  2013 .tcshrc
    -rw-r--r--. 1 root root  176 Dec 29  2013 .bashrc
    -rw-r--r--. 1 root root  176 Dec 29  2013 .bash_profile
    -rw-------. 1 root root  577 May 17 15:14 .viminfo
    -rw-------. 1 root root 1024 May 17 15:41 .rnd
    -rw-------. 1 root root 2133 Jun 21 06:23 .bash_history
    
    # 仅列出目录本身属性
    ls -ld /etc/
    drwxr-xr-x. 73 root root 8192 Jun 21 06:23 /etc/
    
    # 长格式显示/etc/下修改时间从旧到新排序
    ls -ltr /etc/
    

    4.2. tree列出文件目录树

    Usage: [OPTION]... [directory...]
    -L:目录层级深度
    -d:仅包含目录,不含文件
    
    # 显示当前路径目录树
    tree .
    .
    ├── hardlinkfile
    ├── softlinkfile -> statfile
    └── statfile
    
    # 显示/etc/下仅包含的目录,深度为2
    tree -L 2 -d /etc/
    

    4.3. stat显示文件元数据

    display file or file system status 获取指定文件的元数据
    详见2.3节提供的案例

    4.4. file查看文件类型

    查看文件真实类型用于确认文件内容组织格式的类型

    ~]# file /bin/ls
    /bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=3d705971a4c4544545cb78fd890d27bf792af6d4, stripped
    ​
    ~]# file /dev
    /dev: directory
    ​
    ~]# file /dev/sda
    /dev/sda: block special
    

    4.5. mkdir创建目录

    Usage: mkdir [OPTION]... DIRECTORY...
    -p:递归创建目录
    -v:显示创建信息
    
    ~]# mkdir -v a
    mkdir: created directory ‘a’
    ~]# mkdir a/b/c
    mkdir: cannot create directory ‘a/b/c’: No such file or directory
    ~]# mkdir -p a/b/c
    

    4.6. rmdir删除空目录

    rmdir - remove empty directories
    -p: 递归删除空目录的父目录
    -v:显示删除信息
    
    ~]# tree
    .
    ├── a
    │   └── b
    │       └── c
    ├── hardlinkfile
    ├── softlinkfile -> statfile
    └── statfile
    3 directories, 3 files
     ~]# rmdir -p a/b/c
    ~]# tree
    .
    ├── hardlinkfile
    ├── softlinkfile -> statfile
    └── statfile
    

    4.7. cp文件复制

    4.7.1. 基本命令

    单源复制
    cp [OPTION]... [-T] SOURCE DEST
    |-- 如果DEST不存在:则事先创建此文件,并将源文件的数据流填充至DEST中;
    |-- 如果DEST存在:
        |-- 如果DEST是非目录文件:则覆盖目标文件;
        |-- 如果DEST是目录文件:则先在DEST目录下创建一个与源文件同名的文件,并复制其数据流;
    多源复制
    cp [OPTION]... SOURCE... DIRECTORY
             cp [OPTION]... -t DIRECTORY SOURCE...
    |-- 如果SOURCE是目录:默认不复制目录【cp: omitting directory】
    |-- 如果DEST不存在:错误;
    |-- 如果DEST存在:
        |-- 如果DEST是非目录文件:错误;
        |-- 如果DEST是目录文件:分别复制每个文件至目标目录中,并保持原名;
    OPTIONS:
    -i:交互式复制,即覆盖之前提醒用户确认;
    -f:强制覆盖目标文件;
    -r, -R:递归复制目录;
    -d:复制符号链接文件本身,而非其指向的源文件;
    -a:-dR --preserve=all, archive,用于实现归档;
    --preserv=
        mode:权限
        ownership:属主和属组
        timestamps: 时间戳
        context:安全标签
        xattr:扩展属性
        links:符号链接
        all:上述所有属性
    

    4.7.2. 实例

    1、单源复制:DEST不存在
    ~]# ls /tmp/
    ~]# cp /etc/fstab /tmp/noDEST
    ~]# ls /tmp/
    noDEST
    
    2、单源复制:DEST存在为目录
    ~]# ls /tmp/new/
    ~]# cp /etc/fstab /tmp/new/
    ~]# ls /tmp/new/
    fstab
    
    3、单源复制:DEST存在为文件
    ~]# cp /etc/fstab /tmp/newfile # 复制第一次
    ~]# ls /tmp/
    newfile
    ~]# cp /etc/fstab /tmp/newfile  # 复制第二次
    cp: overwrite ‘/tmp/newfile’? y
    ~]# cp -f /etc/fstab /tmp/newfile # -f强制覆盖失败[为何?]
    cp: overwrite ‘/tmp/newfile’? y
    ~]# \cp -f /etc/fstab /tmp/newfile # 强行取消alias复制成功
    
    4、多源复制:DIRECTORY存在
    [root@bogon ~]# mkdir /tmp/new
    [root@bogon ~]# ls /tmp/new/
    [root@bogon ~]# cp /etc/fstab /etc/passwd /tmp/new/
    [root@bogon ~]# ls /tmp/new/
    fstab  passwd
    
    5、多源复制:DIRECTORY不存在
    [root@bogon ~]# ls /tmp/
    [root@bogon ~]# cp /etc/passwd /etc/fstab /tmp/new
    cp: target ‘/tmp/new’ is not a directory
    

    4.8. mv文件移到

    mv [OPTION]... [-T] SOURCE DEST
    mv [OPTION]... SOURCE... DIRECTORY
    mv [OPTION]... -t DIRECTORY SOURCE...
    OPTIONS:
    -i:交互式;
    -f:force
    
    # 文件/目录重命名
    ~]# touch /tmp/abc
    ~]# mv /tmp/abc /tmp/def
    
    # 移动目录
    ~]# mkdir -p /usr/local/src/abc/file
    ~]# mv /usr/local/src/abc/ /tmp/
    ~]# ls /tmp/
    abc  def
    

    4.9. rm文件删除

    rm [OPTION]... FILE...
    OPTIONS:
    -i:interactive
    -f:force
    -r: recursive
    删除目录:rm -rf /PATH/TO/DIR
    |-- 危险操作:rm -rf /*
    |-- 注意:所有不用的文件建议不要直接删除,而是移动至某个专用目录;(模拟回收站)
    

    5. 复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的 行首的空白字符

    cp /etc/profile /tmp/
    sed -i "s@^ \+@@g" /tmp/profile
    

    6. 在vim中设置tab缩进为4个字符

    6.1. 在终端临时生效

    vim file.txt
    :set tabstop=4
    

    6.2. 配置永久生效

    echo "set tabstop=4" >> ~/.vimrc
    

    相关文章

      网友评论

          本文标题:第02周_文件管理

          本文链接:https://www.haomeiwen.com/subject/ograxktx.html