一、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录
[root@centos7 ~]# ls -d /etc/[^[:alpha:]][[:alpha:]]*
/etc/1dafksdfks.txt /etc/1z34aa /etc/1z43e /etc/2z34aa /etc/3h4n6n
[root@centos7 ~]#
二、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
首先在/tmp目录下创建mytest1目录,
非数字结尾的表示方法为([^[:digit:]]或^[0-9]),
cp -R 表示递归复制目录。
[root@centos7 ~]# mkdir /tmp/mytest1/
[root@centos7 ~]# cp -R /etc/p*[^[:digit:]] /tmp/mytest1/
[root@centos7 ~]# ll /tmp/mytest1/
total 68
drwxr-xr-x. 2 root root 4096 Dec 12 22:05 pam.d
-rw-r--r--. 1 root root 68 Dec 12 22:05 papersize
-rw-r--r--. 1 root root 2411 Dec 12 22:05 passwd
-rw-r--r--. 1 root root 2411 Dec 12 22:05 passwd-
-rw-r--r--. 1 root root 1362 Dec 12 22:05 pbm2ppa.conf
drwxr-xr-x. 9 root root 104 Dec 12 22:05 pcp
-rw-r--r--. 1 root root 6460 Dec 12 22:05 pcp.conf
-rw-r--r--. 1 root root 6662 Dec 12 22:05 pcp.env
-rw-r--r--. 1 root root 2872 Dec 12 22:05 pinforc
drwxr-xr-x. 12 root root 151 Dec 12 22:05 pki
drwxr-xr-x. 2 root root 28 Dec 12 22:05 plymouth
drwxr-xr-x. 5 root root 52 Dec 12 22:05 pm
-rw-r--r--. 1 root root 6300 Dec 12 22:05 pnm2ppa.conf
drwxr-xr-x. 2 root root 6 Dec 12 22:05 popt.d
drwxr-xr-x. 2 root root 154 Dec 12 22:05 postfix
drwxr-xr-x. 3 root root 219 Dec 12 22:05 ppp
drwxr-xr-x. 2 root root 105 Dec 12 22:05 prelink.conf.d
-rw-r--r--. 1 root root 233 Dec 12 22:05 printcap
-rw-r--r--. 1 root root 1819 Dec 12 22:05 profile
drwxr-xr-x. 2 root root 4096 Dec 12 22:05 profile.d
-rw-r--r--. 1 root root 6545 Dec 12 22:05 protocols
drwxr-xr-x. 2 root root 79 Dec 12 22:05 pulse
drwxr-xr-x. 2 root root 23 Dec 12 22:05 purple
drwxr-xr-x. 2 root root 35 Dec 12 22:05 python
[root@centos7 ~]#
未加 -R的效果如下:
[root@centos7 ~]# cp /etc/p*[^[:digit:]] /tmp/cwx1/
cp: omitting directory ‘/etc/pam.d’
cp: omitting directory ‘/etc/pcp’
cp: omitting directory ‘/etc/pki’
cp: omitting directory ‘/etc/plymouth’
cp: omitting directory ‘/etc/pm’
cp: omitting directory ‘/etc/popt.d’
cp: omitting directory ‘/etc/postfix’
cp: omitting directory ‘/etc/ppp’
cp: omitting directory ‘/etc/prelink.conf.d’
cp: omitting directory ‘/etc/profile.d’
cp: omitting directory ‘/etc/pulse’
cp: omitting directory ‘/etc/purple’
cp: omitting directory ‘/etc/python’
[root@centos7 ~]# ll /tmp/cwx1/
total 60
-rw-r--r--. 1 root root 68 Dec 12 22:22 papersize
-rw-r--r--. 1 root root 2411 Dec 12 22:22 passwd
-rw-r--r--. 1 root root 2411 Dec 12 22:22 passwd-
-rw-r--r--. 1 root root 1362 Dec 12 22:22 pbm2ppa.conf
-rw-r--r--. 1 root root 6460 Dec 12 22:22 pcp.conf
-rw-r--r--. 1 root root 6662 Dec 12 22:22 pcp.env
-rw-r--r--. 1 root root 2872 Dec 12 22:22 pinforc
-rw-r--r--. 1 root root 6300 Dec 12 22:22 pnm2ppa.conf
-rw-r--r--. 1 root root 233 Dec 12 22:22 printcap
-rw-r--r--. 1 root root 1819 Dec 12 22:22 profile
-rw-r--r--. 1 root root 6545 Dec 12 22:22 protocols
三、 将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中
[root@centos7 ~]# cat /etc/issue | tr "a-z" "A-Z" > /tmp/issue.out
[root@centos7 ~]# cat /tmp/issue.out
\S
KERNEL \R ON AN \M
[root@centos7 ~]# cat /etc/issue | tr "[:lower:]" "[:upper:]" > /tmp/issue.out1
[root@centos7 ~]# cat /tmp/issue.out1
\S
KERNEL \R ON AN \M
[root@centos7 ~]#
转化或删除字符用“ tr ”命令,tr命令的常用格式如下:
tr [OPTION]... SET1 [SET2]
其中参数:
-c, --complement:反选设定字符。用字符集SET1的补集替换此字符集,要求字符是ASCII码
-d, --delete:删除指令字符
-s, --squeeze-repeats:缩减连续重复的字符成指定的单个字符
-t, --truncate-set1:削减 SET1 指定范围,使之与 SET2 设定长度相等
字符范围
指定字符串SET1或字符串SET2的内容时,只能使用单字符或字符串范围或列表。以下是可接受的字符串范围及列表:
[a-z] a-z内的字符组成的字符串。
[A-Z] A-Z内的字符组成的字符串。
[0-9] 数字串。
\octal 一个三位的八进制数,对应有效的ASCII字符。
[On] 表示字符O重复出现指定次数n。因此[O2]匹配OO的字符串。
tr中特定控制字符的不同表达方式
速记符含义八进制方式
\\ 反斜杠
\a Ctrl-G 铃声
\b Ctrl-H 退格符
\f Ctrl-L 走行换页
\n Ctrl-J 新行
\r Ctrl-M 回车
\t Ctrl-I tab键
\v Ctrl-X 水平制表符
CHAR1-CHAR2 :字符范围从 CHAR1 到 CHAR2 的指定,范围的指定以 ASCII 码的次序为基础,只能由小到大,不能由大到小。
[CHAR*] :这是 SET2 专用的设定,功能是重复指定的字符到与 SET1 相同长度为止
[CHAR*REPEAT] :这也是 SET2 专用的设定,功能是重复指定的字符到设定的 REPEAT 次数为止(REPEAT 的数字采 8 进位制计算,以 0 为开始)
[:alnum:]:字母和数字,可以用来替代'a-zA-Z0-9'
[:alpha:]:字母,可以用来替代'a-zA-Z'
[:cntrl:]:控制(非打印)字符
[:digit:]:数字,可以用来替代'0-9'
[:graph:]:图形字符
[:lower:]:小写字母,可以用来替代'a-z'
[:print:]:可打印字符
[:punct:]:标点符号
[:space:]:空白字符
[:upper:]:大写字母,可以用来替代'A-Z'
[:xdigit:]:十六进制字符
(1)将/root/下文件列表,显示成一行,并文件名之间用空格隔开
(2)计算1+2+3+..+99+100的总和
(3)将PATH变量每个目录显示在独立的一行
(4)将文件/etc/centos-release中每个单词(由字母组成)显示在独立的一行,并无空行
四、 请总结描述用户和组管理类命令的使用方法并完成以下练习:
1:Linux用户和组的主要配置文件:
/etc/passwd:用户及其属性信息(名称、UID、主组ID等)
/etc/group:组及其属性信息
/etc/shadow:用户密码及其相关属性
/etc/gshadow:组密码及其相关属性
:2:passwd文件格式:
login name:登录用名(wang)
passwd:密码 (x)
UID:用户身份编号 (1000)
GID:登录默认所在组编号 (1000)
GECOS:用户全名或注释
home directory:用户主目录 (/home/wang)
shell:用户默认使用shell (/bin/bash)
:3:shadow文件格式:
登录用名
用户密码:一般用sha512加密
从1970年1月1日起到密码最近一次被更改的时间
密码再过几天可以被变更(0表示随时可被变更)
密码再过几天必须被变更(99999表示永不过期)
密码过期前几天系统提醒用户(默认为一周)
密码过期几天后帐号会被锁定
从1970年1月1日算起,多少天后帐号失效
4:用户管理命令:
(1):创建用户:useradd [options] LOGIN 默认值设定:/etc/default/useradd
-u UID
-o 配合-u 选项,不检查UID的唯一性
-g GID 指明用户所属基本组,可为组名,也可以GID
-c "COMMENT“ 用户的注释信息
-d HOME_DIR 以指定的路径(不存在)为家目录
-s SHELL 指明用户的默认shell程序,可用列表在/etc/shells文件中
-G GROUP1[,GROUP2,...] 为用户指明附加组,组须事先存在
-N 不创建私用组做主组,使用users组做主组
-r 创建系统用户 CentOS 6: ID<500,CentOS 7: ID<1000
-m 创建家目录,用于系统用户
-M 不创建家目录,用于非系统用户
newusers passwd格式文件 批量创建用户
chpasswd 批量修改用户口令
(2):修改用户属性: usermod [OPTION] login
-u UID: 新UID
-g GID: 新主组
-G GROUP1[,GROUP2,...[,GROUPN]]]:新附加组,原来的附加组将会被
覆盖;若保留原有,则要同时使用-a选项
-s SHELL:新的默认SHELL
-c 'COMMENT':新的注释信息
-d HOME: 新家目录不会自动创建;若要创建新家目录并移动原家数据,
同时使用-m选项
-l login_name: 新的名字
-L: lock指定用户,在/etc/shadow 密码栏的增加 !
-U: unlock指定用户,将 /etc/shadow 密码栏的 ! 拿掉
-e YYYY-MM-DD: 指明用户账号过期日期
(3):删除用户 userdel [OPTION]... login
-r: 删除用户家目录
(4): 查看用户相关ID信息: id [OPTION]... [USER]
-u: 显示UID
-g: 显示GID
-G: 显示用户所属的组的ID
-n: 显示名称,需配合ugG使用
(5)设置密码
passwd [OPTIONS] UserName: 修改指定用户的密码
常用选项:
-d:删除指定用户密码
-l:锁定指定用户
-u:解锁指定用户
-e:强制用户下次登录修改密码
-f:强制操作
-n mindays:指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天开始警告
-i inactivedays:非活动期限
--stdin:从标准输入接收用户密码 示例:echo "PASSWORD" | passwd --stdin USERNAME
(6)chage [OPTION]... LOGIN 修改用户密码策略
常用选项:
-d LAST_DAY
-E --expiredate EXPIRE_DATE
-I --inactive INACTIVE 活跃时间
-m --mindays MIN_DAYS 密码最小使用期限
-M --maxdays MAX_DAYS 密码最大使用期限
-W --warndays WARN_DAYS 密码警告时间
-l 显示密码策略
示例:
chage -d 0 tom 下一次登录强制重设密码
chage -m 0 –M 42 –W 14 –I 7 tom
chage -E 2016-09-10 tom
chfn 指定个人信息
chsh 指定shell
(7)创建组
groupadd [OPTION]... group_name
-g GID 指明GID号;[GID_MIN, GID_MAX]
-r 创建系统组
(8)组属性修改:groupmod
groupmod [OPTION]... group
-n group_name: 新名字
-g GID: 新的GID
(9)组删除:groupdel
groupdel GROUP
(10)gpasswd [OPTION] GROUP 更改组密码
-a user 将user添加至指定组中
-d user 从指定组中移除用户user
-A user1,user2,... 设置有管理权限的用户列表
newgrp命令:临时切换主组
如果用户本不属于此组,则需要组密码
(11)groupmems [options] [action] 更改和查看组成员
options:
-g, --group groupname 更改为指定组 (只有root)
actions:
-a, --add username 指定用户加入组
-d, --delete username 从组中删除用户
-p, --purge 从组中清除所有成员
-l, --list 显示组成员列表
groups [OPTION].[USERNAME]... 查看用户所属组列表
5、创建组distro,其GID为2019;
6、创建用户mandriva,其ID为1005;基本组为distro
7、创建用户mageia,其ID为1100,家目录为/home/linux
8、给用户mageia添加密码,密码为mageedu,并设置用户密码7天后过期
9、删除mandriva,保留其家目录;
10、创建用户slackware,其ID为2002,基本组为distro。附加组为peguin;
11、修改slackware的属性为shell为/bin/tcsh
12、为用户slackware新增附加组admins。