视频学习记录day04

Posted

tags:

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

通配符:
注意:linux的通配符和三剑客(grep、awk、sed)正则表达式是不一样的,因此,代表的意义也是有较大的区别的。
通配符一般用户命令行bash环境,而linux正则表达式用于grep、sed、awk场景。

*代表所有(0到多个)字符

?通配符,代表任意一个字符

;连续不同命令的分隔符

# 配置文件注释  给人类看的 电脑不看

|管道  效率不高,能不用最好不用

~当前用户的家目录

-上一次的所在的路径

$变量前需要添加的符号

/路径分隔符号,也是根的意思

> 或者 1> 重定向,覆盖原有数据
>>追加重定向,追加内容文件尾部
<输入重定向
<<追加输入重定向(cat)

‘单引号不具有变量置换功能,输出时所见即所得。
"双引号具有变量置换功能,解析变量后输出,不加引号相当于双引号。常用双引号。

` tab键上面的键,反引号,两个``中间为命令,会先执行,等价于 $()

{}中间为命令区块组合或者内容序列

!逻辑运算中的"非"(not)。

&& -and 并且,当前一个指令执行成功时,执行后一个指令
||      -or  或者,当前一个执行执行失败时,执行后一个指令

..两个点代表上一级目录
. 点代表当前目录





示例:

示例:

小结:



示例:



示例:


linux正则表达式 企业实践:
取ip地址 ?
解答:sed -n ‘s#支持正则的位置##gp‘ file
方法1:
[[email protected] ~]# ifconfig eth0|sed -n ‘2p‘|sed -n ‘s#^.*inet addr:##gp‘|sed ‘s#  B.*$##g‘   
192.168.140.128     
p和-n参数是一起使用的  -n取消默认输出  p表示打印的意思




方法2   

-r 表示扩展模式   ^.*inet addr:表示addr:之前的字符串       Bcast:.*$表示  Bcast:之后的字符串

别的例子:
[[email protected] ~]# stat /etc/hosts
  File: `/etc/hosts‘
  Size: 158             Blocks: 8          IO Block: 4096   regular file
Device: 812h/2066d      Inode: 654118      Links: 3
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2017-03-27 16:17:59.254999993 +0800
Modify: 2010-01-12 21:28:22.000000000 +0800
Change: 2017-03-25 20:57:39.498978973 +0800

[[email protected] ~]# stat /etc/hosts |sed -nr ‘s#^.*Access: \(0(.*)\/-rw.*$#\1#gp‘     
644
[[email protected] ~]# stat /etc/hosts |sed -nr ‘s#^.*0(.*)/-.*$#\1#gp‘   更加简洁!!!
644
[[email protected] ~]# stat /etc/hosts |sed -nr ‘s#^.*Access: \(0##gp‘|sed -r ‘s#/-rw.*$##g‘
644



题目1 把目录或者文件前rwx-用数字显示出来
方法1:

方法2:
方法3:(还待完善)
[[email protected] ~]# stat test |awk -F "[(/]" ‘NR==4{print $2}‘                             稍微完善点的方法
0750

其他6种方法:




20170328 20:00-
date   
[[email protected] ~]# date +%F\ %X
2017-03-28 09:17:15 PM
[[email protected] ~]# date +%Y-%m-%d
2017-03-28

[[email protected] ~]# date +%F -d "-2day"
2017-03-26
[[email protected] ~]# date +%F -d "+1day"
2017-03-29






口述:
1、描述linux系统开机到登录界面的启动过程:
bios通电自检----启动权交给硬盘 零磁盘零磁道零扇区第416字节 --mbr引导---grub---加载内核---init---/etc/inittab(比如启动3级别、rc.local等)---tty--login
2、描述linux下软硬连接的区别
软链接的block只存放源文件的绝对路径信息
3、描述linux shell中单双引号以及不加引号的区别:
双引号和不加引号相同的效果,双引号更加严谨,可以使用转义符\ 变量等
单引号不能使用转义符  输出都是所见即所得  其他类似双引号
单双引号里面的反引号表示命令先执行
4、描述linux的7个运行级别的各自含义:
0 关机   1单用户  2无nfs的多用户 3 标准多用户  4 备用预留 5 x11 桌面模式 6重启
5、描述linux下文件删除的原理
如果是静态文件  只要inode为零 就表示已经删除
如果是动态文件 inode(i_link)为零且i_count为零
df -h 和 df -i


