通配符(Globbing)
	通配符与元字符类似,通配符主要用于文件名的匹配,而元字符则主要用在字符串的匹配上;
	下面介绍几种常用的通配符: 
	* 表示匹配任意位数的任意字符
	? 表示匹配一位任意字符
	^ 表示取反,不包含的意思
	[] 表示此区间内的任意一个字符
	{} 表示一种集合
	\\ 转义字符,使具有特殊意义的字符失去原有意义
	| 表示‘或',匹配一组可选的字符
元字符
	元字符是用来描述字符的特殊字符。
	常用的元字符及意义如下:
| 
 					1				
 					2				
 					3				
 					4				
 					5				
 					6				
 					7				
 					8				
 					9				
 					10				
 					11				
 					12				
 					13				
 					14			  | 
* 重复前面的字符0次或者多次					
. 匹配任意字符一次					
\\+ 匹配前面的字符1次或者多次					
\\? 匹配前面的字符0次或者1次					
\\{m\\} 匹配其前面的字符m次					
\\{m,n\\} 匹配前面的字符至少m次,至多n次					
^ 匹配字符在行首					
$ 匹配字符在行尾					
^$ 匹配空白行。空格、0不算					
\\< 匹配字符在词首					
\\> 匹配字符在词尾					
\\<string\\> 精准匹配string					
\\(xy\\) xy表示一个分组					
\\1 模式从左侧起,第一个左括号以及与之匹配的右括号之间的模式所匹配的字符							 | 
除了以上的常用的元字符,还有一些特殊的元字符:
| 
 					1				
 					2				
 					3				
 					4				
 					5				
 					6				
 					7				
 					8				
 					9			  | 
[:alpha:] 所有大小写字母					
[:upper:] 所有大写字母 					
[:lower:] 所有小写字母					
[:alnum:] 所有字母及数字					
[:punct:] 所有标点符号					
[:blank:] 空白键和TAB键					
[:space:] 任意空白的字元,空格、tab、CR等					
[:digit:] 任意数字,0-9					
[:print:] 任何可以被打印出来的字符							 | 
grep
| 
 					1				
 					2				
 					3				
 					4				
 					5				
 					6				
 					7				
 					8				
 					9				
 					10				
 					11				
 					12				
 					13				
 					14				
 					15				
 					16				
 					17				
 					18				
 					19				
 					20				
 					21				
 					22				
 					23			  | 
grep, egrep, fgrep - print lines matching a pattern					
【SYNOPSIS】					
grep [OPTIONS] PATTERN [FILE...]					
grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]					
【OPTIONS】					
--color=auto 对匹配到的内容进行高亮显示处理					
-i,--ignore-case					
Ignore case distinctions in both the PATTERN and the input					
files. (-i is specified by POSIX.)忽略字符大小写匹配					
-v,--invert-match					
Invert the sense of matching, to select non-matching lines.					
(-v is specified by POSIX.)显示没有匹配到的行					
-o,--only-matching					
Print only the matched (non-empty) parts of a matching line,					
with each such part on a separate output line.只显示匹配到的部分					
-q,--quiet,--silent静默模式,不列举任何内容					
-w,--word-regexp 单词完整匹配所在的行					
-d, --directories=ACTION how to handle directories; ACTION is 'read', 'recurse', or 'skip',目录表示方式:只读、递归、跳过					
-r,-r, --recursive like --directories=recurse					
-c,--count print only a count of matching lines per FILE匹配到的文件有多少行					
-B,--before-context=NUM print NUM lines of leading context列出匹配到的前NUM行					
-A,--after-context=NUM print NUM lines of trailing context列出匹配到的后NUM行					
-C,--context=NUM print NUM lines of output context列出匹配到的前后几行							 | 
cut
| 
 					1				
 					2				
 					3				
 					4				
 					5				
 					6				
 					7				
 					8				
 					9				
 					10				
 					11				
 					12				
 					13				
 					14				
 					15				
 					16				
 					17				
 					18				
 					19				
 					20				
 					21				
 					22				
 					23				
 					24				
 					25			  | 
