[命令] Linux 命令 rsync (差异同步)

案例一:将一个地方里的所有差异数据同步到另一个地方

# rsync -avDogp <source directory>/* <target directory>

案例二:将一个地方里的所有差异数据同步到另一个地方,并且被同步的地方有的数据而原地方没有的数据都将被删除

# rsync -avDogp --delete <source directory>/* <target directory>

[实验] 自动挂载服务的搭建 (通过 Autofs 和 NFS 实现) (CentOS Linux 8 版)

纪念:站主于 2020 年 6 月完成了此开源实验,并将过程中的所有命令经过整理和注释以后,形成以下教程

步骤目录:

步骤一:规划拓扑
1.1 服务器列表
1.2 服务器列表简介

步骤二:系统环境要求

步骤三:所有服务器安装 NFS 服务
3.1 所有服务器安装 NFS 服务
3.2 设置所有服务器开机自启 NFS 服务
3.3 所有服务器启动 NFS 服务

步骤四:配置 NFS 服务
4.1 创建用于 NFS 服务的目录
4.1.1 创建被 NFS 服务共享的目录
4.1.2 创建用于自动挂载 NFS 服务分享目录的目录
4.2 配置服务端的 NFS 服务配置文件
4.2.1 在服务端上添加可被 NFS 服务挂载的选项
4.2.2 让刚刚修改的 NFS 服务配置文件生效
4.3 部署客户端的 Autofs 自动挂载服务
4.3.1 安装 Autofs 服务
4.3.2 设置客户端开机自启 Autofs 服务
4.3.3 在客户端上设置 Autofs 自动挂载服务
4.3.3.1 在客户端上设置 Autofs 自动挂载的主配置文件
4.3.3.2 在客户端上设置 Autofs 的从配置文件
4.3.4 让刚刚修改的 Autofs 自动挂载服务配置文件生效

步骤五:显示 Autofs 自动挂载服务是否设置成功
5.1 显示客户端当前的目录挂载情况
5.2 进入到 Autofs 自动挂载的目录
5.3 再次显示客户端当前的目录挂载情况

具体的操作步骤:

步骤一:规划拓扑
1.1 服务器列表

服务端 192.168.101.10
客户端 192.168.101.11

1.2 服务器列表简介

1) 服务器提供 NFS 服务将自己的目录分享
2) 客户端挂载和使用 NFS 服务将服务端分享的目录挂载在自己的目录上

步骤二:系统环境要求

1) 所有服务器的系统都需要是 CentOS 8 版本
2) 所有服务器都要关闭防火墙
3) 所有服务器系统都要配置好可用的软件源
4) 需要按照拓扑图给对应的服务器配置好 IP 地址和主机名
5) 所有服务器都要可以相互 ping 通自己和对方的 IP 地址和主机名

步骤三:所有服务器安装 NFS 服务
3.1 所有服务器安装 NFS 服务

(分别在服务端和客户端上执行以下步骤)

# yum -y install rpcbind nfs-utils

3.2 设置所有服务器开机自启 NFS 服务

(分别在服务端和客户端上执行以下步骤)

# systemctl enable nfs-server

3.3 所有服务器启动 NFS 服务

(分别在服务端和客户端上执行以下步骤)

# systemctl start nfs-server

步骤四:配置 NFS 服务
4.1 创建用于 NFS 服务的目录
4.1.1 创建被 NFS 服务共享的目录

(只在服务端上执行以下步骤)

# mkdir /nfsshare

4.1.2 创建用于自动挂载 NFS 服务分享目录的目录

(只在客户端上执行以下步骤)

# mkdir /autofs

4.2 配置服务端的 NFS 服务配置文件
4.2.1 在服务端上添加可被 NFS 服务挂载的选项

(只在服务端上执行以下步骤)

# vim /etc/exports

添加以下内容:

......
/nfsshare 192.168.101.0/24(rw,sync,no_root_squash,no_subtree_check)

