好记性不如烂笔头|多看视频不如多练习

题目练习

时间过得很快,一下子三周过去了。通过这三周的学习。我由一个小白慢慢的了解了linux系统。学会了一些基本的操作与逻辑思维。之前的学习方法不对。总是在第二天复习的时候习惯性的去看视频。后来听了宗华老师的建议 多练习 少看视频。于是知识积累达到了直线上升。以前一些百思不得其解的问题一下子得到了解决。自信心得到了很大的满足。接下来我附带上一位我们班上一位大神的练习题

 

1、将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中
# tr ‘a-z’ ‘A-Z’ < /etc/issue > /tmp/issue.out
# tr ‘[:lower:]’ ‘[:upper:]’ < /etc/issue > /tmp/issue.out
# cat /etc/issue | tr ‘a-z’ ‘A-Z’ > /tmp/issue.out
2、将当前系统登录用户的信息转换为大写后保存至/tmp/who.out文件中
# who | tr ‘a-z’ ‘A-Z’ > /tmp/who.out
3、一个linux用户给root发邮件,要求邮件标题为”help”,邮件正文如下:
Hello, I am 用户名,The system version is here,please help me to check it ,thanks!
操作系统版本信息
# mail -s “help” root << EOF
Hello, I am $USER, The system version is here,please help me to check it ,thanks!
OS version: lsb_release -a
EOF
4、将/root/下文件列表,显示成一行,并文件名之间用空格隔开
# ls /etc | tr ‘\n’ ‘ ‘ |tr -s ‘ ‘
5、计算1+2+3+..+99+100的总和
# echo {1..100} | tr ‘ ‘ ‘+’ | bc
# seq -s ‘+’ 100 | bc
6、删除Windows文本文件中的‘^M’字符
# tr -d ‘\15’ win.txt
7、处理字符串“xt.,l 1 jr#!$mn 2 c*/fe 3 uz 4”,只保留其中的数字和空格
# echo ‘xt.,l 1 jr#!$mn 2 c*/fe 3 uz 4’ | tr -dc ‘[:digit:][:blank:]’
# echo ‘xt.,l 1 jr#!$mn 2 c*/fe 3 uz 4’ | tr -dc ‘0-9 ‘
8、将PATH变量每个目录显示在独立的一行
# echo $PATH |tr ‘:’ ‘\n’
9、将指定文件中0-9分别替代成a-j
# tr ‘0-9’ ‘a-j’ < fil1.txt
10、将文件/etc/centos-release中每个单词(由字母组成)显示在独立的一行,并无空行
# cat /etc/centos-release |tr -d ‘[:digit:][:punct:]’ |tr -s ‘ ‘ ‘\n’
# cat /etc/centos-release |tr -c ‘[:alpha:]’ ‘ ‘ |tr -s ‘ ‘ ‘\n’ (tr -c ‘[:alpha:]’ ‘ ‘ 保留字母其余的符号全部替换成空格)
# cat /etc/centos-release |tr -cs ‘[:alpha:]’ ‘\n’ (tr -cs ‘[:alpha:]’ ‘\n’ 压缩空格并将除字母以外的所有的字符全部替换成回车)
11、创建用户gentoo,附加组为bin和root,默认shell为/bin/csh,注释信息为”Gentoo Distribution”
# useradd -G bin,root -s /bin/csh -c “Gentoo Distribution” gentoo
12、创建下面的用户、组和组成员关系
名字为webs 的组
# groupadd webs
用户nginx 使用webs 作为附属组
# useradd -G webs nginx
用户varnish,也使用webs 作为附属组
# useradd -G webs varnish
用户mysql,不可交互登录系统,且不是webs 的成员,nginx,varnish,mysql密码都是magedu
# useradd -r mysql
# echo “magedu” | passwd –stdin nginx
# echo “magedu” | passwd –stdin varnish
# echo “magedu” | passwd –stdin mysql
13、显示当前时间,格式:2016-06-18 10:20:30
# date “+%F %T”
14、显示前天是星期几
# date -d ‘-2 day ‘ +%A
15、设置当前日期为2019-08-07 06:05:10
# date 080706052019.10 (格式: 月日时分年.秒)
16、在本机字符终端登录时,除显示原有信息外,再显示当前登录终端号,主机名和当前时间
# who am i (whoami只显示登录用户)
17、今天18:30自动关机,并提示用户
# shutdown -h 18:30 “The system will be shutdown at 18:30”
18、显示/var目录下所有以l开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录
# ls -d /var/l*[[:digit:]]*[[:lower:]]
19、显示/etc目录下以任意一位数字开头,且以非数字结尾的文件或目录
# ls -d /etc/[0-9]*[^0-9]
# ls -d /etc/[[:digit:]]*[^[:digit:]]
20、显示/etc/目录下以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录
# ls -d /etc/[^[:alpha:]][[:alpha:]]*
21、显示/etc/目录下所有以rc开头,并后面是0-6之间的数字,其它为任意字符的文件或目录
# ls -d /etc/rc[0-6]*
22、显示/etc目录下,所有以.d结尾的文件或目录
# ls -d /etc/*.d
23、显示/etc目录下,所有.conf结尾,且以m,n,r,p开头的文件或目录
# ls -d /etc/[mnrp]*.conf
24、只显示/root下的隐藏文件和目录
# ls -d .*
25、只显示/etc下的非隐藏目录
# ls -d /etc/*/
26、定义别名命令baketc,每天将/etc/目录下所有文件,备份到/app独立的子目录下,并要求子目录格式为backupYYYY-mm-dd,备份过程可见
# alias baketc=’cp -av /etc/ /app/backupdate +%F
27、创建/app/rootdir目录,并复制/root下所有文件到该目录内,要求保留原有权限
# mkdir -p /app/rootdir
# cp -a /root/ /app/rootdir
28.如何创建/testdir/dir1/x, /testdir/dir1/y, /testdir/dir1/x/a, /testdir/dir1/x/b, /testdir/dir1/y/a, /testdir/dir1/y/b
# mkdir -pv /test/dir1/{x,y}/{a,b}
29.如何创建/testdir/dir2/x,/testdir/dir2/y,/testdir/dir2/x/a,/testdir/dir2/x/b
# mkdir -pv /testdir/dir2/{x/{a,b},y}
30.如何创建/testdir/dir3, /testdir/dir4, /testdir/dir5, /testdir/dir5/dir6, /testdir/dir5/dir7
# mkdir -pv /testdir/dir{3,4,5/dir{6,7}}
31、显示/proc/meminfo文件中以大小s开头的行(要求:使用两种方法)
# cat /pro/meminfo |grep ‘^[sS]’
# cat /proc/meminfo |tr ‘a-z’ ‘A-Z’ | grep ‘^S’
32、显示/etc/passwd文件中不以/bin/bash结尾的行
# cat /etc/passwd |grep -v ‘/bin/bash$’
33、显示用户rpc默认的shell程序
# getent passwd rpc | cut -d: -f7
34、找出/etc/passwd中的两位或三位数
# cat /etc/passwd |grep ‘\b[0-9]\{2,3\}\b’
35、显示CentOS7的/etc/grub2.cfg文件中,至少以一个空白字符开头的且后面有非空白字符的行
# cat /etc/grub2.cfg |grep ‘^ ‘ |grep -v ‘^$’
36、找出“netstat -tan”命令结果中以LISTEN后跟任意多个空白字符结尾的行
# netstat -ant |grep -E ‘LISTEN[[:blank:]]+’
37、显示CentOS7上所有系统用户的用户名和UID
# grep ‘/sbin/nologin’ /etc/passwd |cut -d: -f1,3 –output-delimiter='< ====== >’
38、添加用户bash、testbash、basher、sh、nologin(其shell为/sbin/nologin),找出/etc/passwd用户名和shell同名的行
# cat /etc/passwd |egrep -w ‘^(.*).*/\1$’ 看不懂啊
39、利用df和grep,取出磁盘各分区利用率,并从大到小排序
# # df |grep -Eo ‘[[:digit:]]{1,3}%’|grep -oE ‘[0-9]{1,3}’|sort -nr|head -1
40、找出ifconfig “网卡名” 命令结果中本机的IPv4地址
# ifconfig ens33 | grep ‘\binet\b’ | tr -s ” ” “:” |cut -d: -f3 不是很懂
# ifconfig ens33 | head -2 |tail -1 | tr -s ‘ ‘ ‘:’|cut -d: -f3
# ifconfig ens33 | grep -w ‘inet’| tr -s ‘ ‘ ‘:’|cut -d: -f3
# ifconfig ens33 | grep ‘\<inet\>’| tr -s ‘ ‘ ‘:’ |cut -d: -f3
41、查出分区空间使用率的最大百分比值
# df -h |tr -s ‘ ‘ ‘:’ |cut -d: -f5 |tr -d ‘[:alpha:]’| grep ‘[0-9]’ |sort -n | tail -1
# df | tr -s ‘ ‘ ‘%’ |cut -d’%’ -f5 |tr -d ‘[:alpha:]’|sort -nr |head -1
# df | tr -s ‘ ‘ ‘%’ |cut -d% -f5|tr -d ‘[:alpha:]’|sort -nr|head -1
42、查出用户UID最大值的用户名、UID及shell类型
# cat /etc/passwd |sort -n -t: -k3 |tail -1 |cut -d: -f1,3,7
# sort -n -t: -k3 /etc/passwd|tail -1 |cut -d: -f1,3,7
43、查出/tmp的权限,以数字方式显示
# [root@centos7 gdm]#ll -d /tmp
drwxrwxrwt. 18 root root 4096 Apr 4 15:10 /tmp
/tmp :1777
44、统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序
#netstat -nt|tr -s ‘ ‘ ‘:’|cut -d: -f6 |tr -d ‘a-zA-Z’|grep -v ‘^$’| sort |uniq -c
45、当用户docker对/testdir 目录无执行权限时,意味着无法做哪些操作?
# 不能使用cd切换至该目录,不能执行删除操作(因为目录无法切换)
46、当用户mongodb对/testdir 目录无读权限时,意味着无法做哪些操作?
# 不能使用ls查看目录下的文件
47、当用户redis 对/testdir 目录无写权限时,该目录下的只读文件file1是否可修改和删除?
# 只有拥有写权限才可以删除目录下的文件,能否删除目录下的文件与所在目录是否具有写权限决定,与文件的权限无关
48、当用户zabbix对/testdir 目录有写和执行权限时,该目录下的只读文件file1是否可修改和删除?
# 可以删除和修改,拥有目录的执行权限是修改和删除目录下文件的前提,因为目录的执行权限决定是否可以切换至该目录下
49、复制/etc/fstab文件到/var/tmp下,设置文件所有者为tomcat读写权限,所属组为apps组有读写权限,其他人无权限
# useradd tomcat; group apps
# cp /etc/fstab /var/tmp
# chown tomcat:apps /var/tmp/fstab
# chmod 660 /var/tmp/fstab
50、误删除了用户git的家目录,请重建并恢复该用户家目录及相应的权限属性
# umask 022
# mkdir /home/git
# cp -a /etc/skel/.[^.]* /home/git
# chown -R git:git /home/git
51、统计远程主机登录次数的前三个IP
# netstat -nt|tr -s ‘ ‘ ‘:’|cut -d: -f6 |tr -d ‘a-zA-Z’|grep -v ‘^$’| sort -nr |uniq -c |head -3
52、找出ifconfig “网卡名” 命令结果中本机的IPv4地址
# ifconfig ens33 |head -2|tail -1|tr -s ‘ ‘ ‘:’|cut -d: -f3
53、查出分区空间使用率的最大百分比值
# df |tr -s ‘ ‘ %| cut -d% -f5 | tr -d ‘[:alpha:]’|sort -nr |head -1
54、查出用户UID最大值的用户名、UID及shell类型
# cat /etc/passwd |sort -n -t: -k3 |tail -1 |cut -d: -f1,3,7
# sort -n -t: -k3 /etc/passwd|tail -1 |cut -d: -f1,3,7
55、查出/tmp的权限,以数字方式显示
# [root@centos7 gdm]#ll -d /tmp
drwxrwxrwt. 18 root root 4096 Apr 4 15:10 /tmp
/tmp :1777
56、统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序
#netstat -nt|tr -s ‘ ‘ ‘:’|cut -d: -f6 |tr -d ‘a-zA-Z’|grep -v ‘^$’| sort |uniq -c
57、在/testdir/dir里创建的新文件自动属于webs组,组apps的成员如:tomcat能对这些新文件有读写权限,组dbs的成员如:mysql只能对新文件有读权限,其它用户(不属于webs,apps,dbs)不能访问这个文件夹
# groupadd webs
# groupadd dbs
# groupadd apps
# groupmems -a tomcat -g apps
# groupmems -a mysql -g dbs
# mkdir -pv /testdir/dir
# chmod -R 777 /testdir
# chmod 2770 /testdir/dir
# chgrp webs /testdir/dir
# setfacl -R g:apps:rwx /testdir/dir
# setfacl -R g:dbs:rwx /testdir/dir
58、备份/testdir/dir里所有文件的ACL权限到/root/acl.txt中,清除/testdir/dir中所有ACL权限,最后还原ACL权限
getfacl -R /testdir/dir1 > acl.txt
setfacl –restore acl.txt 没看明白
59、显示三个用户root、mage、wang的UID和默认shell
# cat /etc/passwd |grep -E ‘^(root|mage|wang)’|cut -d: -f3,7
60、找出/etc/rc.d/init.d/functions文件中行首为某单词(包括下划线)后面跟一个小括号的行
# cat /etc/rc.d/init.d/functions |grep -i ‘^[^[:space:]][0-9a-z_]*(‘
61、使用egrep取出/etc/rc.d/init.d/functions中其基名
# echo “/etc/rc.d/init.d/functions/” |grep -Eo ‘[^/]*/?$’
62、使用egrep取出上面路径的目录名
# echo “/etc/rc.d/init.d/functions” |egrep -o ‘/.*/’ 错了
63、统计last命令中以root登录的每个主机IP地址登录次数
#last |grep -E ‘^root.*([[:digit:]]{1,3}.){3}.[[:digit:]]{1,3}’|tr -s ‘ ‘ :|cut -d: -f3|sort |uniq -c
64、利用扩展正则表达式分别表示0-9、10-99、100-199、200-249、250-255
# [0-9]
# [1-9][0-9]
# 2[0-4][0-9]
# 25[0-5]
65、显示ifconfig命令结果中所有IPv4地址
# ifconfig |grep -Eo ‘[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}’ 注意.号的前面的转义字符
# ifconfig |grep -Eo ‘(([0-9]|[1-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|2[0-4][0-9]|25[0-5]){1}’
66、将此字符串:welcome to magedu linux 中的每个字符去重并排序,重复次数多的排到前面
# echo “welcome to magedu linux” |grep -o ‘.’| grep -v ‘^[[:space:]]*$’|sort | uniq -c grep -o ‘.’竟然没想出来
67、显示/proc/meminfo文件中以大小s开头的行(要求:使用两种方法)
# cat /proc/meminfo | egrep ‘^(s|S)’
# cat /proc/meminfo | grep -i ‘^s’
68、显示/etc/passwd文件中不以/bin/bash结尾的行
# cat /etc/passwd |grep -v ‘/bin/bash$’
69、显示用户rpc默认的shell程序
# cat /etc/passwd |grep -w ‘^root’|grep -Eo ‘/s{0,1}bin/.*$’
70、找出/etc/passwd中的两位或三位数
# cat /etc/passwd |grep -Eo ‘[0-9]{2,3}’
71、显示CentOS7的/etc/grub2.cfg文件中,至少以一个空白字符开头的且后面有非空白字符的行
# cat /etc/grub2.cfg |grep -E ‘^ +[a-z]{1,}’
72、找出“netstat -tan”命令结果中以LISTEN后跟任意多个空白字符结尾的行
# netstat -tan |grep ‘LISTEN *$’
73、显示CentOS7上所有系统用户的用户名和UID
# cat /etc/passwd |grep -w ‘[2-9][0-9][1-9]’| cut -d: -f1,3
74、添加用户bash、testbash、basher、sh、nologin(其shell为/sbin/nologin),找出/etc/passwd用户名和shell同名的行
# cat /etc/passwd |egrep -w ‘^(.*).*/\1$’
75、利用df和grep,取出磁盘各分区利用率,并从大到小排序
# df |grep -Eo ‘[[:digit:]]{1,3}%’|grep -oE ‘[0-9]{1,3}’|sort -nr|head -1
76、复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的行首的空白字符
# %s/^[[:space:]]*//g
77、复制/etc/rc.d/init.d/functions文件至/tmp目录,用查找替换命令为/tmp/functions的每行开头为空白字符的行的行首添加一个#号
# :%s/^[[:space:]]/#&/g ^[[:space:]] 为标准的正则表达式,匹配的是以空白开头的行
78、在vim中设置tab缩进为4个字符
# set ts=4
79、复制/etc/rc.d/init.d/functions文件至/tmp目录,替换/tmp/functions文件中的/etc/sysconfig/init为/var/log
# :%s@/etc/sysconfig/init@/var/log @符号也可以替换为# ,如果是/,需要是用\来转义
80、删除/tmp/functions文件中所有以#开头,且#后面至少有一个空白字符的行的行首的#号
# :%s/^# \+//g 注意+号前面的转义字符