Print selected parts of lines from each FILE to standard output列举每行被选中的部分到标准输出,也就是提取行中的某个字段					
【SYNOPSIS】					
cut OPTION... [FILE]...					
【OPTION】					
-b,--bytes=LIST select only these bytes按字节分隔					
-c,--characters=LIST select only these characters按字符分隔					
-d,--delimiter=DELIM use DELIM instead of TAB for field delimiter 用TAB替换指定的分隔符来分区域					
-f,--field=LIST 分区域后,根据区域位数来列出数据					
-n with -b: don't split multibyte characters不分隔多字节字符					
【FOR EXAMPLE】					
[root@localhost ~]# cat /etc/passwd|cut -d: -f1					
root					
bin					
daemon					
adm					
lp					
提取/etc/passwd文件的第一个字段内容,也就是用户名					
[root@localhost ~]# cat /tmp/ah2.txt |cut -nb 1,2,3					
平凡的					
[root@localhost ~]# cat /tmp/ah2.txt |cut -nb 1不分割字节					
平					
[root@localhost ~]# cat /tmp/ah2.txt |cut -b 1汉字属于多字节字符					
[root@localhost ~]# cat /tmp/ah2.txt |cut -c 1					
平							 | 
sort
| 
 					1				
 					2				
 					3				
 					4				
 					5				
 					6				
 					7				
 					8				
 					9				
 					10				
 					11				
 					12				
 					13				
 					14				
 					15				
 					16				
 					17				
 					18				
 					19				
 					20				
 					21				
 					22				
 					23				
 					24				
 					25				
 					26				
 					27				
 					28				
 					29				
 					30				
 					31				
 					32				
 					33			  | 
sort lines of text files文本文件的行排序					
【SYNOPSIS】					
sort [OPTION]... [FILE]...					
sort [OPTION]... --files0-from=F					
【OPTION】					
-b,--ignore-leading-blanks					
-f,--ignore-case					
fold lower case to upper case characters 忽略大小写					
-i,--ignore-nonprinting					
consider only printable characters忽略空白					
-M,--month-sort					
按照三位数月份排序					
-h,--human-numeric-sort compare human readable numbers					
使用人类可读的单位排序					
-g,--genaral-numeric-sort					
使用通用数值排序,支持科学计数					
-t,--field-separator=SEP					
use SEP instead of non-blank to blank transition					
指定分列的分隔符					
-k,--key=KEYDEF					
sort via a key;KEYDEF gives location and type					
指定列排序,					
-n,--numeric-sort					
compare according to string numerical value					
根据字符串中的数值排序					
-r,--reverse					
反序排列					
-c,--check check from srot input;don't sort					
排序检查,但不排序					
-o,--output=FILE write result to FILE instead of standard output					
将结果保存至文件中而不输出					
-u,--unique with -c,check for strict ordering; without -c,output only the first of an equal run					
与-c组合,执行严格的顺序检查;不与-c组合,仅输出第一个结果,剔除相邻重复的行,重复且相邻的无法剔除。							 | 
uniq
| 
 					1				
 					2				
 					3				
 					4				
 					5				
 					6				
 					7				
 					8				
 					9				
 					10				
 					11				
 					12				
 					13				
 					14				
 					15				
 					16			  | 
report or omit repeated lines记录或剔除重复行					
【SYNOPSIS】					
uniq [OPTION]... [INPUT [OUTPUT]]					
【OPTION】					
-c,--count prefix lines by the number of occurrences行计数(重复行列一行,前面有重复次数)					
-d,--repeated only print duplicate lines, one for each group只打印有重复的行					
-D,--all-repeated[=METHOD]					
-f,--skip-fields=N					
跳过前N个字段					
-s,--skip-chars=N					
跳过前几个字符					
-i,--ignore-case 忽略大小写					
-u,--unique only print unique lines仅打印不重复的行					
-z,--zero-terminated end lines with 0 bytes,not newline					
-w,--check-chars=N compare no more than N characters in lines					
第N个字符之后不做匹配							 | 
练习
1、列出当前系统上所有已经登录的用户的用户名,同一用户登录多次,只显示一次即可
	who |cut -d' ' -f 1|uniq
2、取出最后登录到当前系统的用户的相关信息
	cat /etc/passwd|grep "^`last -1|cut -d' ' -f1|head -1`"
3、去除当前系统上被用户当作其默认的shell的最多的那个shell
	cat /etc/passwd|cut -d: -f7|sort -u|sort -rn|head -1