(补充:这里的 192.168.101.0.24 是客户端的 IP 地址所在的网段)

4.2.2 让刚刚修改的 NFS 服务配置文件生效

(只在服务端上执行以下步骤)

# exportfs -a

4.3 部署客户端的 Autofs 自动挂载服务
4.3.1 安装 Autofs 服务

(只在客户端上执行以下步骤)

# yum -y install autofs

4.3.2 设置客户端开机自启 Autofs 服务

(只在客户端上执行以下步骤)

# systemctl enable autofs

4.3.3 在客户端上设置 Autofs 自动挂载服务
4.3.3.1 在客户端上设置 Autofs 自动挂载的主配置文件

(只在客户端上执行以下步骤)

# vim /etc/auto.master

将以下内容:

......
#
/misc   /etc/auto.misc
#
......

修改为:

......
/misc   /etc/auto.misc
/autofs /etc/auto.autofs
......

(补充:在这里指定了 /etc/auto.autofs 为 Autofs 的从配置文件,并且将 autofs 的主目录设置为 /autofs)

4.3.3.2 在客户端上设置 Autofs 的从配置文件

(只在客户端上执行以下步骤)

# cp /etc/auto.misc /etc/auto.autofs
# vim /etc/auto.autofs

将以下内容:

......
cd              -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
......

修改为:

......
cd              -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
directory01             -fstype=nfs,rw 192.168.101.10:/nfsshare
......

(补充:在这里指定了 Autofs 的次级目录为 directory01,即:/autofs/directory01)

4.3.4 让刚刚修改的 Autofs 自动挂载服务配置文件生效

(只在客户端上执行以下步骤)

# systemctl restart autofs

步骤五:显示 Autofs 自动挂载服务是否设置成功
5.1 显示客户端当前的目录挂载情况

(只在客户端上执行以下步骤)

# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        957M     0  957M   0% /dev
tmpfs           971M     0  971M   0% /dev/shm
tmpfs           971M   17M  954M   2% /run
tmpfs           971M     0  971M   0% /sys/fs/cgroup
/dev/vda1        10G  1.6G  8.5G  16% /
tmpfs           195M     0  195M   0% /run/user/0

5.2 进入到 Autofs 自动挂载的目录

(只在客户端上执行以下步骤)

# cd /autofs/directory01

5.3 再次显示客户端当前的目录挂载情况

(只在客户端上执行以下步骤)

# df -h
Filesystem                Size  Used Avail Use% Mounted on
devtmpfs                  957M     0  957M   0% /dev
tmpfs                     971M     0  971M   0% /dev/shm
tmpfs                     971M   17M  955M   2% /run
tmpfs                     971M     0  971M   0% /sys/fs/cgroup
/dev/vda1                  10G  1.6G  8.5G  16% /
tmpfs                     195M     0  195M   0% /run/user/0
192.168.101.10:/nfsshare   10G  1.6G  8.5G  16% /autofs/directory01

(补充:在进入到 Autofs 自动挂载的目录后,自动挂载就在系统中自动出现了)

[内容] 正则表达式 (转载)

shell正则表达式应用

正则表达式
一、 什么是正则表达式

  什么是正则表达式?正则表达式是用于描述字符排列和匹配模式的一种语法规则。在很多程序设计语言中都支持利用正则表达式来进行字符串的操作,不同语言中的正则表达式略有不同,但是毕竟都是正则,其本质思想都是一致的,当我们掌握了shell中的正则后,再去看python或者perl里面的正则表达式时,会发现其实都是一样的东东。

  在shell的一些命令中,有些并不支持正则表达式,但是它们支持Linux里面的通配符,那么通配符又是什么东东呢,它跟正则表达式又有什么关系?

  正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。grep、awk、sed等命令都支持正则表达式。通配符用来匹配符合条件的文件名,通配符是完全匹配。ls、find、cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配了。

Shell通配符主要是下面三个:

*  匹配任意字符

