zoukankan      html  css  js  c++  java
  • 第二周作业

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

     

    Linux系统基础目录的命名法则:

           1、遵循FHS(Filesystem Hierarchy Standard)标准

           2、严格区分大小写

           3、目录也是文件,在同一路径下,两个文件不能同名

           4、支持使用除 / 以外的任意字符

           5、最长字符不能超过255个字符

    Linux发行版基本目录架构及用途描:

     

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

     

    文件的数据分为两类:一类为数据,即文件的实际内容;另一类为元数据,用来描述文件属性的数据。

     

    元数据信息包含:

    1. File:文件名
    2. Size:文件大小(单位:B)
    3. Blocks:文件所占块个数
    4. IO Block:每个数据块的大小(单位:B)
    5. regular file:普通文件(此处显示文件的类型)
    6. Inode:文件的Inode号,文件的索引节点号
    7. Links:硬链接次数
    8. Access:权限
    9. Uid:(属主id/属主名)
    10. Gid:(属组id/属组名)
    11. Context:文件所在的环境
    12. Access:最近访问时间access time (atime)
    13. Modify:数据改动时间modification time (mtime)
    14. Change:元数据改动时间status time (ctime)
    15. Creat:文件创建时间

     

    查看文件的元数据的方法:

    stat命令:stat – display file or file system status,使用stat 查看文件的元数据

    使用语法:stat FILE…

    • 示例:查看/etc/passwd文件的元数据

    [root@localhost ~]# stat /etc/passwd

    文件:”/etc/passwd”

    大小:2172           块:8          IO 块:4096   普通文件

    设备:fd00h/64768d      Inode:36107143   硬链接:1

    权限:(0644/-rw-r–r–)  Uid:(    0/    root)   Gid:(    0/    root)

    最近访问:2019-11-11 16:48:22.325033369 +0800

    最近更改:2019-11-11 16:48:22.325033369 +0800

    最近改动:2019-11-11 16:48:22.325033369 +0800

    创建时间:-

    修改文件的时间戳的方法:

    touch命令:touch – change file timestamps修改时间戳

    使用语法:     touch [OPTION]… FILE…

    注意:~]#touch /tmp/file_name   当touch的文件不存在时,会在目标目录下创建file_name空文件

    选项:

    不跟任何选项时三个时间戳都会被更新为当前时间。

    -c: 指定的文件路径不存在时不予创建;

    -a: 仅修改access time;

    -m:仅修改modify time;

    -t :指定改为某一时刻的时间,时间参数格式  [[CC]YY]MMDDhhmm[.ss]

    • 示例:将/tmp/passwd文件的最近更改时间改为2019年11月10日09点08分07秒

    ~]#touch -m -t 201911100908.07 /tmp/passwd

    [root@localhost ~]# stat /tmp/passwd

    文件:”/tmp/passwd”

    大小:2172           块:8          IO 块:4096   普通文件

    设备:fd00h/64768d      Inode:36107143         硬链接:1

    权限:(0644/-rw-r–r–)  Uid:(    0/    root)   Gid:(    0/    root)

    最近访问:2019-11-11 16:48:22.325033369 +0800

    最近更改:2019-11-10 09:08:07.000000000 +0800

    最近改动:2019-11-11 16:56:23.744986993 +0800

    创建时间:

    文件的时间是很重要的,因为,如果文件的时间误判的话,可能会造成某些程序无法顺利的运作。那么万一我发现了一个文件来自未来,该如何让该文件的时间变成『现在』的时刻呢?就用touch这个指令即可。不要怀疑系统时间会『来自未来』!很多时候会有这个问题的!举例来说在安装时选错了时区,导致系统时间比现实时间快,若此时创建了文件,再你将系统时间修改成现实时间后,那么你之前创建的文件就是来自未来的。
    至于某些情况下,由于 BIOS 的设定错误,导致系统时间跑到未来时间,并且你又建立了某些文件。 等你将时间改回正确的时间时,该文件不就变成来自未来了。

    touch 这个指令最常被使用的情况是:
      1、建立一个空的文件;
      2、将某个文件日期修订为目前 (mtime 与 atime)

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

     

    软链接
       ln -s 原文件  目标文件
      特征:1、相当于windows的快捷方式
         2、符号链接,所以链接文件大小都很小
         3、当运行软连接的时候,会根据链接指向找到真正的文件,然后执行
           4、所有链接文件的权限都是777,而真正的权限是由指向的那个文件决定的
         5、原文件丢失后,软链接无法访问,会报找不到的错误
         6、ls -al ,软连接后面箭头执行的时源文件
      
    硬链接
       ln 源文件 目标文件 
       特征:1、原文件和链接文件的属性完全一样
          2、链接文件和源文件的关系类似于:复制+同步更新
          3、当原文件丢失,硬链接文件还可以访问
          4、不能跨分区,不能针对目录使用
          5、原理:原文件和硬链接文件的节点相同的,1个文件名只能对应1个节点号。但是1个节点号能对应多个文件名。所以,他们的属性完全相同,并且修改了其中一个的内容另外一个也会跟着修改。
     
    实例如下:
    创建a文件的软连接b,并查看a和软链接文件a.link的inodes、权限、大小,如下:

    [root@db01 tmp]# ln -s a a.link
    [root@db01 tmp]# ll -i a a.link
    36107143 -rw-r--r-- 1 root root 2172 Nov 10 09:08 a
    36107167 lrwxrwxrwx 1 root root 1 Nov 17 14:51 a.link -> a

    从命令的执行结果上看,结论如下:
    1、a文件的inode号为36107143,a.link文件inode为36107167,inode号不一致。
    2、符号链接,所以链接文件大小都很小。a.link大小为1bit,而a文件的大小为.2.2K。
    3、所有a.link文件的权限都是777,而真正的权限是由指向的那个文件决定的
     
     
    删除文件a,访问a.link链接文件

    [root@db01 tmp]# mv a a.bak
    [root@db01 tmp]# cat a.link
    cat: a.link: No such file or directory

    总结:原文件丢失后,软链接无法访问,会报找不到文件的错误
     
    创建a文件的硬链接a.hard,查看a和软链接文件a.link的inodes、权限、大小等元数据。

    [root@db01 tmp]# ll -i a a.hard a.link
    36107143 -rw-r--r-- 2 root root 2172 Nov 10 09:08 a
    36107143 -rw-r--r-- 2 root root 2172 Nov 10 09:08 a.hard
    36107167 lrwxrwxrwx 1 root root 1 Nov 17 14:51 a.link -> a

    总结:原文件和链接文件的属性完全一样,元数据完全一样。
     
    删除a文件后,硬链接文件a.hard的情况

    [root@db01 tmp]# mv a a.bak
    [root@db01 tmp]# ll -i a.bak a.hard a.link
    36107143 -rw-r--r-- 2 root root 2172 Nov 10 09:08 a.bak
    36107143 -rw-r--r-- 2 root root 2172 Nov 10 09:08 a.hard
    36107167 lrwxrwxrwx 1 root root 1 Nov 17 14:51 a.link -> a

    [root@db01 tmp]# tail a.hard
    gdm:x:42:42::/var/lib/gdm:/sbin/nologin
    gnome-initial-setup:x:992:987::/run/gnome-initial-setup/:/sbin/nologin
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
    postfix:x:89:89::/var/spool/postfix:/sbin/nologin
    ntp:x:38:38::/etc/ntp:/sbin/nologin
    tcpdump:x:72:72::/:/sbin/nologin
    guest:x:1000:1000:guest:/home/guest:/bin/bash
    unbound:x:991:986:Unbound DNS resolver:/etc/unbound:/sbin/nologin
    mysql:x:990:985::/data/mysql/:/sbin/nologin

    总结:当原文件丢失,硬链接文件还可以访问。

    [root@db01 tmp]# echo "123" >> a.bak
    [root@db01 tmp]# tail -1 a.hard
    123

    总结:链接文件和源文件的关系类似于:复制+同步更新
     
    综合以上实例,软连接和硬链接的区别总结如下:
    软链接和硬链接的区别:在linux的文件系统中,保存在磁盘分区中的文件不管事什么类型都给它分配一个编号,称为索引节点号inode。具体如下:
     1、软连接,其实就是新建立一个文件,这个文件就是专门用来指向别的文件的。软连接的inode跟原文件的inode是不一致的
     2、硬链接是不会建立inode。他只是在文件原里的inode link count域再增加1而已,也因此硬链接是不可以跨越文件系统的。
     3、硬链接是一个文件别名。
     4、软链接可以跨文件系统,硬链接不可以
     5、软链接可以对一个不存在的文件名进行链接,硬链接不行。
     6、软链接可以对目录进行连接,硬连接不可以
     7、两种链接都可以通过ln来创建,ln默认创建的是硬链接
     8、使用-s开关可以创建软链接。
     

     

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

     

    目录管理命令

    ls:列出指定目录下的内容格式:
     ls [OPTION]... [FILE]...   
      -a:显示所有文件包括隐藏文件   
      -A:显示除.和..之外的所有文件   
      -l,--long:显示文件的详细属性信息   
      -h:对文件大小进行单位换算,可能影响精度   
      -d:查看目录本身而非其内部的文件   
      -r:逆序显示文件   
      -R:递归显示文件
      示例:ls -lah / --详细显示/目录下的所有文件(包括隐藏文件)   
      ls -ldh /etc --详细显示/etc目录本身   
      ls -lhv / --倒序显示/目录下所有文件(包括隐藏文件)   
      ls -R /etc    --递归显示/etc下所有文件
      
    mkdir:创建目录格式:
     mkdir [OPTION]... DIRECTORY...  
      -p:自动按需创建父目录   
      -m:创建目录时给定权限
       示例:mkdir -p /data/test/A/B --在/data目录下递归创建/test/A/B三个目录   
          mkdir -m 711 -p /data/MODE/A --在/data目录下递归创建MODE/A两个目录同时指定目录A的权限为711
    rmdir:删除目录格式:
     rmdir [OPTION]... DIRECTORY...   
       -p:删除目录后如果其父目录为空,则一并删除
        示例:rmdir -p /data/test/A --删除A目录后,test目录为空,一并删除
        
    cd:切换目录
     示例:cd ..:切换到上级目录   
        cd ~:切换回自己的家目录   
        cd -:在上一次目录与当前目录直接来回切换
     pwd:显示当前目录
     

    文件管理命令


    cp:复制 
     格式:单源复制:cp [OPTION]... [-T] SOURCE DEST(如果DEST不存在则创建,存在则覆盖)
        多源复制:cp [OPTION]... SOURCE... DIRECTORY(DEST必须为directory)
           -i:交互式复制,即覆盖前提醒用户确认   
             -f:强制覆盖目标文件  
             -r,-R:递归复制目录
             示例:cp -if /data/[1-3].txt /data/test --test必须为目录,把三个文件一起复制到test中   
             cp -r /data /practice --把data目录及目录下的内容一起复制到practice中
          
    mv:移动
     格式:单源移动:mv [OPTION]... [-T] SOURCE DEST  
        多源移动:mv [OPTION]... SOURCE... DIRECTORY   
           -i:交互式移动,即移动前提醒用户确认   
           -f:强制移动文件
     示例:mv -i /data/[1-3].txt /practice --把/data目录下三个txt文件移动到/practice下
          
    rm:删除
     格式:rm [OPTION]... FILE...   
       -i:交互式删除,即删除前提醒用户确认   
          -f:强制删除文件   
          -r,-R:递归处理,将制定目录下的所有文件包括目录一并删除
          示例:rm -rf /practice --递归删除/practice目录

         文本内容管理命令

    cat:正向查看文本内容

     格式:cat [OPTION]... [FILE]...   
         -n:给显示的文本行编号   
         -E:显示行结束符号$
         示例:cat -n /etc/fstab --查看/etc/fatab内容并显示行号
         
    tac:倒叙查看文本内容
     格式:tac [OPTION]... [FILE]...
     示例:tac /etc/passwd --倒叙查看文本内容
     
    head:显示文本内容,默认显示头10行
     格式:head [OPTION]... [FILE]...   
        -n #:显示文本头#行内容
        示例:head -5 /etc/passwd --显示/etc/passwd文件头5行内容
        
    tail:显示文本内容,默认显示后10行
      格式:tail [OPTION]... [FILE]...   
        -n #:显示文本后#行内容   
        -f:查看文件尾部内容结束后不退出,跟随显示新增的行
        示例:tail -8 /etc/passwd --显示/etc/passwd文件后8行内容
        
    more:分屏显示文本内容,每次显示一屏显示完停止
     格式:more [options] file [...]   
       Space键:显示文本下一屏内容   
       Enter键:只显示文本下一行内容   
       b键:显示文本上一屏内容   
       q键:退出
       
    less:分屏显示文本内容,不主动退出
     格式:less [options] file [...]   
     Space键:显示文本下一屏内容   
     Enter键:只显示文本下一行内容   
     b键:显示文本上一屏内容   
     q键:退出

      

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

    ~]#cp /etc/profile /tmp

    ~]#cd /tmp

    ~]#vim profile

    在末行模式下输入:%s#^[[:blank:]]+##g

     

     

     

     

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

    在用户家目录中添加配置文件:

    ~]#vim .vimrc

    添加以下一行

    set tabstop=4

    重读配置,立即生效:

    ~]#source .vimrc

  • 相关阅读:
    day7
    11.3NOIP模拟赛
    codeforces 880E. Maximum Subsequence(折半搜索+双指针)
    11.2NOIP模拟赛
    bzoj1483: [HNOI2009]梦幻布丁(vector+启发式合并)
    day9
    codeforces 1006 F(折半搜索)
    codeforces 28D(dp)
    P2210 Haywire(A*)
    4800: [Ceoi2015]Ice Hockey World Championship(折半搜索)
  • 原文地址:https://www.cnblogs.com/mark-dq/p/11836973.html
Copyright © 2011-2022 走看看