part2
正则匹配
练习1:
显示/var目录下所有以l开头,以一个小写字母结尾,且中间出现一位任意字符繁荣文件或目录;
[root@localhost ~]# ls -d /var/l?[[:lower:]]
/var/lib /var/log
练习2:
显示/etc目录下,以非数字开头,且以任意一位数字结尾的文件或目录;
[root@localhost ~]# ls -d /etc/[^0-9]*[0-9]
/etc/dbus-1 /etc/iproute2 /etc/pkcs11 /etc/polkit-1 /etc/sasl2 /etc/X11
练习3:显示/etc目录下,以字母开头,后面跟一个非字母及其它任意长度任意字符的文件或目录;
[root@localhost ~]# ls -d /etc/[a-z][^a-z]*
/etc/e2fsck.conf /etc/X11
练习4:复制/etc目录下,所有以m开头,以非数字结尾的文件或目录至/tmp/magedu.com目录
[root@localhost ~]# cp -r /etc/m*[^0-9] /tmp/magedu.com
[root@localhost ~]# ls /tmp/magedu.com/
machine-id makedumpfile.conf.sample mke2fs.conf modules-load.d mtab my.cnf.d
magic man_db.conf modprobe.d motd my.cnf
练习5:复制/usr/share/man目录下,所有以man开头,后跟一个数字结尾的文件或目录至/tmp/man/目录下;
[root@localhost ~]# cp -r /usr/share/man/man[0-9] /tmp/man
[root@localhost ~]# ls /tmp/man
man1 man2 man3 man4 man5 man6 man7 man8 man9
练习6:复制/etc目录下,所有以.conf结尾,且以m,n,r,p开头的文件或目录至/tmp/conf.d目录下;
[root@localhost ~]# cp -r /etc/[mnrp]*.conf /tmp/conf.d/
[root@localhost ~]# ls /tmp/conf.d/
man_db.conf mke2fs.conf nsswitch.conf resolv.conf rsyslog.conf
grep练习
练习1:显示/etc/passwd文件中不以/bin/bash结尾的行;
[root@localhost ~]# grep -v "/bin/bash$" /etc/passwd
练习2:找出/etc/passwd文件中的两位数或三位数;
[root@localhost ~]# grep "\<[0-9]\{2,3\}\>" /etc/passwd
练习3:找出/etc/rc.d/rc.sysinit或/etc/grub2.cfg文件中,以至少一个空白字符开头,且后面非空白字符的行;
[root@localhost ~]# grep "^[[:space:]]\+[^[:space:]]" /etc/grub2.cfg
练习4:找出“ps -ef”命令的结果中以root开始的行;
[root@localhost ~]# ps -ef |grep "^root"
find练习
练习1:查找/var目录下属主为root,且属组为mail的所有文件或目录;
[root@localhost ~]# find /var -user root -a -group mail -ls
50351361 0 drwxrwxr-x 2 root mail 195 8月 6 11:16 /var/spool/mail
50651404 8 -rw------- 1 root mail 6943 7月 30 19:12 /var/spool/mail/root
练习2:查找/usr目录下不属于root,bin或hadoop的所有文件或目录;用两个方法;
[root@localhost ~]# find /usr -not -user root -a -not -user bin -ls
[root@localhost ~]# find /usr -not \( -user root -o -user bin \) -ls
练习3:查找/etc目录下最近一周内其内容修改过,且属主不是root用户也不是hadoop用户的文件或目录
[root@localhost ~]# find /etc -mtime -7 -a -not \( -user root -o -user hadoop \) -ls
练习4:查找当前系统上没有属主或属组,且最近一周内曾被访问过的文件或目录;
[root@localhost ~]# find / \( -nouser -o -nogroup \) -atime -7 -ls
练习5:查找/etc目录下大于1M且类型为普通文件的所有文件;
[root@localhost ~]# find /etc -size +1M -type f -exec ls -lh {} \;
练习6:查找/etc目录下所有用户都没有写权限的文件;
[root@localhost ~]# find /etc -not -perm /222 -type f -ls
练习7:查找/etc目录下至少有一类用户没有执行权限的文件;
[root@localhost ~]# find /etc -not -perm -111 -type f -ls
练习8:查找/etc/init.d目录下,所有用户都有执行权限,且其它用户有写权限的所有文件;
[root@localhost ~]# find /etc -perm -113 -type f -ls
part3
练习1:创建用户gentoo,UID为4001,基本组为gentoo,附加组为distro(GID为5000)和peguin(GID为5001);
[root@localhost ~]# groupadd -g 5000 distro
[root@localhost ~]# groupadd -g 5001 peguin
[root@localhost ~]# useradd gentoo -u 4001 -G distro,peguin
练习2:创建用户fedora,其注释信息为“Fedora Core”,默认shell为/bin/tcsh;
[root@localhost ~]# useradd fedora -c "Fedora Core" -s /bin/tcsh
练习3:修改gentoo用户的家目录为/var/tmp/gentoo;要求其源文件仍能被用户访问;
[root@localhost ~]# usermod gentoo -md /var/tmp/gentoo
练习4:为gentoo新增附加组netadmin;
[root@localhost ~]# usermod gentoo -aG netadmin
用户管理命令练习
增加两个用户并设置好密码(写2行):John、Lucy
[root@localhost ~]# useradd John ; echo "123456"|passwd --stdin John
useradd:用户“John”已存在
更改用户 John 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# useradd Lucy ; echo "123456"|passwd --stdin Lucy
更改用户 Lucy 的密码 。
passwd:所有的身份验证令牌已经成功更新。
查看各用户的基本信息(相关文件在/etc中)
[root@localhost ~]# cat /etc/passwd
查看各用户的密码信息
[root@localhost ~]# cat /etc/shadow
查找用户summer并显示其相关信息
[root@localhost ~]# grep "summer" /etc/passwd
将当前用户切换到John(进入其主目录)
[root@localhost ~]# su - John
显示当前登陆用户名
[John@localhost ~]$ whoami
John
将John的登陆密码改为:mima1234
[root@localhost ~]# echo "mima1234"|passwd --stdin John
更改用户 John 的密码 。
passwd:所有的身份验证令牌已经成功更新。
将John的账户有效期设为2017年12月31号
[root@localhost ~]# chage -E 17530 John
将John加入summer组中
[root@localhost ~]# usermod -aG test John
将用户名John改为Jack
[root@localhost ~]# usermod -l Jack John
将Jack的用户全名改为:Jack.willianmus
[root@localhost ~]# usermod -c "Jack.willianmus" Jack
用户切换到Lucy,删除Lucy的密码
[root@localhost ~]# vim /etc/sudoers.d/test
Lucy ALL=(ALL) /usr/bin/passwd
[root@localhost ~]# su - Lucy
[Lucy@localhost ~]$ sudo passwd -d Lucy
删除用户Lucy
[root@localhost ~]# userdel Lucy
组管理命令练习
增加一个student组
[root@localhost ~]# groupadd student
查看所有组的基本信息
[root@localhost ~]# vim /etc/group
查看summer组中包含哪些用户名
[root@localhost ~]# cat /etc/group |grep "^summer"
将student组名改为teacher
[root@localhost ~]# groupmod -n teacher student
删除teacher组
[root@localhost ~]# groupdel teacher
练习:完成以下任务
1、新建系统组mariadb,新建系统用户mariadb,属于mariadb组,要求其没有家目录,且shell为/sbin/nologin;尝试root切换至用户,查看其命令提示符;
[root@localhost ~]# groupadd mariadb;useradd -g mariadb -M -s /sbin/nologin mariadb
[root@localhost ~]# su - mariadb
su: 警告:无法更改到 /home/mariadb 目录: 没有那个文件或目录
This account is currently not available.
2、新建GID为5000的组mageedu,新建用户gentoo,要求其家目录为/users/gentoo,密码同用户名;
[root@localhost ~]# groupadd -g 5000 mageedu
[root@localhost ~]# useradd -d /users/gentoo gentoo;echo "gentoo"|passwd --stdin gentoo
useradd:用户“gentoo”已存在
更改用户 gentoo 的密码 。
passwd:所有的身份验证令牌已经成功更新。
3、新建用户fedora,其家目录为/users/fedora,密码同用户名;
[root@localhost ~]# useradd -d /users/fedora fedora;echo "fedora"|passwd --stdin fedora
4、新建用户www,其家目录为/users/www;删除www用户,但保留其家目录;
[root@localhost ~]# useradd -d /users/www www
[root@localhost ~]# userdel www
5、为用户gentoo和fedora新增附加组test;
[root@localhost ~]# usermod -aG test gentoo;usermod -aG test fedora
6、复制目录/var/log至/tmp/目录,修改/tmp/log及其内部所有文件的属组为mageedu,并让属组对目录本身拥有写权限;
[root@localhost ~]# cp -R /var/log /tmp
[root@localhost ~]# chown -R :test /tmp/log;chmod -R g=w /tmp/log
[root@localhost ~]# ll /tmp/log
总用量 5244
drwx-w-r-x 2 root test 176 12月 31 02:45 anaconda
drwx-w---- 2 root test 23 12月 31 02:45 audit
-rw--w---- 1 root test 0 12月 31 02:45 boot.log
-rw--w---- 1 root test 8552 12月 31 02:45 boot.log-20200808
-rw--w---- 1 root test 20829 12月 31 02:45 boot.log-20200809
-rw--w---- 1 root test 10793 12月 31 02:45 boot.log-20200812
-rw--w---- 1 root test 10848 12月 31 02:45 boot.log-20200813
-rw--w---- 1 root test 10346 12月 31 02:45 boot.log-20200815
-rw--w---- 1 root test 10507 12月 31 02:45 boot.log-20200819
-rw--w---- 1 root test 10044 12月 31 02:45 boot.log-20200820
-rw--w---- 1 root test 1152 12月 31 02:45 btmp
part4
练习作业
写出下列要求执行的命令,如果是在末行模式下执行,需写出“:”号,注意大小写。
1、向后搜索字符串stream /stream
2、向前搜索字符串uplook ?uplook
3、复制10行然后粘贴 10yy p
4、将光标移到第55行 55G
5、将光标移到最末行 G
6、删除共20行 20dd
7、恢复前一步的操作 u
8、将光标移到行首 0或着^
9、将光标移到行尾 $
10、将从第10行到第50行的内容写入/back/file1 :10,50w /back/file1
11、将从当前行开始,总共20行的内容存入/back/file2 :.,+19w /back/file2
12、读取/etc/conf/hello.txt文件的内容插入当前行后面
:r /etc/conf/hello.txt
13、替换第20行到第80行中所有httpd为bind
:20,80 s/http/bind/g
14、替换文中全部的root为admin :% s/root/admin/g
15、在每行的行首插入字符串new :% s/^/new/g
16、在第10行到第50行的行尾插入字符串new
:10,50 s/$/new/g
17、让vi显示每一行的行号 set nu
zip例子:
1、压缩install.log文件
[root@localhost ~]# zip install.log.zip install.log
adding: install.log (deflated 47%)
2、压缩率分别为3和9
[root@localhost ~]# zip -3 file1.zip file1
adding: file1 (deflated 43%)
[root@localhost ~]# zip -9 file.zip file1
adding: file1 (deflated 47%)
3、将当前目录下所有文件和文件夹全部压缩成test.zip文件,-r表示递归压缩子目录下所有文件
[root@localhost ~]# zip -r test.zip ./*
adding: aa (stored 0%)
adding: anaconda-ks.cfg (deflated 45%)
adding: etc/ (stored 0%)
adding: etc/passwd (deflated 64%)
adding: etc/passwd.zip (stored 0%)
adding: file1 (deflated 47%)
adding: file2 (stored 0%)
adding: file3 (stored 0%)
adding: libevent-2.1.8-stable.tar.gz (deflated 0%)
adding: memcached-1.5.6.tar.gz (deflated 0%)
4、打包目录
5、删除压缩文件test.zip中的file1文件
[root@localhost ~]# zip -d test.zip file1
deleting: file1
6、向压缩文件test.zip中添加file1文件
[root@localhost ~]# zip -m test.zip file1
adding: file1 (deflated 47%)
7、压缩文件时排除某个文件
[root@localhost ~]# zip test3.zip ./* -x file1
adding: aa (stored 0%)
adding: anaconda-ks.cfg (deflated 45%)
adding: etc/ (stored 0%)
adding: file2 (stored 0%)
adding: file3 (stored 0%)
adding: libevent-2.1.8-stable.tar.gz (deflated 0%)
adding: memcached-1.5.6.tar.gz (deflated 0%)
adding: test.zip (stored 0%)
unzip例子
1、将压缩文件test3.zip在指定目录/tmp下解压缩,如果已有相同文件存在,要求unzip命令不覆盖原先的文件
[root@localhost ~]# unzip -n test3.zip -d /tmp/
2、查看压缩文件目录,但不解压
[root@localhost ~]# unzip -v test.zip
3、将压缩文件test3.zip在指定目录/tmp下解压缩,如果已有相同文件存在,要求unzip命令覆盖原先的文件
[root@localhost ~]# unzip -o test3.zip -d /tmp/
gzip例子
1、将etc目录下所有文件压缩成gzip文件
[root@localhost etc]# gzip *
[root@localhost etc]# ls
passwd.gz passwd.zip.gz
2、将上例中所有gzip文件解压并列出详细信息
[root@localhost etc]# gzip -dv *
passwd.gz: 64.0% -- replaced with passwd
passwd.zip.gz: 5.5% -- replaced with passwd.zip
3、详细列出例1中每个压缩文件信息但不解压
[root@localhost etc]# gzip -l *
compressed uncompressed ratio uncompressed_name
497 1311 64.0% passwd
628 634 5.5% passwd.zip
1125 1945 43.7% (totals)
4、递归压缩目录
[root@localhost ~]# gzip -rv etc
gzip: etc/passwd.gz already has .gz suffix -- unchanged
gzip: etc/passwd.zip.gz already has .gz suffix -- unchanged
5、递归解压目录
[root@localhost ~]# gzip -dr etc
rpm例子
1、rpm包安装
[root@localhost Packages]# rpm -ivh xz-5.2.2-1.el7.x86_64.rpm
准备中... ################################# [100%]
软件包 xz-5.2.2-1.el7.x86_64 已经安装
2、rpm包升级
[root@localhost Packages]# rpm -Uvh xz-5.2.2-1.el7.x86_64.rpm
3、包卸载
[root@localhost Packages]# rpm -e zip
4、查询rpm包是否安装
[root@localhost Packages]# rpm -q zip
未安装软件包 zip
[root@localhost Packages]# rpm -q xz
xz-5.2.2-1.el7.x86_64
5、查询详细信息
[root@localhost Packages]# rpm -qi xz
6、查询软件包安装位置
[root@localhost Packages]# rpm -ql xz
7、查询系统文件属于哪个rpm包
[root@localhost Packages]# rpm -qf /usr/bin/xz
xz-5.2.2-1.el7.x86_64
8、查询软件包的依赖性
[root@localhost Packages]# rpm -qR xz
9、校验
[root@localhost Packages]# rpm -V xz