?  匹配任意一个字符 

     []  匹配匹配中括号中的一个字符

                                                                         

首先,正则表达式是用来匹配文件中文本的字符串,而通配符是用来匹配符合条件的文件名;其次正则表达式是包含匹配,只要包含正则中的字符串,就匹配,而通配符是完全匹配,也就是说,必须要与条件中的字符串一模一样才会匹配。 

说了这么多,其实正则表达式主要用于字符串的模式分割、匹配、查找及替换操作,下面来关注一下正则表达式基本的元字符和它的作用。 
二、正则表达式基本的元字符

元字符
	

作用
	

举例说明

*
	

前一个字符匹配0次或者任意多次
	

"a*" 匹配所有内容,包括空白行 
"aa*" 匹配至少包含一个a的行
"aaa*" 匹配最后包含两个连续a的字符串
"aaaaa*"匹配最少包含4个连续a的字符串

.
	

匹配除了换行符外的任意一个字符
	

"s..d" 匹配在s和d这两个字母之间一定有两个

字符的单词
"s.*d" 匹配在s和d字母之间有任意字符
".*" 匹配所有内容

^
	

匹配行首
	

"^hello" 匹配以hello开头的行
"^M" 匹配以大写“M”开头的行

$
	

匹配行尾
	

"hello$" 匹配以hello结尾的行 
"n$" 匹配以小写“n”结尾的行
"^$" 匹配空白行

 

[]
	

匹配中括号中指定的任意一个字符,只匹配一
个字符
	

"[aeiou]" 匹配任意一个元音字母,
"[0-9]" 匹配任意一位数字,
"[a-z][0-9]" 匹配小写字母和一位数字构成的两位字符。
"s[ao]id" 匹配s和i字母中,要么是a,要么是o

"[0-9]"  匹配任意一个数字

"^[a-z]" 匹配小写字母开头的行

[^]
	

匹配中括号的字符以外的任意一个字符
	

"[^0-9]" 匹配任意一位非数字字符,
"[^a-z]" 表示任意一位非小写字母
"^[^a-z]"  匹配不是小写字母开头的行
"^[^a-zA-Z]" 匹配不是字母开头的行

\
	

转义符。用于将特殊符号的含义取消
	

"\.$" 匹配使用"."结尾的行

\{n\}
	

表示其前面的字符恰好出现n次
	

"[0-9]\{4\}" 匹配4位数字,
"[1][3-8][0-9]\{9\}" 匹配手机号码
"a\{3\}"  匹配a字母连续出现3次的字符串
"[0-9]\{3\}" 匹配包含连续的3个数字的字符串

\{n,\}
	

表示其前面的字符出现不小于n次
	

"[0-9]\{2,\}" 表示两位及以上的数字。
"[0-9]\{3,\}[a-z]" 匹配最少用连续3个数字开头

的字符串

\{n,m\}
	

表示其前面的字符至少出现n次,最多出现
m次
	

"[a-z]\{6,8\}" 匹配6到8位的小写字母。
"sa\{1,3\}i" 匹配在字母s和i直接有最少一个a,

最多三个a

( )
	

 
	

 

{ }
	

指定字符出现的次数
	

 

?
	

匹配一个字符0或1次,等价于 {0,1}
	

 

+
	

匹配一个字符1或多次,等价于{1,}
	

 

|
	

 
	

 
三、shell常用正则表达式

 “^\d+$” //非负整数(正整数 + 0)  
