第九天---文件属性与链接

习题讲解:

习题1: 使用awk取出系统的IP地址,思路如下:
1.我要取的IP值在哪里 ifconfig yum install net-tools -y
2.如何缩小取值范围(行)
3.如何精确具体内容(列)

方式1:
[root@localhost ~]# ifconfig ens32 | head -2 | tail -1 | awk '{print$2}'
   10.0.0.200

方式2:
[root@localhost ~]# ifconfig ens32 | grep 'netmask' | awk '{print$2}'
    10.0.0.200

方式3:
[root@localhost ~]# ifconfig ens32 | awk '/netmask /{print$2}'
    10.0.0.200


方法4:
     命令sed  过滤
     选项
       -n 取消原本默认输出
       p 匹配
    -r 从文件中读
	语法:sed -n '/匹配的内容/对匹配的内容做什么动作' 匹配字符串
	示例:sed -n '/netmask/p'
                       sed -n '2p'  调出第二行的内容
        [root@localhost ~]# ifconfig ens32 | sed -n '/netmask/'p | awk '{print$2}'
       10.0.0.200

方法5:
    sed 's#替换文件中什么内容#替换成什么#g'     <<<<==扩展
	
inet 10.0.0.200  netmask 255.255.255.0  broadcast 10.0.0.255


         () () ()  <--如何将内容塞到括号中去呢?   通过匹配的方式
	       <--又该如何调用()中的内容呢?	  \1

后向引用

[root@localhost ~]# ifconfig ens32 | sed -n ‘2p’
inet 10.0.0.200 netmask 255.255.255.0 broadcast 10.0.0.255
[root@localhost ~]# ifconfig ens32 | sed -n ‘2p’ | sed -r ‘s#(^.et)(.)(net.KaTeX parse error: Expected 'EOF', got '#' at position 2: )#̲\1#g' i…)#\2#g’
10.0.0.200
[root@localhost ~]# ifconfig ens32 | sed -n ‘2p’ | sed -r 's#(^.et)(.)(net.
$)#\3#g’
netmask 255.255.255.0 broadcast 10.0.0.255
[root@localhost ~]#

习题2:
将/etc/passwd文件中的第一行中的第一列和最后一列位置进行交换。(自行指定以:为分隔符)
源文件:root❌0:0:root:/root:/bin/bash
改变后:/bin/bash❌0:0:root:/root:root

awk:

[root@localhost ~]# head -1 /etc/passwd | awk -F ‘:’ ‘{print$7$2$3$4$5$6$1}’
/bin/bashx00root/rootroot

[root@localhost ~]# head -1 /etc/passwd | awk -F ‘:’ ‘{print $7":"$2":"$3":"$4":"$5":"$6":"$1}’
/bin/bash❌0:0:root:/root:root

习题3: 将/etc/sysconfig/selinux 文件中的SELINUX=enforcing替换成SELINUX=disabled (sed)
过滤:grep
替换:sed
取什么:awk

模拟执行(演练)

[root@localhost ~]# sed ‘s#enforcing#disabled#g’ /etc/sysconfig/selinux

This file controls the state of SELinux on the system.

SELINUX= can take one of these three values:

disabled - SELinux security policy is enforced.

permissive - SELinux prints warnings instead of disabled.

disabled - No SELinux policy is loaded.

SELINUX=disabled

SELINUXTYPE= can take one of three values:

targeted - Targeted processes are protected,

minimum - Modification of targeted policy. Only selected processes are protected.

mls - Multi Level Security protection.

SELINUXTYPE=targeted

真的执行(实战)

[root@oldboy ~]# sed -i ‘s#SELINUX=enforcing#SELINUX=disabled#g’ /etc/sysconfig/selinux

文件属性

-rw-r–r--. 1 root root 26 Mar 9 11:11 oldboy.txt

  •      	1:文件类型				
    

rw-r–r-- 2:权限
1 3:表示硬链接数
root 4:这个文件的拥有人是谁
root 5:这个文件的拥有组是谁
26 6:文件大小
Mar 9 11:11 7、8、9:文件创建或修改的时间
oldboy.txt 10:文件的名称

