好記性不如爛筆頭|多看視頻不如多練習

題目練習

時間過得很快,一下子三周過去了。通過這三周的學習。我由一個小白慢慢的了解了linux系統。學會了一些基本的操作與邏輯思維。之前的學習方法不對??偸窃诘诙鞆土暤臅r候習慣性的去看視頻。后來聽了宗華老師的建議 多練習 少看視頻。于是知識積累達到了直線上升。以前一些百思不得其解的問題一下子得到了解決。自信心得到了很大的滿足。接下來我附帶上一位我們班上一位大神的練習題

 

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/backup`date +%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.www58058.com/95952

(2)
小孜然小孜然
上一篇 2018-04-14
下一篇 2018-04-14

相關推薦

  • Linux任務計劃、周期性任務執行

    Linux任務計劃、周期性任務執行 at at命令用于在指定時間執行命令。執行結果會通過郵件發送給用戶 at允許使用一套相當復雜的指定時間的方法。它能夠接受在當天的hh:mm(小時:分鐘)式的時間指定。假如該時間已過去,那么就放在第二天執行 語法 at(選項)(參數) atq: 查詢任務列表 atrm: 刪除指定任務 選項 -f:指定包含具體指令的任務文件;…

    Linux筆記 2018-04-03
  • linux一些實用小命令

    linux的哲學思想: 1 一切皆文件2 小型,單一用途的程序3 鏈接程序,共同完成復雜的任務4 避免令人困惑的用戶界面5 配置數據存儲在文本中1Byte=8bit1k=1024Byte1M=1024k1G=1024M1T=1024G1P 1E 1Z 1Y 1D每個漢字占2個字節(Byte) 每個英文字母占1字節(Byte)在網絡配置文件中修改網絡開機自啟項…

    Linux筆記 2018-03-31
  • 網段劃分

    物理上在一個網段,邏輯上不在一個網段 則通訊必須經過路由器 只要不在一個網段就要經過路由器 路由表   由于有類地址之間跨度太大,不利于使用,現在生產環境中使用的是無類地址。 無類地址:網絡ID,主機ID不確定 CIDR:無類域間路由 無類域間路由表示法 IP/網絡ID位數   172.20.0.123 netmask:子網掩碼 32位二…

    Linux筆記 2018-07-02
  • mysql 高可用

    實驗:集群高可用 一個管理——一個主——兩個從 管理 主機 從機1 從機2 1.必須先統一時間,做集群必須時間一致,所有主機做如下操作 所有主機統一ntp服務器時間,寫入文件里 前期需要手工同步下 啟用ntp服務 2.所有主機關掉iptables 和selinux 3.先做主從復制 主機配置文件 這四項必須寫 重啟服務 查看主機二進制文件的位置 主機創建賬號…

    2018-06-19
  • Linux作業管理,并行運行,任務計劃(at任務和cron任務)

    本文主要介紹:1、Linux作業管理 2、并行運行 3、任務計劃(at 一次性任務和 cron 周期性任務)

    2018-05-06
  • 正則表達式

    基本正則表達式元字符

    Linux筆記 2018-06-22
欧美性久久久久