第二周作业

泄露秘密 提交于 2019-12-04 18:01:57

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(如果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键:退出

 文件状态信息查看

 stat命令:

 格式:stat FILE ...

 示例:

    

[root@db01 ~]# stat /etc/passwd
File: ‘/etc/passwd’
Size: 2172 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 34116827 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-11-16 17:00:01.317350780 +0800
Modify: 2019-11-08 16:54:45.542965605 +0800
Change: 2019-11-08 16:54:45.571965602 +0800
Birth: -

 

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

软链接
   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开关可以创建软链接。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!