4、将/etc/passwd中的第三个字段的数值最大的后10个用户的信息全部改为大写后保存至/tmp/maxusers.txt中
	cat /etc/passwd|sort -t':' -k3 -n|tail|tr [a-z] [A-Z] 2&>1 /tmp/maxusers.txt
5、取出当前主机的IP地址,
	ifconfig eno16777736| grep "\\<inet\\>"|cut -d' ' -f 10
6、列出/etc/下所有以.conf结尾的文件的文件名,并将其名字转换成大写后保存至/tmp/etc.conf文件中
	ls /etc|grep -o ".*\\.conf$"|tr [a-z] [A-Z] >> /tmp/etc.conf
7、显示/var目录下一级子目录或者文件的总个数
	linux里没有直接的命令来展示一个目录下的文件个数,可以通过管道将两个命令组合
	查看目录下所有文件个数命令如下:
	ls |wc -l
	1、ls 是查看文件夹内所有文件的命令
	2、wc -l 是统计文件行数的命令
	3、以上两个命令叠加,相当于统计文件夹下文件总数
| 
 					1				
 					2				
 					3				
 					4				
 					5			  | 
#!/bin/sh					
find /tmp/homework -maxdepth 1 -type d | while read dir; do					
count=$(find "$dir" -type f | wc -l)					
echo "$dir : $count"					
done							 | 
8、取出/etc/group文件中的第三个字段数值最小的10个组的名字
	cat /etc/group|sort -t':' -k 3 -n|head |cut -d':' -f1
9、将/etc/fstab和/etc/issue文件的内容合并为同一个内容后保存至/tmp/etc.test
	cat /etc/fstab /etc/issue >>/tmp/etc.test
Linux为了提高其安全性,通过创建用户及用户组并赋相应的权限来限制各用户访问不同的文件。下面我们来学习下用户及用户组的相关管理命令先来看看几个文件:
/etc/passwd
| 
 					1				
 					2				
 					3				
 					4			  | 
[root@localhost ~]# cat /etc/passwd|head -3					
root:x:0:0:root:/root:/bin/bash					
bin:x:1:1:bin:/bin:/sbin/nologin					
daemon:x:2:2:daemon:/sbin:/sbin/nologin							 | 
其文件内容格式是由‘:'分隔开的字符串,其内容包括如下: USERNAME:X:UID:GID:DESCRIPTION:HOME:SHELL
/etc/shadow
| 
 					1				
 					2				
 					3				
 					4			  | 
[root@localhost ~]# cat /etc/shadow|head -3					
root:$6$1RSlswAIVbmtwWM5$WLZxHXzkL7.PvHb2ghYqbGvj3Cz4AB5sGRr33TwCX1cwSqV.syv0q1eqcF3NGUJeNNspAOt5C1rWfdsgBllB1.::0:99999:7:::					
bin:*:16659:0:99999:7:::					
daemon:*:16659:0:99999:7:::							 | 
其内容格式类似于/etc/passwd格式,只是内容不同:
| 
 					1			  | 
USERNAME:ENCRYPTED PASSWD:DATE OF LAST CHANGE:MINIMUM PASSWD AGE: MAXIMUM PASSWD AGE:PASSWD WARNING:PASSWORD INACTIVITY:EXPIRATION							 | 
这个简单的解释下:
| 
 					1				
 					2				
 					3				
 					4				
 					5				
 					6				
 					7				
 					8			  | 
USERNAME:也就是用户名					
ENCRYPTED PASSWD:加密的密码					
DATE OF LAST CHANGE:最后修改密码的日期(天数,是以1970-1-1起算的天数)					
MINIMUM PASSWD:最短可修改密码日期(天数,相对第三栏的最后修改日期)					
MAXIMUM PASSWD:最长可修改密码日期					
PASSWD WARNING:密码过期前的警告天数(相对第四栏的日期之前的天数)					
PASSWD INACTIVITY:密码的闲置日期(密码过期之后还有一定的天数可以使用)					
EXPIRATION:备注							 | 
UID
人与计算机交互,人可识别字符和数字等,但是计算机只能识别0、1这样的二进制代码,所以,UID就是分配给USERNAME相对应的计算机可识别的ID号码;UID可分为以下几类:
| 
 					1				
 					2				
 					3			  | 