81、编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小
#!/bin/bash
echo -e “\e[1;31mThe hostname:\e[0m hostname
echo -e “\e[1;31mThe System IP address:\e[0m ifconfig ens33|head -2 |tail -1|tr -s ' '|cut -d' ' -f3
echo -e “\e[1;31mCurrent System Version:\e[0m cat /etc/centos-release
echo -e “\e[1;31mKernel Version:\e[0m uname -r
echo -e “\e[1;31mThe Mode of CPU:\e[0m lscpu |grep 'Model name'|tr -s ' '|cut -d: -f2
echo -e “\e[1;31mThe total space of Memory:\e[0m cat /proc/meminfo |grep 'MemTotal'|tr -s ' '|cut -d: -f2
echo -e “\e[1;31mThe total space of disk:\e[0m lsblk |grep -w "sda"|tr -s ' ' ':'|cut -d: -f5
82、编写脚本/root/bin/backup.sh,可实现每日将/etc/目录备份到/root/etcYYYY-mm-dd中
#!/bin/bash

83、编写脚本/root/bin/disk.sh,显示当前硬盘分区中空间利用率最大的值
84、编写脚本/root/bin/links.sh,显示正连接本主机的每个远程主机的IPv4地址和连接数,并按连接数从大到小排序

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/95952

联系我们

400-080-6560

在线咨询

工作时间:周一至周五,9:30-18:30,节假日同时也值班

QR code