文件类型

[root@oldboy ~]# ll -d /etc/hosts /tmp /bin/ls /dev/vda /dev/tty1 /etc/grub2.cfg /dev/log
-rwxr-xr-x. 1 root root 117680 10月 31 2018 /bin/ls
srw-rw-rw-. 1 root root 0 11月 13 23:03 /dev/log
crw–w----. 1 root tty 4, 1 11月 13 23:04 /dev/tty1
brw-rw----. 1 root disk 253, 0 11月 13 23:03 /dev/vda
lrwxrwxrwx. 1 root root 22 6月 4 2019 /etc/grub2.cfg -> …/boot/grub2/grub.cfg
-rw-r–r--. 1 root root 159 6月 4 2019 /etc/hosts
drwxrwxrwt. 11 root root 4096 3月 10 11:21 /tmp

使用ll 或者 ls -l 能够区分出来的效果
-: 表示是一个文件( 普通文件、脚本文件、压缩文件、命令文件)
s: socket,进程与进程之间的通讯协议
c: 字符设备(终端、键盘)
b: 块设备(磁盘)
l: 软链接(快捷方式)
d: 表示一个目录

如何更精准的判断他是一个什么类型的文件?
使用file命令
1.ls -l 查看
3.如果通过ls -l 或者是文件名称的后缀无法定位文件是一个什么类型,那么我们可以使用file命令来确定?
因为 file命令判断最准确

链接文件( 软链接 硬链接)

inode包含文件的元信息,具体来说有以下内容:
  * 文件的字节数
  * 文件拥有者的User ID
  * 文件的Group ID
  * 文件的读、写、执行权限
  * 文件的时间戳
  * 链接数,即有多少文件名指向这个inode
  * 文件数据block的位置

每个inode都有一个号码,操作系统用inode号码来识别不同的文件。
Linux系统内部不使用文件名,而是使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称或者绰号。

表面上,用户通过文件名,打开文件。实际上,系统内部这个过程分成三步:
首先,系统找到这个文件名对应的inode号;
其次,通过inode号,获取inode信息;
最后,根据inode信息,找到文件数据所在的block,读出数据。

软链接:

1.准备网站1.1版本代码
[root@localhost ~]# mkdir /data/rainbow-v1.1 -p
[root@localhost ~]# echo “123” > /data/rainbow-v1.1/index.html

#2.创建软链接
[root@localhost ~]# ln -s /data/rainbow-v1.1/ /data/rainbow
[root@localhost ~]# ll /data/
total 0
lrwxrwxrwx. 1 root root 19 Mar 10 16:47 rainbow -> /data/rainbow-v1.1/
drwxr-xr-x. 2 root root 24 Mar 10 16:47 rainbow-v1.1

#3.检查网站程序
[root@localhost ~]# cat /data/rainbow/index.html
123

#4.新更新一个网站的程序代码
[root@localhost ~]# mkdir /data/rainbow-v1.2
[root@localhost ~]# echo “456” > /data/rainbow-v1.2/index.html

#5.升级
[root@localhost ~]# rm -f /data/rainbow && ln -s /data/rainbow-v1.2/ /data/rainbow
[root@localhost ~]# cat /data/rainbow/index.html
456

#6.回退
[root@localhost ~]# rm -f /data/rainbow && ln -s /data/rainbow-v1.1/ /data/rainbow
[root@localhost ~]# cat /data/rainbow/index.html
123

硬链接。。。。。。

5.硬链接与软链接区别

  1. ln命令创建硬链接,ln -s命令创建软链接。
    2)目录不能创建硬链接,并且硬链接不可以跨越分区系统。
    3)目录软链接特别常用,并且软链接支持跨越分区系统。
    4)硬链接文件与源文件的inode相同,软链接文件与源文件inode不同。

5)删除源文件及其硬链接文件,整个文件会被真正的删除。

在生产中:软链接比较常用,特别用于代码的版本迭代与回退,软件的升级与回退。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值