“^[0-9]*[1-9][0-9]*$” //正整数  
“^((-\d+)|(0+))$” //非正整数(负整数 + 0)  
“^-[0-9]*[1-9][0-9]*$” //负整数  
“^-?\d+$” //整数  
“^\d+(\.\d+)?$” //非负浮点数(正浮点数 + 0)  
“^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$” //正浮点数  
“^((-\d+(\.\d+)?)|(0+(\.0+)?))$” //非正浮点数(负浮点数 + 0)  
“^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$” //负浮点数  
“^(-?\d+)(\.\d+)?$” //浮点数  
“^[A-Za-z]+$” //由26个英文字母组成的字符串  
“^[A-Z]+$” //由26个英文字母的大写组成的字符串  
“^[a-z]+$” //由26个英文字母的小写组成的字符串  
“^[A-Za-z0-9]+$” //由数字和26个英文字母组成的字符串  
“^\w+$” //由数字、26个英文字母或者下划线组成的字符串  
“^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$” //email地址  
“^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$” //url  
/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/   //  年-月-日  
/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/   // 月/日/年  
“^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$”   //Emil  
/^((\+?[0-9]{2,4}\-[0-9]{3,4}\-)|([0-9]{3,4}\-))?([0-9]{7,8})(\-[0-9]+)?$/     //电话号码  
“^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$”   //IP地址  

匹配中文字符的正则表达式: [一-龥]  
匹配双字节字符(包括汉字在内):[^\x00-\xff]  
匹配空行的正则表达式:\n[\s| ]*\r  
匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/  
匹配首尾空格的正则表达式:(^\s*)|(\s*$)  
匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*  
匹配网址URL的正则表达式:^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$  
匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$  
匹配国内电话号码:(\d{3}-|\d{4}-)?(\d{8}|\d{7})?  
匹配腾讯QQ号:^[1-9]*[1-9][0-9]*$  
四、元字符及其在正则表达式上下文中的行为 

\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个后向引用、或一个八进制转义符。 
 
 
^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置。 
 
 
$ 匹配输入字符串的结束位置。如果设置了 RegExp 对象的Multiline 属性,$ 也匹配 '\n' 或 '\r' 之前的位置。 
 
 
* 匹配前面的子表达式零次或多次。 
 
 
+ 匹配前面的子表达式一次或多次。+ 等价于 {1,}。 
 
 
? 匹配前面的子表达式零次或一次。? 等价于 {0,1}。 
 
 
{n} n 是一个非负整数,匹配确定的n 次。 
 
 
{n,} n 是一个非负整数,至少匹配n 次。 
 
 
{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。在逗号和两个数之间不能有空格。 
 
 
? 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。 
 
 
. 匹配除 “\n” 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用象 '[.\n]' 的模式。  
(pattern) 匹配pattern 并获取这一匹配。 
 
 
(?:pattern) 匹配pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。 
 
 
(?=pattern) 正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。 
 
 
(?!pattern) 负向预查,与(?=pattern)作用相反 
 
 
x|y 匹配 x 或 y。 
 
 
[xyz] 字符集合。 
 
 
[^xyz] 负值字符集合。 
 
 
[a-z] 字符范围,匹配指定范围内的任意字符。 
 
 
[^a-z] 负值字符范围,匹配任何不在指定范围内的任意字符。 
 
 
\b 匹配一个单词边界,也就是指单词和空格间的位置。 
 
 
\B 匹配非单词边界。 
 
 
\cx 匹配由x指明的控制字符。 
 
 
\d 匹配一个数字字符。等价于 [0-9]。 
 
 
\D 匹配一个非数字字符。等价于 [^0-9]。 
 
 
\f 匹配一个换页符。等价于 \x0c 和 \cL。 
 
 
\n 匹配一个换行符。等价于 \x0a 和 \cJ。 
 
 
\r 匹配一个回车符。等价于 \x0d 和 \cM。 
 
 
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。 
 
 
\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。 
 
 
\t 匹配一个制表符。等价于 \x09 和 \cI。 
 
 
\v 匹配一个垂直制表符。等价于 \x0b 和 \cK。 
 
 
\w 匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'。 
 
 
\W 匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'。 
 
 
\xn 匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。 
 
 
\num 匹配 num,其中num是一个正整数。对所获取的匹配的引用。 
 
 
\n 标识一个八进制转义值或一个后向引用。如果 \n 之前至少 n 个获取的子表达式,则 n 为后向引用。否则,如果 n 为八进制数字 (0-7),则 n 为一个八进制转义值。 
 
 
\nm 标识一个八进制转义值或一个后向引用。如果 \nm 之前至少有is preceded by at least nm 个获取得子表达式,则 nm 为后向引用。如果 \nm 之前至少有 n 个获取,则 n 为一个后跟文字 m 的后向引用。如果前面的条件都不满足,若 n 和 m 均为八进制数字 (0-7),则 \nm 将匹配八进制转义值 nm。 
 
 
\nml 如果 n 为八进制数字 (0-3),且 m 和 l 均为八进制数字 (0-7),则匹配八进制转义值 nml。 
 
 
\un 匹配 n,其中 n 是一个用四个十六进制数字表示的Unicode字符。 
 
 

匹配中文字符的正则表达式: [u4e00-u9fa5] 
 
 
匹配双字节字符(包括汉字在内):[^x00-xff] 
 
 
匹配空行的正则表达式:n[s| ]*r 
 
 
匹配HTML标记的正则表达式:/<(.*)>.*</1>|<(.*) />/ 
 
 
匹配首尾空格的正则表达式:(^s*)|(s*$) 
 
 
匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)* 
 
 
匹配网址URL的正则表达式:http://([w-]+.)+[w-]+(/[w- ./?%&=]*)? 
 
 