Sed 是操作、过滤和转换文本内容的强大工具。常用功能有增a删d改i查s,过滤,取行。
三剑客都是       读取一行,处理一行,输出一行,再重复。。。。(串行的概念)  
sed是会自动打印结果到屏幕

统一实验文本:
[[email protected] ~]# cat person.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO

1、增删改查
1.1增
     a 追加文本到指定行后
     i 插入文本到指定行前

1.1.1单行增加:
[[email protected] ~]# sed ‘2a 106,dandan.CSO‘ person.txt
101,oldboy,CEO
102,zhangyao,CTO
106,dandan.CSO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
[[email protected] ~]# sed ‘2i 106,dandan.CSO‘ person.txt
101,oldboy,CEO
106,dandan.CSO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO

1.1.2多行增加:
[[email protected] ~]# sed ‘2a 106,dandan.CSO\n107,bingbing,CCO‘ person.txt   #\n代表换行符 非变量
101,oldboy,CEO
102,zhangyao,CTO  
106,dandan.CSO
107,bingbing,CCO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
[[email protected] ~]# sed ‘2a 106,dandan.CSO \
> 107,bingbing,CCO‘ person.txt
101,oldboy,CEO
102,zhangyao,CTO
106,dandan.CSO
107,bingbing,CCO
103,Alex,COO
104,yy,CFO
105,feixue,CIO

[ ] 中括号代表里面的参数是可选项

2.2删
     d 删除指定的行
[[email protected] ~]# sed ‘/feixue/,2d‘ person.txt   
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
[[email protected] ~]# sed ‘/CEO/,1d‘ person.txt       
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
[[email protected] ~]# sed ‘/oldboy/,3d‘ person.txt     
104,yy,CFO
105,feixue,CIO
[[email protected] ~]# sed ‘/oldboy/d‘ person.txt   
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
[[email protected] ~]# sed ‘1d‘ person.txt         
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO

2.3改
2.3.1按行替换
     c 用新行取代旧行

2.3.2文本替换
     s:单独使用  将每一行中第一处匹配的字符串进行替换  属于sed命令
     g:每一行进行全部替换     属于sed命令s的替换标志之一,非sed命令
     -i: 修改文件内容    sed软件的选项

[[email protected] ~]# sed ‘s#zhangyao#20has#g‘ person.txt
101,oldboy,CEO
102,20has,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
[[email protected] ~]# sed -i ‘s#zhangyao#oldboyedu#g‘ person.txt       
[[email protected] ~]# cat person.txt
101,oldboy,CEO
102,oldboyedu,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO

制定行精确修改配置文件,这样可以防止修改了多的地方
[[email protected] ~]# sed ‘2s#102#106#g‘ person.txt
101,oldboy,CEO
106,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO

2.3.3变量替换
[[email protected] ~]# x=a
[[email protected] ~]# y=b
[[email protected] ~]# echo $x $y
a b
[[email protected] ~]# sed ‘s#$x#$y#g‘ test.txt      #‘’单引号输出所见即所得 不能解析变量
a
b
c
[[email protected] ~]# sed "s#$x#$y#g" test.txt    #双引号或者不加引号 可以先解析变量再执行命令
b
b
c
[[email protected] ~]# sed "s#$y#$x#g" test.txt    #eval 命令和双引号作用一样
a
a
c

20170329 20:30-
2.3.4分组替换  \(\)和\1的使用说明
例子:
[[email protected] ~]# echo I am oldboy teacher.|sed ‘s#^.*am \([a-z].*\) tea.*$#\1#g‘   
oldboy
[[email protected] ~]# echo I am oldboy teacher.|sed -r ‘s#^.*am ([a-z].*) tea.*$#\1#g‘
oldboy

2.3.5 特殊符号&代表被替换的内容

[[email protected] test]# touch stu_102999_{1..5}_finished.jpg
[[email protected] test]# ls *.jpg |sed -r ‘s#(^.*99)_(.*)_finished.jpg#mv & \1_\2.jpg#g‘
mv stu_102999_1_finished.jpg stu_102999_1.jpg
mv stu_102999_2_finished.jpg stu_102999_2.jpg
mv stu_102999_3_finished.jpg stu_102999_3.jpg
mv stu_102999_4_finished.jpg stu_102999_4.jpg
mv stu_102999_5_finished.jpg stu_102999_5.jpg
[[email protected] test]# ls *.jpg |sed -r ‘s#(^.*99)_(.*)_finished.jpg#mv & \1_\2.jpg#g‘|bash