0:系统管理员,root的UID					
1-999:系统用户,这些用户是系统后台的服务类程序的用户所用;用户也可以指定用户为系统用户					
1000-2^32-1:普通用户							 | 
GID
在程序设计过程中,我们会将一部分用户之间的资料共享,而不愿让资料为外人看到,所以就有了用户组的概念,用户之间通过GID来确定用户组的范围
下面我们来介绍下设置以上及相关信息的命令:
useradd
| 
 					1				
 					2				
 					3				
 					4				
 					5				
 					6				
 					7				
 					8				
 					9				
 					10				
 					11				
 					12				
 					13				
 					14				
 					15				
 					16				
 					17				
 					18				
 					19			  | 
create a new user or update default new user information					
【SYNOPSIS】					
useradd [options] LOGIN					
useradd -D					
useradd -D [options]					
【OPTIONS】					
-D useradd命令的部分默认参数,可修改					
-c,--comment 添加用户的描述信息,finger USERNAME查看更直观					
-d,--home-dir 指定用户的家目录,必须为绝对路径					
-e,--expiredate 用户账号失效日期,格式默认:YYYY-MM-DD					
-f,--inactive 指定用户密码是否失效(-1:永不失效,过期会强制修改密码;0:立刻失效)					
-g,--gid 用户主属组,该属组必须可用					
-G,--groups 用户附加属组,该属组可设置多个					
-M 强制不建立家目录					
-m 强制建立家目录					
-r,create system user 创建系统用户					
-o,--non-unique 允许创建一个已存在的UID的用户(重复的UID)					
-s,--shell 指定该用户的shell环境					
-u,--uid 指定用户的uid值							 | 
passwd
| 
 					1				
 					2				
 					3				
 					4				
 					5				
 					6				
 					7				
 					8				
 					9				
 					10				
 					11				
 					12				
 					13				
 					14				
 					15			  | 
update user's authentication tokens 					
【SYNOPSIS】					
passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S]					
[--stdin] [username]					
【OPTIONS】					
--stdin 结合管道符将标准输入直接赋值给用户密码					
-l,--lock 锁定指定用户					
-u,--unlock 解锁指定用户					
-d,--delete 快速删除用户密码					
-e,--expire 使用户密码失效					
-n,--minimum 密码的最短修改天数					
-x,--maximum 密码的最长修改天数					
-w,--waring 密码过期前的通知天数					
-i,--inactive 密码过期后的闲置天数					
-S,--status 用户的密码状态							 | 
groupadd
| 
 					1				
 					2				
 					3				
 					4				
 					5				
 					6				
 					7				
 					8				
 					9			  | 
create a new group					
【SYNOPSIS】					
groupadd [options] group					
【OPTION】					
-g,--gid 创建一个指定gid的group					
-K,--key 修改/etc/login.defs的值,具体可参照此文件的内容					
-o,--non-unique 创建一个已有的gid的组					
-p,--password 创建组密码,现在基本用不到					
-r,--system-group 创建一个系统组							 | 
newgrp
| 
 					1				
 					2				
 					3				
 					4			  | 
log in to a new group					
【SYNOPSIS】					
newgrp [-] [group]					
这个命令只是在用户的主属组更换的时候有用,例如USERNAME有主属组group1,附属组group2,group3;现在切换用户的主属组为group3则使用此命令							 | 
| 
 					1				
 					2				
 					3				
 					4				
 					5				
 					6				
 					7				
 					8				
 					9				
 					10				
 					11				
 					12				
 					13				
 					14				
 					15				
 					16				
 					17				
 					18				
 					19				
 					20				
 					21				
 					22				
 					23				
 					24				
 					25				
 					26				
 					27				
 					28				
 					29				
 					30				
 					31				
 					32				
 					33				
 					34				
 					35				
 					36				
 					37				
 					38				
 					39				
 					40				
 					41				
 					42				
 					43				
 					44				
 					45				
 					46				
 					47				
 					48				
 					49				
 					50				
 					51				
 					52				
 					53				
 					54				
 					55				
 					56				
 					57				
 					58				
 					59				
 					60				
 					61				
 					62				
 					63				
 					64				
 					65				
 					66				
 					67				
 					68				
 					69				
 					70				
 					71				
 					72				
 					73				
 					74				
 					75				
 					76			  | 