利用正则表达式限制网页表单里的文本框输入内容: 

 用正则表达式限制只能输入中文:οnkeyup=”value=value.replace(/[^u4E00-u9FA5]/g,”)” onbeforepaste=”clipboardData.setData('text',clipboardData.getData('text').replace(/[^u4E00-u9FA5]/g,”))” 
 
 
用正则表达式限制只能输入全角字符: οnkeyup=”value=value.replace(/[^uFF00-uFFFF]/g,”)” onbeforepaste=”clipboardData.setData('text',clipboardData.getData('text').replace(/[^uFF00-uFFFF]/g,”))” 
 
 
用正则表达式限制只能输入数字:οnkeyup=”value=value.replace(/[^d]/g,”) “onbeforepaste=”clipboardData.setData('text',clipboardData.getData('text').replace(/[^d]/g,”))” 
 
 
用正则表达式限制只能输入数字和英文:οnkeyup=”value=value.replace(/[W]/g,”) “onbeforepaste=”clipboardData.setData('text',clipboardData.getData('text').replace(/[^d]/g,”))” 
  
五、其他常用正则表达式 

 
 
匹配中文字符的正则表达式: [一-龥] 
 
 
匹配双字节字符(包括汉字在内):[^\x00-\xff] 
 
 
匹配空行的正则表达式:\n[\s| ]*\r 
 
 
匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/ 
 
 
匹配首尾空格的正则表达式:(^\s*)|(\s*$) 
 
 
匹配IP地址的正则表达式:/(\d+)\.(\d+)\.(\d+)\.(\d+)/g // 
 
 
匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 
 
 
匹配网址URL的正则表达式:http://(/[\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)? 
 
 

sql语句:^(select|drop|delete|create|update|insert).*$ 

 
 
1、非负整数:^\d+$ 
 
 
2、正整数:^[0-9]*[1-9][0-9]*$ 
 
 
3、非正整数:^((-\d+)|(0+))$ 
 
 
4、负整数:^-[0-9]*[1-9][0-9]*$ 
 
 
5、整数:^-?\d+$ 
 
 
6、非负浮点数:^\d+(\.\d+)?$ 
 
 
7、正浮点数:^((0-9)+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)| ([0-9]*[1-9][0-9]*))$ 
 
 
8、非正浮点数:^((-\d+\.\d+)?)|(0+(\.0+)?))$ 
 
 
9、负浮点数:^(-((正浮点数正则式)))$ 
 
 
10、英文字符串:^[A-Za-z]+$ 
 
 
11、英文大写串:^[A-Z]+$ 
 
 
12、英文小写串:^[a-z]+$ 
 
 
13、英文字符数字串:^[A-Za-z0-9]+$ 
 
 
14、英数字加下划线串:^\w+$ 
 
 
15、E-mail地址:^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$ 
 
 
16、URL:^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$  
或:^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^& lt;>\"\"])*$ 
 
 
17、邮政编码:^[1-9]\d{5}$ 
 
 
18、中文:^[Α-¥]+$ 
 
 
19、电话号码:^((\d2,3
)|(\d{3}\-))?(0\d2,3|0\d{2,3}-)?[1-9] \d{6,7}(\-\d{1,4})?$ 
 
 
20、手机号码:^((\d2,3)|(\d{3}\-))?13\d{9}$ 
 
 
21、双字节字符(包括汉字在内):^\x00-\xff 
 
