第二周

Posted kfscott

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第二周相关的知识,希望对你有一定的参考价值。

第二周

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

  • 文件名规则

    • 文件名最长255个字节
    • 包括路径在内文件名称最长4095个字节
    • 蓝色-->目录;绿色-->可执行文件;红色-->压缩文件;浅蓝色-->链接文件;灰色-->其他文件
    • 除了斜杠和NUL,所有字符都有效,但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用它们
    • 标准Linux文件系统(如ext4),文件名称大小写敏感,例如:MAIL、Mail、mail、mAiL。需要注意的是这里导致大小写敏感的是文件系统,而不是Linux本身,如果在Linux系统中挂载了Fat32的文件系统就不会区分大小写了
    • 以“.”开头的文件为隐藏文件
  • 文件系统结构

    • /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程序的头文件
      • 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相关的安全策略等信息的存储位置

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

  • 元数据包括

    • 文件类型

    • 权限

    • UID

    • GID

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

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

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

    • 有关文件的其他数据

  • 查看方式

    可以用"stat"命令来查看文件元数据内容

    [root@centos7 ~]# stat /bin/bash
      File: ‘/bin/bash’
      Size: 964600    	Blocks: 1888       IO Block: 4096   regular file
    Device: 802h/2050d	Inode: 137106      Links: 1
    Access: (0755/-rwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
    Context: system_u:object_r:shell_exec_t:s0
    Access: 2020-06-02 01:01:13.023999283 +0800
    Modify: 2019-08-08 20:06:56.000000000 +0800
    Change: 2020-04-16 12:31:08.006739529 +0800
    Birth: -
    
    • file:文件名

    • size:文件的大小

    • block:文件使用的数据块总数

    • IO Block:IO块的大小

    • regular file:文件类型(这里是常规文件),如果是目录或者其他文件类型会显示不同的结果

    • device:设备编号

    • inode:inode号

    • links:硬连接数

    • access:文件权限

    • uid:文件属主和属主uid

    • gid:文件所属组和所属组的gid

    • context:是selinux的内容,如果没有打开selinux就不会显示了

    • access、modify、change:文件的时间戳信息,分别代表:文件访问时间,修改时间和元数据信息改变时间

  • 修改时间戳

    • 查看文件,比如cat,more,less一个文件后,文件的atime会更新

      说明:从kernel2.6.29开始,文件系统默认集成了一个relatime的属性,可以使用mount命令查看。在访问时,有2种情况会更新atime,第一种是mtime比atime新;第二种是上次访问是1天前的了。

      [root@centos7 data]# stat f1
        File: ‘f1’
        Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
      Device: 803h/2051d	Inode: 68          Links: 1
      Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
      Context: unconfined_u:object_r:default_t:s0
      Access: 2020-04-24 17:26:46.443816956 +0800
      Modify: 2020-04-24 17:26:46.443816956 +0800
      Change: 2020-04-24 17:26:46.443816956 +0800
       Birth: -
      [root@centos7 data]# cat f1
      
      # 可以看到atime已经更改
      [root@centos7 data]# stat f1
        File: ‘f1’
        Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
      Device: 803h/2051d	Inode: 68          Links: 1
      Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
      Context: unconfined_u:object_r:default_t:s0
      Access: 2020-04-24 17:26:53.282816548 +0800
      Modify: 2020-04-24 17:26:46.443816956 +0800
      Change: 2020-04-24 17:26:46.443816956 +0800
       Birth: -
      
    • 使用vim更改文件的内容会同时更新文件的mtime、ctime和atime;如果使用echo修改文件只会修改mtime和ctime,不会修改atime。

      说明:使用vim打开文件,但是没有修改,使用“:q”退出,只会更改atime,如果修改了内容或者使用了“:wq”退出,则三个时间都会修改

      [root@centos7 data]# stat f1
        File: ‘f1’
        Size: 4         	Blocks: 8          IO Block: 4096   regular file
      Device: 803h/2051d	Inode: 70          Links: 1
      Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
      Context: unconfined_u:object_r:default_t:s0
      Access: 2020-04-24 17:47:26.431981437 +0800
      Modify: 2020-04-24 17:47:26.431981437 +0800
      Change: 2020-04-24 17:47:26.431981437 +0800
       Birth: -
      
      # 使用echo的方式,只修改了mtime和ctime,没有修改atime
      [root@centos7 data]# echo abc >> f1
      [root@centos7 data]# stat f1
        File: ‘f1’
        Size: 8         	Blocks: 8          IO Block: 4096   regular file
      Device: 803h/2051d	Inode: 70          Links: 1
      Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
      Context: unconfined_u:object_r:default_t:s0
      Access: 2020-04-24 17:47:26.431981437 +0800
      Modify: 2020-04-24 17:47:34.695980944 +0800
      Change: 2020-04-24 17:47:34.695980944 +0800
      
    • 更改文件的名称,大小,权限等只会更新文件的ctime

      [root@centos7 data]#stat f1
        File: ‘f1’
        Size: 4         	Blocks: 8          IO Block: 4096   regular file
      Device: 805h/2053d	Inode: 70          Links: 1
      Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
      Access: 2020-04-24 17:51:46.791987719 +0800
      Modify: 2020-04-24 17:52:06.253986559 +0800
      Change: 2020-04-24 17:52:06.253986559 +0800
       Birth: -
      
      # 改了名字之后,只有ctime修改
      [root@centos7 data]#mv f1 f2
      [root@centos7 data]#stat f2
        File: ‘f2’
        Size: 4         	Blocks: 8          IO Block: 4096   regular file
      Device: 805h/2053d	Inode: 70          Links: 1
      Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
      Access: 2020-04-24 17:51:46.791987719 +0800
      Modify: 2020-04-24 17:52:06.253986559 +0800
      Change: 2020-04-24 17:53:17.430982316 +0800
       Birth: -
      
      # 修改了权限之后,只有ctime改变
      [root@centos7 data]#stat f2
        File: ‘f2’
        Size: 4         	Blocks: 8          IO Block: 4096   regular file
      Device: 805h/2053d	Inode: 70          Links: 1
      Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
      Access: 2020-04-24 17:51:46.791987719 +0800
      Modify: 2020-04-24 17:52:06.253986559 +0800
      Change: 2020-04-24 17:53:17.430982316 +0800
       Birth: -
      [root@centos7 data]#
      [root@centos7 data]#chmod 777 f2
      [root@centos7 data]#stat f2
        File: ‘f2’
        Size: 4         	Blocks: 8          IO Block: 4096   regular file
      Device: 805h/2053d	Inode: 70          Links: 1
      Access: (0777/-rwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
      Access: 2020-04-24 17:51:46.791987719 +0800
      Modify: 2020-04-24 17:52:06.253986559 +0800
      Change: 2020-04-24 17:54:13.422978979 +0800
       Birth: -
      
    • 使用touch命令,指定修改

      • 不加任何参数,如果文件不存在则创建文件,如果文件存在就刷新时间戳

        [root@centos7 data]# ll f1
        ls: cannot access f1: No such file or directory
        [root@centos7 data]# touch f1
        [root@centos7 data]# stat f1
          File: ‘f1’
          Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
        Device: 803h/2051d	Inode: 69          Links: 1
        Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
        Context: unconfined_u:object_r:default_t:s0
        Access: 2020-04-24 16:38:58.147987920 +0800
        Modify: 2020-04-24 16:38:58.147987920 +0800
        Change: 2020-04-24 16:38:58.147987920 +0800
         Birth: -
        
        # touch了文件f1之后,时间戳更新了
        [root@centos7 data]# touch f1
        [root@centos7 data]# stat f1
          File: ‘f1’
          Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
        Device: 803h/2051d	Inode: 69          Links: 1
        Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
        Context: unconfined_u:object_r:default_t:s0
        Access: 2020-04-24 16:39:05.115987505 +0800
        Modify: 2020-04-24 16:39:05.115987505 +0800
        Change: 2020-04-24 16:39:05.115987505 +0800
         Birth: -
        
      • -a 仅改变 atime和ctime

        [root@centos7 data]# stat f1
          File: ‘f1’
          Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
        Device: 803h/2051d	Inode: 69          Links: 1
        Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
        Context: unconfined_u:object_r:default_t:s0
        Access: 2020-04-24 16:39:05.115987505 +0800
        Modify: 2020-04-24 16:39:05.115987505 +0800
        Change: 2020-04-24 16:39:05.115987505 +0800
         Birth: -
        
        # 只修改了atime和ctime,而mtime没有修改
        [root@centos7 data]# touch -a f1
        [root@centos7 data]# stat f1
          File: ‘f1’
          Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
        Device: 803h/2051d	Inode: 69          Links: 1
        Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
        Context: unconfined_u:object_r:default_t:s0
        Access: 2020-04-24 16:41:55.755977334 +0800
        Modify: 2020-04-24 16:39:05.115987505 +0800
        Change: 2020-04-24 16:41:55.755977334 +0800
         Birth: -
        
      • -m 仅改变 mtime和ctime

        [root@centos7 data]# stat f1
          File: ‘f1’
          Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
        Device: 803h/2051d	Inode: 69          Links: 1
        Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
        Context: unconfined_u:object_r:default_t:s0
        Access: 2020-04-24 16:41:55.755977334 +0800
        Modify: 2020-04-24 16:39:05.115987505 +0800
        Change: 2020-04-24 16:41:55.755977334 +0800
         Birth: -
        
        # 只修改了mtime和ctime,没有修改atime
        [root@centos7 data]# touch -m f1
        [root@centos7 data]# stat f1
          File: ‘f1’
          Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
        Device: 803h/2051d	Inode: 69          Links: 1
        Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
        Context: unconfined_u:object_r:default_t:s0
        Access: 2020-04-24 16:41:55.755977334 +0800
        Modify: 2020-04-24 16:44:04.003969689 +0800
        Change: 2020-04-24 16:44:04.003969689 +0800
         Birth: -
        
      • -t [[CC]YY]MMDDhhmm[.ss] 指定atime和mtime的时间戳

        # 指定f1的atime和mtime为2019-04-26 19:10:10
        [root@centos7 data]# touch -t 201904261910.10 f1
        [root@centos7 data]# stat f1
          File: ‘f1’
          Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
        Device: 803h/2051d	Inode: 69          Links: 1
        Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
        Context: unconfined_u:object_r:default_t:s0
        Access: 2019-04-26 19:10:10.000000000 +0800
        Modify: 2019-04-26 19:10:10.000000000 +0800
        Change: 2020-04-24 16:49:48.299949168 +0800
        

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

  • 软链接:

    • 软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
    • 软链接可以 跨文件系统 ,硬链接不可以
    • 软链接可以对一个不存在的文件名进行链接
    • 软链接可以对目录进行链接
  • 硬链接:

    • 硬链接,以文件副本的形式存在。但不占用实际空间。

    • 不允许给目录创建硬链接

    • 硬链接只有在同一个文件系统中才能创建

  • 实例操作

    创建硬连接和软连接都使用“ln”命令

    • ln命令格式
     ln [参数][源文件或目录][目标文件或目录]
    
    • 创建硬连接
    # 创建a1文件的硬连接文件a1.link,可以看到inode都是67
    [root@centos7 data]# touch a1
    [root@centos7 data]# ln a1 a1.link
    [root@centos7 data]# ll -i a1 a1.link
    67 -rw-r--r--. 2 root root 0 Apr 24 12:07 a1
    67 -rw-r--r--. 2 root root 0 Apr 24 12:07 a1.link
    
    • 创建软连接,使用“-s”参数
    [root@centos7 data]# touch a1
    [root@centos7 data]# ln -s a1 a1.slink
    [root@centos7 data]# ll a1 a1.slink
    -rw-r--r--. 1 root root 0 Apr 26 19:15 a1
    lrwxrwxrwx. 1 root root 2 Apr 26 19:16 a1.slink -> a1
    
    • 硬连接不能给目录创建,软连接可以
    [root@centos7 data]# mkdir d1
    
    # 创建硬连接报错
    [root@centos7 data]# ln d1 d1.link
    ln: ‘d1’: hard link not allowed for directory
    # 创建软连接成功
    [root@centos7 data]# ln -s d1 d1.link
    [root@centos7 data]# ll -d d1 d1.link
    drwxr-xr-x. 2 root root 6 Apr 24 12:09 d1
    lrwxrwxrwx. 1 root root 2 Apr 24 12:10 d1.link -> d1
    
    • 软链接可以 跨文件系统 ,硬链接不可以
    # 跨文件系统创建硬连接报错
    [root@centos7 data]# ln a1 /root/a2.link
    ln: failed to create hard link ‘/root/a2.link’ => ‘a1’: Invalid cross-device link
    
    # 跨文件系统创建软连接成功
    [root@centos7 data]# ln -s ../data/a1 /root/a1.link
    [root@centos7 data]# ll /root/a1.link 
    lrwxrwxrwx. 1 root root 10 Apr 24 12:32 /root/a1.link -> ../data/a1
    
  • 注意点

    • 在创建软链接时,源文件要写目标文件的相对路径;创建硬连接的源文件和目标文件路径都是相对于当前所在目录。
    [root@centos7 data]# ln -s ../data/a1 /root/a1.slink
    [root@centos7 data]# ll /root/a1.slink
    lrwxrwxrwx. 1 root root 10 Apr 24 12:58 /root/a1.slink -> ../data/a1
    
    # 可以看到两个文件内容相同,软连接创建成功
    [root@centos7 data]# cat /data/a1
    sdflasdfasfasdf
    [root@centos7 data]# cat /root/a1.slink
    sdflasdfasfasdf
    
    • 删除软链接时,路径最后不能加“/”
    • 加了“/”,如果该链接指向的是文件则不会做任何操作;如果指向的是目录则会删除目录中的内容
    # d1目录中有个子目录d2
    [root@centos7 data]# ls d1
    d2
    # 创建一个d1的软连接d1.slink
    [root@centos7 data]# ln -s d1 d1.slink
    [root@centos7 data]# ls
    d1  d1.slink
    
    # 删除时写的是d1.slink/
    [root@centos7 data]# rm -rf d1.slink/
    # 使用ls命令,在d1目录下看不到任何内容
    [root@centos7 data]# ls d1
    [root@centos7 data]# ls 
    d1  d1.slink
    
    # 所以在删除时不能带“/”
    [root@centos7 data]# rm -rf d1.slink
    [root@centos7 data]# ls 
    d1
    [root@centos7 data]# ls d1
    d2
    

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

  • touch

    格式:touch [OPTION]... FILE...
    选项:
    • 不加任何参数,如果文件不存在则创建文件,如果文件存在就刷新时间戳

      [root@centos7 data]# ll f1
      ls: cannot access f1: No such file or directory
      [root@centos7 data]# touch f1
      [root@centos7 data]# stat f1
        File: ‘f1’
        Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
      Device: 803h/2051d	Inode: 69          Links: 1
      Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
      Context: unconfined_u:object_r:default_t:s0
      Access: 2020-04-24 16:38:58.147987920 +0800
      Modify: 2020-04-24 16:38:58.147987920 +0800
      Change: 2020-04-24 16:38:58.147987920 +0800
       Birth: -
      
      # touch了已经存在的文件f1之后,时间戳更新了
      [root@centos7 data]# touch f1
      [root@centos7 data]# stat f1
        File: ‘f1’
        Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
      Device: 803h/2051d	Inode: 69          Links: 1
      Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
      Context: unconfined_u:object_r:default_t:s0
      Access: 2020-04-24 16:39:05.115987505 +0800
      Modify: 2020-04-24 16:39:05.115987505 +0800
      Change: 2020-04-24 16:39:05.115987505 +0800
       Birth: -
      
    • -a 仅改变 atime和ctime

      [root@centos7 data]# stat f1
        File: ‘f1’
        Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
      Device: 803h/2051d	Inode: 69          Links: 1
      Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
      Context: unconfined_u:object_r:default_t:s0
      Access: 2020-04-24 16:39:05.115987505 +0800
      Modify: 2020-04-24 16:39:05.115987505 +0800
      Change: 2020-04-24 16:39:05.115987505 +0800
       Birth: -
      
      # 只修改了atime和ctime,而mtime没有修改
      [root@centos7 data]# touch -a f1
      [root@centos7 data]# stat f1
        File: ‘f1’
        Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
      Device: 803h/2051d	Inode: 69          Links: 1
      Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
      Context: unconfined_u:object_r:default_t:s0
      Access: 2020-04-24 16:41:55.755977334 +0800
      Modify: 2020-04-24 16:39:05.115987505 +0800
      Change: 2020-04-24 16:41:55.755977334 +0800
       Birth: -
      
    • -m 仅改变 mtime和ctime

      [root@centos7 data]# stat f1
        File: ‘f1’
        Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
      Device: 803h/2051d	Inode: 69          Links: 1
      Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
      Context: unconfined_u:object_r:default_t:s0
      Access: 2020-04-24 16:41:55.755977334 +0800
      Modify: 2020-04-24 16:39:05.115987505 +0800
      Change: 2020-04-24 16:41:55.755977334 +0800
       Birth: -
      
      # 只修改了mtime和ctime,没有修改atime
      [root@centos7 data]# touch -m f1
      [root@centos7 data]# stat f1
        File: ‘f1’
        Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
      Device: 803h/2051d	Inode: 69          Links: 1
      Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
      Context: unconfined_u:object_r:default_t:s0
      Access: 2020-04-24 16:41:55.755977334 +0800
      Modify: 2020-04-24 16:44:04.003969689 +0800
      Change: 2020-04-24 16:44:04.003969689 +0800
       Birth: -
      
    • -t [[CC]YY]MMDDhhmm[.ss] 指定atime和mtime的时间戳,其中 MM 为月份,DD 为日,hh 为小时,mm 为分钟,CC 为年份前两位数字,YY 为年份后两位数字,ss 为秒数

      # 指定f1的atime和mtime为2019-04-26 19:10:10
      [root@centos7 data]# touch -t 201904261910.10 f1
      [root@centos7 data]# stat f1
        File: ‘f1’
        Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
      Device: 803h/2051d	Inode: 69          Links: 1
      Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
      Context: unconfined_u:object_r:default_t:s0
      Access: 2019-04-26 19:10:10.000000000 +0800
      Modify: 2019-04-26 19:10:10.000000000 +0800
      Change: 2020-04-24 16:49:48.299949168 +0800
      
    • -c 如果文件不存在,则不予创建

      # f2文件不存在
      [root@centos7 data]# ll f2
      ls: cannot access f2: No such file or directory
      # 使用-c参数,看到并没有创建f2
      [root@centos7 data]# touch -c f2
      [root@centos7 data]# ll f2
      ls: cannot access f2: No such file or directory
      
  • cp

    格式:
    • cp [OPTION]... [-T] SOURCE DEST

      SOURCE和DEST都是指的“单个文件”

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

      SOURCE...指可以同时复制多个文件,后面跟要复制的目录

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

      使用-t参数可以把目标目录放前面,要复制的文件放后面,这种用法较少

    工作原理:

    cp SRC DEST

    • SRC是文件:
    • 如果目标不存在:新建DEST,并将SRC中内容填充至DEST中
      • 如果目标存在:
        • 如果DEST是文件:将SRC中的内容覆盖至DEST中,基于安全,建议为cp命令使用-i选项
        • 如果DEST是目录:在DEST下新建与原文件同名的文件,并将SRC中内容填充至新文件中
    • SRC是目录:此时使用选项:-r
      • 如果DEST不存在:则创建指定目录,复制SRC目录中所有文件至DEST中
      • 如果DEST存在:
        • 如果DEST是文件:报错
        • 如果DEST是目录:在DEST下新建与原目录同名的目录,并将SRC中内容复制至新目录中
    常用选项:
    • -i 覆盖前提示

      默认系统出于安全考虑已经为cp命令设置了别名添加了-i选项,如果不使用"-i",就会直接覆盖
      [root@centos7 ~]# alias cp
      alias cp=‘cp -i‘
      复制时如果目标文件有相同名字存在,则会询问是否覆盖原有文件,下面第一次复制没有提示,第二次复制由于已经存在第一次复制的内容,就会提示是否覆盖之前的文件,要覆盖需要输“y或者yes”
      [root@centos7 ~]# cp -i /etc/passwd /data
      [root@centos7 ~]# cp -i /etc/passwd /data
      cp: overwrite ‘/data/passwd’? 
      
    • -n 不覆盖,注意两者顺序

      [root@centos7 ~]# ll /data/passwd
      -rw-r--r--. 1 root root 2418 Apr 23 17:00 /data/passwd
      
      # 使用“-n”参数之后,发现文件的时间没有改变,说明并没有覆盖
      [root@centos7 ~]# cp -n /etc/passwd /data
      [root@centos7 ~]# ll /data/passwd
      -rw-r--r--. 1 root root 2418 Apr 23 17:00 /data/passwd
      
    • -r, -R 递归复制目录及内部的所有内容

      # cp默认不能复制目录,需要使用-r或-R参数
      [root@centos7 ~]# cp /etc/sysconfig/ /data/sysconfigbak
      cp: omitting directory ‘/etc/sysconfig/’
      
      [root@centos7 ~]# cp -r /etc/sysconfig/ /data/sysconfigbak
      
      [root@centos7 ~]# ls -d /data/sysconfigbak
      /data/sysconfigbak
      
    • -d --no-dereference --preserv=links 不复制原文件,只复制链接名

      # /etc/grub2.cfg是个软连接文件指向/boot/grub2/grub.cfg
      [root@centos7 ~]# ll /etc/grub2.cfg
      lrwxrwxrwx. 1 root root 22 Apr 16 12:32 /etc/grub2.cfg -> ../boot/grub2/grub.cfg
      
      # 如果直接使用cp复制/etc/grub2.cfg文件,实际是把软连接所指的/boot/grub2/grub.cfg文件复制了
      [root@centos7 ~]# cp /etc/grub2.cfg /data/
      
      # 可以看到复制之后的/data/grub2.cfg和/boot/grub2/grub.cfg两个文件大小相同
      [root@centos7 ~]# ll /etc/grub2.cfg /boot/grub2/grub.cfg /data/grub2.cfg
      -rw-r--r--. 1 root root 4281 Apr 16 12:39 /boot/grub2/grub.cfg
      -rw-r--r--. 1 root root 4281 Apr 23 16:39 /data/grub2.cfg
      lrwxrwxrwx. 1 root root   22 Apr 16 12:32 /etc/grub2.cfg -> ../boot/grub2/grub.cfg
      
      # 使用“-d”参数就可以仅复制软链接
      [root@centos7 ~]# cp -d /etc/grub2.cfg /data/
      [root@centos7 ~]# ll /data/grub2.cfg
      lrwxrwxrwx. 1 root root 22 Apr 23 16:34 /data/grub2.cfg -> ../boot/grub2/grub.cfg 
      
    • --preserv[=ATTR_LIST]

      默认:只写--preserv 相当于--preserv=mode,ownership,timestamp

      可以加的参数:mode: 权限、ownership: 属主属组、timestamp、links、xattr、context、all

      # 在直接cp时,复制的文件一些元数据会发生改变
      [root@centos7 ~]# cp /etc/passwd /data
      cp: overwrite ‘/data/passwd’? yes
      
      # 可以看到复制的文件和源文件“时间戳”不同
      [root@centos7 ~]# ll /etc/passwd /data/passwd
      -rw-r--r--. 1 root root 2418 Apr 23 16:44 /data/passwd
      -rw-r--r--. 1 root root 2418 Apr 22 22:22 /etc/passwd
      
      # 使用“--preserv”,在复制时就保留了源文件的元数据
      [root@centos7 ~]# cp --preserv /etc/passwd /data/
      cp: overwrite ‘/data/passwd’? yes
      [root@centos7 ~]# ll /etc/passwd /data/passwd
      -rw-r--r--. 1 root root 2418 Apr 22 22:22 /data/passwd
      -rw-r--r--. 1 root root 2418 Apr 22 22:22 /etc/passwd
      
      • -a 归档,相当于-dR --preserv=all,是个比较重要的参数

        # “-a”参数包含了“-dR --preserv=all”所有参数的功能,是个比较重要的参数
        [root@centos7 ~]# cp -a /etc/passwd /data
        cp: overwrite ‘/data/passwd’? yes
        
        [root@centos7 ~]# ll /etc/passwd /data/passwd
        -rw-r--r--. 1 root root 2418 Apr 22 22:22 /data/passwd
        -rw-r--r--. 1 root root 2418 Apr 22 22:22 /etc/passwd
        
  • mv

    作用:移动和重命名文件

    格式:

    • mv [OPTION]... [-T] SOURCE DEST
    • mv [OPTION]... SOURCE... DIRECTORY
    • mv [OPTION]... -t DIRECTORY SOURCE...

    常用选项:

    • 移动文件或者给文件改名

      [root@centos7 data]# touch f1
      [root@centos7 data]# ls
      f1
      [root@centos7 data]# mv f1 f2
      [root@centos7 data]# ls
      f2
      
    • -i 交互式

      # 默认系统已经添加了别名,有相同文件名存在时,询问是否覆盖
      [root@centos7 ~]# alias mv
      alias mv=‘mv -i‘
      
      [root@centos7 data]# mkdir /root/rootdir
      [root@centos7 data]# mv -i /root/rootdir /data/rootdir
      mv: overwrite ‘/data/rootdir/rootdir’? yes
      [root@centos7 data]# 
      
    • -f 强制

      [root@centos7 data]# mkdir /data/rootdir
      [root@centos7 data]# mkdir /root/rootdir
      [root@centos7 data]# mv -f /root/rootdir /data/rootdir
      [root@centos7 data]# 
      
      
    • -b 目标存在,覆盖前先备份

      [root@centos7 data]# touch /root/rootfile
      [root@centos7 data]# touch /data/rootfile
      [root@centos7 data]# mv -b /root/rootfile /data/rootfile
      mv: overwrite ‘/data/rootfile’? yes
      
      # 可以看到多了一个~结尾的文件,就是备份文件
      [root@centos7 data]# ll /data
      total 0
      -rw-r--r--. 1 root root 0 Apr 23 17:33 rootfile
      -rw-r--r--. 1 root root 0 Apr 23 17:33 rootfile~
      [root@centos7 data]# 
      
  • rm

    作用:删除文件或目录

    格式:

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

    常用选项:

    • -i 交互式

      # 默认系统已经为“rm”加了“-i”参数的别名
      [root@centos7 data]# alias rm
      alias rm=‘rm -i‘
      
      [root@centos7 data]# rm -i f1
      rm: remove regular empty file ‘f1’? y
      
    • -f 强制删除

      [root@centos7 data]# touch f1
      [root@centos7 data]# rm -if f1
      
      # 把“-i”参数写在后面就会有提示了
      [root@centos7 data]# touch f1
      [root@centos7 data]# rm -fi f1
      rm: remove regular empty file ‘f1’? y
      
    • -r 递归,用于删除目录

      [root@centos7 data]# ls d1
      d2
      [root@centos7 data]# rm -r d1
      rm: descend into directory ‘d1’? y
      rm: remove directory ‘d1/d2’? y
      rm: remove directory ‘d1’? y
      
      # 可以直接使用“-rf”参数
      [root@centos7 data]# mkdir -p d1/d2
      [root@centos7 data]# ls d1
      d2
      [root@centos7 data]# rm -rf d1
      
  • rmdir

    rmdir命令只能删除空目录,功能可以被rm命令取代

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

      # 不能直接删除d1目录,因为d1里面还有子目录
      [root@centos7 data]# mkdir -p d1/d2
      [root@centos7 data]# rmdir -p d1
      rmdir: failed to remove ‘d1’: Directory not empty
      
      # 删除了d2空目录之后,d1就变成了空目录,d1也会一起被删除
      [root@centos7 data]# rmdir -p d1/d2
      [root@centos7 data]# ls d1
      ls: cannot access d1: No such file or directory
      
    • -v: 显示详细信息

      [root@centos7 data]# rmdir -pv d1/d2
      rmdir: removing directory, ‘d1/d2’
      rmdir: removing directory, ‘d1’
      
  • tree

    作用:显示目录树

    常用参数:

    • -d: 只显示目录

      [root@centos7 data]# tree d1
      d1
      └── d2
          ├── d3
          │?? └── f3
          └── f2
      
      2 directories, 2 files
      [root@centos7 data]# tree -d d1
      d1
      └── d2
          └── d3
      
      2 directories
      
    • -L level:指定显示的层级数目

      [root@centos7 data]# tree -L 1
      .
      └── d1
      
      1 directory, 0 files
      [root@centos7 data]# tree -L 2
      .
      └── d1
          └── d2
      
      2 directories, 0 files
      [root@centos7 data]# tree -L 3
      .
      └── d1
          └── d2
              ├── d3
              └── f2
      
      3 directories, 1 file
      [root@centos7 data]# tree -L 4
      .
      └── d1
          └── d2
              ├── d3
              │?? └── f3
              └── f2
      
  • mkdir

    作用: 创建目录

    常用选项:

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

      # 在没有d2目录时,无法创建d3目录,加上“-p”参数,就直接把所有目录都创建了
      [root@centos7 data]# mkdir d1/d2/d3
      mkdir: cannot create directory ‘d1/d2/d3’: No such file or directory
      [root@centos7 data]# mkdir -p d1/d2/d3
      
    • -v: 显示详细信息

      [root@centos7 data]# mkdir -pv d1/d2/d3
      mkdir: created directory ‘d1’
      mkdir: created directory ‘d1/d2’
      mkdir: created directory ‘d1/d2/d3’
      
    • -m MODE: 创建目录时直接指定权限

      # 创建一个拥有777权限的目录dir
      [root@centos7 data]# mkdir -m 777 dir
      [root@centos7 data]# ll -d dir
      drwxrwxrwx. 2 root root 6 Apr 24 17:22 dir
      

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

可以在vim中使用搜索替代的方式,命令:“%s@^ +@@g”

[root@centos7 tmp]# cp /etc/profile /tmp
[root@centos7 tmp]# vim /tmp/profile

技术图片

使用:“%s@^ +@@g”来删除行首的空格

技术图片

技术图片

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

在用户家目录创建“.vimrc”文件,在该文件中设置“set tabstop=4”

技术图片

以上是关于第二周的主要内容,如果未能解决你的问题,请参考以下文章

第二周续.(代码)

20165302第二周学习总结

20165306课下作业(第二周)

20165233 第二周课堂代码补充

第二周

第二周作业