创建组distro,其GID为2016;					
[root@localhost ~]# groupadd -g 2016 distro					
[root@localhost ~]# tail -1 /etc/group					
distro:x:2016:					
创建用户mandriva,其ID为1005;基本组位distro;					
[root@localhost ~]# useradd -g distro -u 1005 mandriva					
[root@localhost ~]# tail -1 /etc/passwd					
mandriva:x:1005:2016::/home/mandriva:/bin/bash					
创建用户mageia,其ID位1100;家目录为/home/linux;					
[root@localhost ~]# useradd -u 1100 -d /home/linux mageia					
[root@localhost ~]# tail -1 /etc/passwd					
mageia:x:1100:1100::/home/linux:/bin/bash					
给用户mageia添加密码,密码为mageedu;					
[root@localhost ~]# passwd mageia					
Changing password for user mageia.					
New password: 					
Retype new password: 					
passwd: all authentication tokens updated successfully.					
删除用户mandriva但保留其家目录;					
[root@localhost ~]# tail -3 /etc/passwd					
mariadb:x:1000:1000::/home/mariadb:/sbin/nologin					
hadoop:x:1001:1001::/home/hadoop:/bin/bash					
mageia:x:1100:1100::/home/linux:/bin/bash					
[root@localhost ~]# ls /home/					
hadoop linux mandriva					
创建用户slackware,其ID为2002,基本组为distro,附属组为peguin;					
[root@localhost ~]# groupadd peguin					
[root@localhost ~]# useradd -u 2002 -g distro -Gpeguin slackware					
[root@localhost ~]# tail -2 /etc/passwd					
mageia:x:1100:1100::/home/linux:/bin/bash					
slackware:x:2002:2016::/home/slackware:/bin/bash					
[root@localhost ~]# tail -2 /etc/group					
mageia:x:1100:					
peguin:x:2017:slackware					
修改slackware的默认shell为/bin/tcsh;					
[root@localhost ~]# usermod -s /bin/tcsh slackware					
[root@localhost ~]# tail -2 /etc/passwd					
mageia:x:1100:1100::/home/linux:/bin/bash					
slackware:x:2002:2016::/home/slackware:/bin/tcsh 					
为用户slackware新增附属组admins;					
[root@localhost ~]# usermod -aG admins slackware					
[root@localhost ~]# tail -4 /etc/group					
distro:x:2016:					
mageia:x:1100:					
peguin:x:2017:slackware					
admins:x:2018:slackware					
为slackware添加密码,且要求密码最短使用期限为3天,最长为180天,警告为3天;					
[root@localhost ~]#passwd -n 3 -x 180 -w 3 slackware					
[root@localhost ~]# tail -1 /etc/shadow					
slackware:!!:16658:3:180:3:::					
[root@localhost ~]#echo 'Slackware'|passwd --stdin slackware					
添加用户openstack,其ID号为3003,基本组为clouds,附加组为peguin和nova;					
[root@localhost ~]# groupadd clouds					
[root@localhost ~]# groupadd nova					
[root@localhost ~]# useradd openstack -u 3003 -g clouds -G peguin,nova 					
[root@localhost ~]# tail -1 /etc/passwd					
openstack:x:3003:2019::/home/openstack:/bin/bash					
添加系统用户mysql,要求其shell为/sbin/nologin;					
[root@localhost ~]# useradd -r mysql -s /sbin/nologin					
[root@localhost ~]# tail -1 /etc/passwd					
mysql:x:996:994::/home/mysql:/sbin/nologin					
使用echo命令,非交互为openstack添加密码					
[root@localhost ~]# echo 'Openstack'|passwd --stdin openstack					
Changing password for user openstack.					
passwd: all authentication tokens updated successfully.							 | 
相关文章
- 64M VPS建站:能否支持高流量网站运行? 2025-06-10
 - 64M VPS建站:怎样选择合适的域名和SSL证书? 2025-06-10
 - 64M VPS建站:怎样优化以提高网站加载速度? 2025-06-10
 - 64M VPS建站:是否适合初学者操作和管理? 2025-06-10
 - ASP.NET自助建站系统中的用户注册和登录功能定制方法 2025-06-10
 
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
 - 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
 - 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
 - 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
 - 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
 
快网idc优惠网
QQ交流群
- 
            2025-05-27 27
 - 
            2025-05-25 52
 - 
            2025-05-25 73
 - 
            
Windows 8系统怎么升级成Windows 11系统,Windows 8升级Windows 11系统操作步骤
2025-05-27 101 - 
            2025-06-04 59
 
        
    		
            	
        
        
        