22、匹配首尾空格:(^\s*)|(\s*$)(像vbscript那样的trim函数) 
 
23、匹配HTML标记:<(.*)>.*<\/\1>|<(.*) \/> 
 
24、匹配空行:\n[\s| ]*\r 
 
25、提取信息中的网络链接:(h|H)(r|R)(e|E)(f|F) *= *('|”)?(\w|\\|\/|\.)+('|”| *|>)? 
 
26、提取信息中的邮件地址:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 
 
27、提取信息中的图片链接:(s|S)(r|R)(c|C) *= *('|”)?(\w|\\|\/|\.)+('|”| *|>)? 
 
28、提取信息中的IP地址:(\d+)\.(\d+)\.(\d+)\.(\d+) 
 
29、提取信息中的中国手机号码:(86)*0*13\d{9} 
 
30、提取信息中的中国固定电话号码:(\d3,4|\d{3,4}-|\s)?\d{8} 
 
31、提取信息中的中国电话号码(包括移动和固定电话):(\d3,4|\d{3,4}-|\s)?\d{7,14} 
 
32、提取信息中的中国邮政编码:[1-9]{1}(\d+){5} 
 
33、提取信息中的浮点数(即小数):(-?\d*)\.?\d+ 
 
34、提取信息中的任何数字 :(-?\d*)(\.\d+)? 
 
35、IP:(\d+)\.(\d+)\.(\d+)\.(\d+) 
 
36、电话区号:/^0\d{2,3}$/ 
 
37、腾讯QQ号:^[1-9]*[1-9][0-9]*$ 
 
38、帐号(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 
 
39、中文、英文、数字及下划线:^[一-龥_a-zA-Z0-9]+$
————————————————
版权声明:本文为CSDN博主「WingoPower」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_38382148/java/article/details/78644011

注明:所有转载内容皆直接从被转载文章网页的标题和内容的文本中复制而来

CC 4.0 BY-SA 版权协议网址:https://creativecommons.org/licenses/by-sa/4.0/deed.z

[命令] Linux 命令 du (统计文件或目录大小)

内容一:du 命令的参数

1) h 以方便人类阅读的方式进行显示
2) s 将所有文件的大小进行相加

内容二:du 命令的使用案例
2.1 案例一:统计当前目录下所有文件的大小,将结果相加

# du -s

或者:

# du -s

2.2 案例二:统计当前目录下所有文件的大小,将结果相加,并以方便人类阅读的方式进行显示

# du -sh

或者:

# du -sh *

2.3 案例三:统计某一个目录下所有文件的大小,并以方便人类阅读的方式进行显示

# du -h <directory>

或者:

# du -h <directory>/*

2.4 案例四:统计某个目录的大小,并以方便人类阅读的方式进行显示

# du -h <file>

2.5 案例五:统计当前目录的一级子目录的大小,并以方便人类阅读的方式进行显示

# du -h --max-depth=1

2.6 案例六:统计当前目录下所有文件的大小,将结果相加,并以 m 作为单位进行显示

# du -sm

或者:

# du -sm *

2.7 案例七:统计当前目录下所有文件的大小,将结果相加,并以 g 作为单位进行显示

# du -sg

或者:

# du -sg *