第二周作业

Linux发行版的系统目录名称命名规则及用途
Linux系统基础目录的命名法则:

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

2、严格区分大小写

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

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

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

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

20191104233326688.png

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

  • 元数据信息包含:
    File:文件名
    Size:文件大小(单位:B)
    Blocks:文件所占块个数
    IO Block:每个数据块的大小(单位:B)
    regular file:普通文件(此处显示文件的类型)
    Inode:文件的Inode号,文件的索引节点号
    Links:硬链接次数
    Access:权限
    Uid:(属主id/属主名)
    Gid:(属组id/属组名)
    Context:文件所在的环境
    Access:最近访问时间access time (atime)
    Modify:数据改动时间modification time (mtime)
    Change:元数据改动时间status time (ctime)
    Creat/Birth:文件创建时间

  • 查看文件的元数据的方法:
    [root@centos7 ~]#stat /etc/passwd
    File: ‘/etc/passwd’
    Size: 2517 Blocks: 8 IO Block: 4096 regular file
    Device: 802h/2050d Inode: 135045203 Links: 1
    Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
    Access: 2020-03-03 11:16:04.007598750 +0800
    Modify: 2020-03-02 11:15:37.520178093 +0800
    Change: 2020-03-02 11:15:37.521178093 +0800
    Birth: -

  • 如何修改文件的时间戳信息:

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

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

-a: 仅修改access time;

-m:仅修改modify time;

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

  • 实列:
    [root@centos7 ~]#touch -a -t 202003040754 /etc/passwd
    [root@centos7 ~]#stat /etc/passwd
    File: ‘/etc/passwd’
    Size: 2517 Blocks: 8 IO Block: 4096 regular file
    Device: 802h/2050d Inode: 135045203 Links: 1
    Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
    Access: 2020-03-04 07:54:00.000000000 +0800
    Modify: 2020-03-02 11:15:37.520178093 +0800
    Change: 2020-03-04 07:54:50.362195261 +0800
    Birth: -

总结硬链接和软连接的区别,并用实列操作说明。

  • 软链接
    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@centos ~]# ln -s a a.link
    [root@centos ~]# ll -i
    total 6728
    394681 -rw-r--r-- 1 root root 6888896 Nov 10 21:42 a
    394522 lrwxrwxrwx 1 root root 1 Nov 10 21:45 a.link -> a

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

  • 删除文件a,访问a.link链接文件
    [root@centos ~]# mv a a.bak
    [root@centos ~]# cat a.link
    cat: a.link: No such file or directory

  • 总结:原文件丢失后,软链接无法访问,会报找不到文件的错误

  • 创建a文件的硬链接a.hard,查看a和软链接文件a.link的inodes、权限、大小等元数据。
    [root@centos ~]# ln a a.hard
    [root@centos ~]# ll -i
    total 13456
    394681 -rw-r--r-- 3 root root 6888896 Nov 10 21:42 a
    394681 -rw-r--r-- 3 root root 6888896 Nov 10 21:42 a.hard
    394522 lrwxrwxrwx 1 root root 1 Nov 10 21:45 a.link -> a

  • 总结:原文件和链接文件的属性完全一样,元数据完全一样。

  • 删除a文件后,硬链接文件a.hard的情况
    [root@VM_0_15_centos ~]# mv a a.bak
    [root@VM_0_15_centos ~]# ll -i
    total 13456
    394699 -rw-r--r-- 2 root root 6888896 Nov 10 22:39 a.bak
    394699 -rw-r--r-- 2 root root 6888896 Nov 10 22:39 a.hard
    394522 lrwxrwxrwx 1 root root 1 Nov 10 21:45 a.link -> a
    [root@VM_0_15_centos ~]# tail a.hard
    999991
    999992
    999993
    999994
    999995
    999996
    999997
    999998
    999999
    1000000

  • 总结:当原文件丢失,硬链接文件还可以访问。
    [root@centos ~]# echo "1">>a.bak
    [root@centos ~]# tail -1 a.hard
    1

  • 总结:链接文件和源文件的关系类似于:复制+同步更新

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

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(如果DEST不存在则创建,存在则覆盖)   
    多源复制:mv [OPTION]... SOURCE... DIRECTORY(DEST必须为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键:退出

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

  • 复制/etc/profile至/tmp/目录:
    cp 命令
    解释说明:cp - copy files and directories

  • 格式:
    cp [OPTION]… [-T] SOURCE DEST
    cp [OPTION]… SOURCE… DIRECTORY
    cp [OPTION]… -t DIRECTORY SOURCE…

  • 常用选项:
    -i 覆盖前提示 //如果不提示的话,会直接覆盖有风险
    -n 不覆盖,注意两者顺序
    -r, -R 递归复制目录及内部的所有内容
    -a 归档,相当于-dR --preserv=all //一般用来备份
    -d --no-dereference --preserv=links 不复制原文件,只复制链接名
    –preserv[=ATTR_LIST] mode: 权限、ownership: 属主属组、timestamp: 、links、xattr、context、all
    -p 等同–preserv=mode,ownership,timestamp
    -v --verbose
    -f --force // if an existing destination file cannot be opened, remove it and try again (this option is ignored when the -n option is also used)
    -u --update 只复制源比目标更新文件或目标不存在的文件
    -b 目标存在,覆盖前先备份,形式为 filename~

  • 复制/etc/profile至/tmp/目录

  • 实列:
    [root@centos7 ~]#cp /etc/profile /tmp/

  • 用查找替换命令删除/tmp/profile文件中的行首的空白字符

  • 实列:
    [root@centos7 tmp]#sed 's@^[[:space:]]+@@' profile

在vim中设置tab键缩进为4个字符。

  • 临时生效
    使用vim编辑器打开一个配置文件,直接输入命令模式下直接输入:set tabstop=4就设置成功tab键缩进4个字符的设置了。
  • 注:(这个配置为临时生效)
  • 永久生效
    终端中当前用户的家目录下输入vim .vimrc
    .vimrc中输入set tabstop=4 // 设置tab缩进四个字符
    永久生效成功

你可能感兴趣的:(第二周作业)