练习讲解:
find 与管道配合使用的三种方法(find | )完成找出/etc目录下以.conf 结尾文件复制到/tmp下面
方法1
\cp $(find /etc -type f -name ".conf") /tmp/dira/find /etc -type f -name ".conf" -exec cp {} /tmp/dirb ;
\cp find /etc -type f -name "*.conf"
/tmp/dira/
方法2 -exec
find /etc/ -type f -name "*.conf" -exec cp {} /tmp/dir/ \;
方法3 |xargs
find /etc -type f -name "*.conf" |xargs cp -t /tmp/dirc/
内容
1、特殊符号
2、常用的正则和扩展正则
3、简单粗暴的使用 sed 和awk
一、特殊符号
特殊符号 | 作用 |
---|---|
!# | 调用历史中第#条命令(#表示数字) |
!ls | 调用历史中最近一个以ls开头的命令 |
!! | 上一条命令 |
\ | 强制换行 |
* | 匹配任意数量的任意字符 |
? | 匹配单个任意字符 |
[ ] | 对范围做匹配 |
{ } | 生成序列 |
> | 标准输出重定向 |
>> | 标准追加重定向 |
< | 标准输入重定向 |
<< | 标准输入追加重定向 |
2> | 标准错误输出重定向 |
2>> | 标准错误输出重定向(用户追加错误信息) |
2>&1 | 把错误的和正确的都记录下来(>>/tmp/error.log 2>&1) |
# | 注释 |
二、#常用的正则
基础正则
符号 | 释义 |
---|---|
^ | 锚定行首 |
$ | 锚定行尾 |
^$ | 匹配空行 |
. | 匹配任意字符 |
* | 匹配任意次数 |
.* | 匹配任意长度任意字符 |
\ | 转译 |
[] | 匹配任意一个 如:[abc] 匹配a、b、c中的任意一个,在中括号中的特殊字符将没有特殊含义 |
[^abc] | 取反 1个字符 1个整体 匹配不是a或不是b或不是c |
扩展正则
符号 | 释义 |
---|---|
| | 或者 |
+ | 前一个字符连续出现1次或一次以上 |
() | 把括号内的字符当成一个整体(1个字符),在后项引用中使用 |
{m,n} | 匹配前一个字符至少m次之多n次 |
{m} | 匹配前一个字符m次 |
{m,} | 匹配前一个字符至少出现m次,至多不限 |
{,n} | 前一个字符最少出现0次最多n次 |
? | 匹配前一个字符1次或0次 |
匹配字符
[a-z]
[a-z]
[A-Z]
[0-9]
[a-zA-Z]
[a-Z]
[a-Z0-9]
[0-Z]
三、简单粗暴的使用三剑客
1、sed 简单使用
使用sed命令的时候一定要注意一个事情就尽量的去使用单引号 ‘ ’
参数 | 释义 |
---|---|
-i | 修改原文件 |
-i.bak | 先备份尾xxx.bak 然后修改原文件 |
-n | 不输出模式中的内容至屏幕 |
-e | 多点编辑 |
-f | 从指定的文件中读取编辑脚本 |
-r | 支持使用扩展正则表达式 |
p 显示模式空间中的内容,一般配合-n使用,显示时就不会显示两遍内容了;
实例 :sed -n '/UUID/P' /etc/fstab 仅显示匹配到的行
sed '/UUID/p' /etc/fstab 匹配到的行会显示两遍
s/ / / 查找替换,支持使用其他的分隔符;s@查找的内容@替换为的内容@ 或 s# # #都可以;
>>此命令有两个替换标记
1)g 实现全局替换
2)p 显示替换成功的行
3)w/path/filename 将替换成功的内容保存至指定的文件中;
#在替换中只用 p
[root@localhost dir]# sed -rn "s@(r..t)@\1er@p" /etc/passwd
rooter:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/rooter:/sbin/nologin
ftp:x:14:50:FTP User:/var/fterp:/sbin/nologin
#在替换中使用 w
[root@localhost dir]# sed -rn "s@(r..t)@\1er@pw/dir/file05" /etc/passwd
rooter:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/rooter:/sbin/nologin
ftp:x:14:50:FTP User:/var/fterp:/sbin/nologin
[root@localhost dir]# cat /dir/file05
rooter:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/rooter:/sbin/nologin
ftp:x:14:50:FTP User:/var/fterp:/sbin/nologin
root@localhost oldboy]# sed -n '/UUID/P' /etc/fstab 打印1遍
UUID=913120af-26d4-4d10-bfa3-ad698a9b0fb8 / xfs defaults 0 0
UUID=d7199976-4543-4308-81b7-a9c783f6fabc /boot xfs defaults 0 0
UUID=0195d767-3038-4bdb-953c-fbf29897a44e swap swap defaults 0 0
[root@localhost oldboy]# sed '/UUID/P' /etc/fstab 打印2遍
#
# /etc/fstab
# Created by anaconda on Fri Apr 12 21:49:43 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=913120af-26d4-4d10-bfa3-ad698a9b0fb8 / xfs defaults 0 0
UUID=913120af-26d4-4d10-bfa3-ad698a9b0fb8 / xfs defaults 0 0
UUID=d7199976-4543-4308-81b7-a9c783f6fabc /boot xfs defaults 0 0
UUID=d7199976-4543-4308-81b7-a9c783f6fabc /boot xfs defaults 0 0
UUID=0195d767-3038-4bdb-953c-fbf29897a44e swap swap defaults 0 0
UUID=0195d767-3038-4bdb-953c-fbf29897a44e swap swap defaults 0 0
[root@localhost oldboy]#
sed的后项引用用法
第一种用法
匹配文件中的34两个字符
[root@localhost dir]# cat file01
123456789
[root@localhost dir]# sed -r 's@12(.*)56.*@\1@g' file01
34
[root@localhost dir]#
第二种用法
匹配文件中的34两个字符,这里注意第一个小括号和第二和小括号引用的内容
[root@localhost dir]# cat file01
123456789
[root@localhost dir]# sed -r 's@(..)(..).*@\2@g' file01
34
[root@localhost dir]# sed -r 's@(..)(..).*@\1@g' file01
12
[root@localhost dir]# sed -r 's@[1-9]{2}(..).*@\1@g' file01
34
[root@localhost dir]# sed -r 's@[1-9]{2}(..)(..).*@\1@g' file01
34
[root@localhost dir]# sed -r 's@[1-9]{2}(..)(..).*@\2@g' file01
56
第三种用法
这里注意+的用法
[root@localhost dir]# echo {1..10} | sed -r 's@(.)@<\1>@g'
<1>< ><2>< ><3>< ><4>< ><5>< ><6>< ><7>< ><8>< ><9>< ><1><0>
[root@localhost dir]# echo {1..10} | sed -r 's@([0-9])@<\1>@g'
<1> <2> <3> <4> <5> <6> <7> <8> <9> <1><0>
[root@localhost dir]# echo {1..10} | sed -r 's@([0-9]+)@<\1>@g'
<1> <2> <3> <4> <5> <6> <7> <8> <9> <10>
[root@localhost dir]#
2、awk 简单使用
awk语法格式:awk+选项+指令+文件
awk options '{指令}' file
-F 指明字段分隔符
[root@localhost dir]# stat file02 | sed -n '4p'
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
[root@localhost dir]# stat file02 | sed -n '4p' | awk -F "[(/]" '{print $2}' #[(/] 意为指定(或/为分隔符
0644
排坑
在awk 使用指定分割符时,如果要使用|符号时 需要使用多个转义符\ 进行转译
[root@localhost dir]# stat file02 | sed -n '4p'
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
[root@localhost dir]# stat file02 | sed -n '4p' | awk -F "\\\(|/" '{print $2}'
0644
[root@localhost dir]# stat file02 | sed -n '4p' | awk -F '\\(|/' '{print $2}'
0644
[root@localhost dir]#
[root@xiaoxi ~]# ip a s eth0
2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:16:3e:06:ce:0f brd ff:ff:ff:ff:ff:ff
inet 172.31.37.4/20 brd 172.31.47.255 scope global dynamic eth0
valid_lft 309371533sec preferred_lft 309371533sec
[root@xiaoxi ~]# ip a s eth0 | sed -n '3p' |awk -F "[ /]" '{print $6}'
172.31.37.4
注意上面 指定分割符后面不加+号,和下面带有+号的区别,+号表示连续多个
[root@xiaoxi ~]# ip a s eth0 | sed -n '3p' |awk -F "[ /]+" '{print $3}'
172.31.37.4
[root@xiaoxi ~]# ip a s eth0 | sed -n '3p'
inet 172.31.37.4/20 brd 172.31.47.255 scope global dynamic eth0
[root@xiaoxi ~]# ip a s eth0 | sed -n '3p' |awk -F "[ /]+" '{print $3}'
172.31.37.4
四、文件目录权限(续)吧
详细讲解 r、w、x、的作用
注意不用使用root用户测试权限问题,root用户默认自
带rw权限。
文件的权限 | 作用 |
---|---|
r | 是否可以查看 cat |
w | 是否可以修改文件内容 |
x | 是否可执行,需要r权限,常用于命令、脚本中 |
目录的权限 | 作用 |
---|---|
r | 是否可以查看目录的内容 |
w | 是否可以在目录中创建、修改、(文件名)的权限 |
x | 是否能进入目录(cd),是否能修改目录下的文件属性信息 |
五、特殊权限
1、权限掩码
umask 查看系统的权限掩码
0 022 //root用户,第一个0表示高级权限位
0 002 //普通用户,第一个0表示高级权限位
目录初始权限:
777-022=755 //root用户
777-002=775 //普通用户ch
文件初始权限:
666-022=644 //root用户
666-002=664 //普通用户
修改权限掩码)
umask 新的权限掩码
umask 000
注:使用上述方法是临时修改,重新启动系统即失效,永久修改需要修改配置文件/etc/bashrc,其中第66行是普通用户的权限掩码,68行是root用户的权限掩码。
2、权限位分类:
权限位 | 作用 |
---|---|
suid | 只要文件所有者位置上有s,用户运行命令的时候相当于命令的所有者(root) |
sgid | 只要命令所属用户组位置上有s,用户运行命令的时候相当于与这个命令的用户组是一样。(root) |
sticky | 粘着位,每个人都可以在目录下创建文件,但是每个人只能管理自己创建的文件 |
设置suid权限位方法:
chmod u+s
chmod 4755 命令名(可执行的脚本或二进制文件)
设置sgid权限位方法
chmod 2777 /dir
查看权限位
[root@localhost dir]# stat /dir/
File: ‘/dir/’
Size: 137 Blocks: 0 IO Block: 4096 directory
Device: 803h/2051d Inode: 16777894 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:default_t:s0
Access: 2019-04-26 19:30:24.329810671 +0800
Modify: 2019-04-26 19:30:16.228811151 +0800
Change: 2019-04-26 19:30:16.228811151 +0800
Birth: -
[root@localhost dir]# chmod 2755 /dir/
设置sticky方法:
chmod o+t /dir1
chmod 1777 /dir1
3、隐藏属性
隐藏属性有两种,一种是a(设置这个属性后,只能追加,不能删除)
另一种是 i (immutable) 不能删除,不能修改
chattr 加上属性
lsattr 查看属性
[root@xiaoxi ~]# chattr +a aaa
[root@xiaoxi ~]# lsattr aaa
-----a-------e-- aaa
[root@xiaoxi ~]# rm -rf aaa
rm: cannot remove ‘aaa’: Operation not permitted
[root@xiaoxi ~]# echo '1111' >aaa
-bash: aaa: Operation not permitted
[root@xiaoxi ~]# echo '1111'>>aaa
[root@xiaoxi ~]# chattr -a aaa
[root@xiaoxi ~]# lsattr aaa
-------------e-- aaa
[root@xiaoxi ~]#
[root@xiaoxi ~]# chattr +i aaa
[root@xiaoxi ~]# lsattr aaa
----i--------e-- aaa
[root@xiaoxi ~]#
--e--表示默认属性,不用理会
[root@xiaoxi ~]# lsattr
-------------e-- ./aaa
[root@xiaoxi ~]#
六、md5sum
md5sum 简单使用
[root@localhost dir]# md5sum file01
a9f6fa345e50065d2f39bb0d291a2b74 file01
[root@localhost dir]#
使用md5sum 验证文件是否被修改过
如果文件没有被修改过
[root@localhost dir]# md5sum file01 >/tmp/file.md5
[root@localhost dir]# cat /tmp/file.md5
a9f6fa345e50065d2f39bb0d291a2b74 file01
[root@localhost dir]# md5sum --check /tmp/file.md5
file01: OK
若对文件内容更改了再做验证
[root@localhost dir]# echo '111' >>file01
[root@localhost dir]# md5sum --check /tmp/file.md5
file01: FAILED
md5sum: WARNING: 1 computed checksum did NOT match
[root@localhost dir]#
对批量文件做Md5验证
首先生成MD5 文件
[root@localhost dir]# find /dir/ -type f |xargs md5sum >/tmp/dir.md5
[root@localhost dir]# cat /tmp/dir.md5
b6aeba4e1e889c715fde52ee46b418fc /dir/file.tar.gz
bb7080f43a0bb47ffc286e9a7f194724 /dir/file01
a9022c08b5d075e43ea05f63428ce3c8 /dir/file02
d41d8cd98f00b204e9800998ecf8427e /dir/file03
bcf2c8554bb79f6aaed59eadfaf893da /dir/file04
bcf2c8554bb79f6aaed59eadfaf893da /dir/file05
bb7080f43a0bb47ffc286e9a7f194724 /dir/file.hart
1eee127fc47681ab29c7bf5becfa5563 /dir/sh
然后对生文件进行验证
[root@localhost dir]# md5sum --check /tmp/dir.md5
/dir/file.tar.gz: OK
/dir/file01: OK
/dir/file02: OK
/dir/file03: OK
/dir/file04: OK
/dir/file05: OK
/dir/file.hart: OK
/dir/sh: OK
[root@localhost dir]#
同md5sum一样的还有一个sha,用法和md5sum一样
[root@localhost dir]# sha
sha1sum sha224sum sha256sum sha384sum sha512sum
[root@localhost dir]# sha1sum file01
cc5b71ee3889078b458bf781283346de05df0569 file01
[root@localhost dir]#
七、常用的 yum 源
1、阿里云 mirrors.aliyun.com
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache
2、epel源 ,同样进人mirrors.aliyun.com 找到epel 点击帮助
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
八、
查询系统信息
cat /etc/redhat-release
uname -a
开启或关闭防火墙
C 7
关闭 防火墙:systemctl stop firewalld
关闭防火墙:systemctl start firewalld
设置开机自启动: systemctl enable firewalld
关闭开机自启动:systemctl disable firewall
C 6
关闭 防火墙centos 6 :service iptables stop
关闭防火墙 centos 6 :service iptables start
chkconfig --add apache 添加nginx服务
chkconfig apache on 开机自启nginx服务
chkconfig apache off 关闭开机自启
chkconfig --list | grep apache 查看
SElinux
selinux存放位置 /etc/selinux/config
修改配置文件重启系统生效,一般配合临时生效一起使用
[root@localhost dir]# ll /etc/selinux/config
-rw-r--r--. 1 root root 542 Apr 21 02:10 /etc/selinux/config
[root@localhost dir]# cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced. ##开启selinux
# permissive - SELinux prints warnings instead of enforcing.##selinux 临时关闭
# disabled - No SELinux policy is loaded. ##彻底关闭selinux
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@localhost dir]#
[root@localhost dir]# setenforce 0 ## selinux 临时关闭
[root@localhost dir]# getenforce ##查看
Permissive
[root@localhost dir]#