2.4查
     p 输出指定内容,但默认会输出2次匹配的结果,因此使用-n取消默认输出
2.4.1按行查询
[[email protected] ~]# sed ‘2p‘ person.txt
101,oldboy,CEO
102,zhangyao,CTO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
[[email protected] ~]# sed ‘2p‘ person.txt -n
102,zhangyao,CTO
说明:用sed取行是最简单的   awk取列很方便

2.4.3混合查询
[[email protected] ~]# sed -n ‘2,/CFO/p‘ person.txt
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO

课后作业:
1、linux通配符
2、linux正则
3、第三关考试题
4、sed命令基础
预习:
12位权限
定时任务
第四关考试题



1、ln
ln make LiNks between files
无参数   创建硬链接   硬链接和源文件共享同一个inode 指向同一个block
-s          创建软链接   软链接和源文件不同的inode和block 软链接的block存放源文件的绝对路径信息

ln option 源文件 目标文件

只有同一个分区的inode一样的文件才是同样的文件

2、readlink  查看符号链接(软链接)的源文件

3、md5sum 计算和校验文件的md5值  (文件的指纹 独一无二的)   -c 校验文件md5值
方法:先计算文件的md5值  保存到文件  然后用-c检测文件的md5值与原来的是否一致
[[email protected] ~]# md5sum a >md5.log
[[email protected] ~]# md5sum -c md5.log
a: OK
[[email protected] ~]# echo hello >a
[[email protected] ~]# md5sum -c md5.log
a: FAILED
md5sum: WARNING: 1 of 1 computed checksum did NOT match

课前考试:
请大家讨论4个主题
1、linux文件属性  ls -lhi 结果每列
解答:
inode节点号、11位字符组成 文件类型和权限(l链接 -普通文件 d目录 s socket b块 属主读写执行 属组读写执行 其他用户读写执行  )  硬链接个数  属主 属组 文件大小(h代表人类可读 M和K) 修改时间(-ctime change  stat命令) (前面都是inode信息)     文件名(不在inode里面)
2、linux通配符讲课
解答:
.  当前目录  ..上级目录  *任意字符 ? 单个字符  \ 转义字符  # 注释 ‘无转换变量和所见即所得‘‘ 转换变量  !取反  |管道 -上一次的所在路径 ;命令分隔符 <输入重定向  <<追加输入重定向  >输出重定向 >>追加输出重定向 ~家目录 `反引号 里面的命令先执行
3、linux正则表达式
解答:
.匹配 *代表 .*匹配任意字符  $行尾 ^行首 ^$匹配空行 ?单个字符
4、取ip不低于3种方法
解答:
[[email protected] ~]# ifconfig eth0|sed -nr ‘2s#^.*ddr(.*)  B.*$#\1#gp‘
:192.168.140.128
[[email protected] ~]# ifconfig eth0|sed -nr ‘2s#^.*ddr:(.*)  B.*$#\1#gp‘
192.168.140.128
[[email protected] ~]# ifconfig eth0|awk -F "[ :]+" ‘NR==2{print $4}p‘
192.168.140.128

说明: [0-9]*表示0-9的数字轮询  -o 只显示匹配的字符



文件权限        要求精通


20170330 21:00-
测试环境准备:
[[email protected] ~]# groupadd incahome                       #创建一个家庭(oldboy的家)
[[email protected] ~]# useradd oldboy -g incahome          #让家庭主人oldboy属于incahome这个家庭
[[email protected] ~]# su - oldboy
[[email protected] ~]$ ll
total 0
[[email protected] ~]$ id oldboy
uid=502(oldboy) gid=502(incahome) groups=502(incahome)
[[email protected] ~]# useradd oldgirl -g incahome           #创建incahome这个家的家庭成员
[[email protected] ~]# useradd test                                   #外面的人,主人和家庭成员以外的人
[[email protected] ~]# id oldboy
uid=502(oldboy) gid=502(incahome) groups=502(incahome)
[[email protected] ~]# id oldgirl
uid=503(oldgirl) gid=502(incahome) groups=502(incahome)
[[email protected] ~]# id test
uid=504(test) gid=504(test) groups=504(test)
[[email protected] ~]# mv /oldboy /tmp/
mv: overwrite `/tmp/oldboy‘? y
[[email protected] ~]# mkdir /oldboy
[[email protected] ~]# cd /oldboy/
[[email protected] oldboy]# ll
total 0
[[email protected] oldboy]# echo "echo oldboylinux" >/oldboy/test.sh
[[email protected] oldboy]# chmod +x /oldboy/test.sh
[[email protected] oldboy]# ll test.sh
-rwxr-xr-x 1 root root 17 2017-03-30 21:30 test.sh
[[email protected] oldboy]# cat test.sh
echo oldboylinux

总结如下:

我们删除一个文件  就是删除这个文件名   和该文件的权限无关  是 删除上一级目录的block存放的文件名  和上一级目录的权限相关
linux系统下文件读取的原理:
比如我要删除 oldboyfile  的权限就是受到 上一级目录的权限控制


例子:


5.3chmod
5.3.2数字组合权限表示法

网站目录安全权限深度讲解:
默认权限是安全权限的临界点,工作中尽量给这个临界点,或者小于临界点,不要大于临界点。
linux目录权限默认755  文件权限默认644

根据属主属组去控制文件和目录的读写可执行权限

如果需要修改umask永久生效 那就修改以上文件位置把          临时生效: umask 数字

目录从777开始算起  文件从666开始算起
老男孩方法:
如果umask全部偶数,则直接相减得到默认创建文件的权限,目录的权限直接相减;
如果umask含有奇数,则直接相减后含奇数的+1得到创建文件的权限,目录的权限直接相减。



特殊权限位          了解即可
setuid和setgid
当在二进制passwd命令上设置了suid权限的时候,普通用户在执行该passwd命令的时候就拥有了和命令对应的用户(root)对应的权限

[[email protected] oldboy]# ll `which passwd|tail -1`
-rwsr-xr-x 1 root root 30768 2015-11-24 00:30 /usr/bin/passwd

su和sudo的区别  su相当于推翻皇帝自己当皇帝   sudo相当于皇帝给你尚方宝剑


[[email protected] oldboy]# find /usr/bin -type f -perm 4755 -exec ls -l {} \;                 # 待优化的命令
-rwsr-xr-x 1 root root 51784 Aug 24  2016 /usr/bin/crontab
-rwsr-xr-x. 1 root root 22544 Mar 17  2015 /usr/bin/pkexec
-rwsr-xr-x 1 root root 30768 Nov 24  2015 /usr/bin/passwd
-rwsr-xr-x 1 root root 40240 May 11  2016 /usr/bin/newgrp
-rwsr-xr-x. 1 root root 54496 Feb 20  2015 /usr/bin/at
-rwsr-xr-x 1 root root 75640 May 11  2016 /usr/bin/gpasswd
-rwsr-xr-x 1 root root 70480 May 11  2016 /usr/bin/chage
-rwsr-xr-x 1 root root 2438336 Jul 13  2016 /usr/bin/Xorg
优化命令如下:find /usr/bin -type f -perm 4755 -exec chmod u-s {} \;
linux的优化之一:  就是干掉无用的suid、sgid、权限


20170331 20:30-
有s表示有特殊权限u+s g+s  S表示无特殊权限u-s  g-s  
suid:          chmod 4755 file 或者chmod u+s file
sgid:          chmod 2755 file 或者chmod g+s file
一起修改:  chmod 6755 file

chown

chattr    change file attributes on a Linux file system
参数i 防止修改文件  锁定文件
[[email protected] test]# chattr +i /etc/passwd    #+i 锁定passwd文件
[[email protected] test]# lsattr /etc/passwd      
----i--------e- /etc/passwd
[[email protected] test]# useradd asdadsa
useradd: cannot open /etc/passwd

加锁关键文件   转移加锁命令  到别的文件夹
    
章节总结:
特殊权限:


以上是关于视频学习记录day04的主要内容,如果未能解决你的问题,请参考以下文章

视频学习记录day03

视频学习记录day13

视频学习记录day02

视频学习记录和规划day10

视频学习记录和规划day11

视频学习记录和规划day12