linux練習題
阿新 • • 發佈:2018-04-21
面試考題 linuxlinux練習題
1、指定格式顯示當前時間,格式:2017-11-09 10:20:30 [root@cent6OS ~]#date "+%Y-%m-%d %H:%M:%S" 2017-11-19 19:04:14 date –d “-6 day” “+%F %T” 指定格式顯示六天前的日期 date –d “yesterday” date –d “10 month” date "+%s" 距離1970年1月1號的秒數時間 `echo date "+%s" `/ 3600/24 | bc 將秒數轉化為天數 2、顯示前天是星期幾 今天星期三 兩天前是星期一 0或7-6 0或7表示星期日 [root@centos7 ~]#date -d "2 day ago" "+%u" 6 設置當前日期為2017-11-09 16:26:00 date -s "16:26:00 2017-11-09" "+%Y-%m-%d %H:%M:%S" 3、在本機字符終端登錄時,除顯示原有信息外,再顯示當前登錄終端號,主機名和當前時間 登錄的終端號 時間 主機名 Nano /etc/issue The hostname is \n 主機名 Time is \t 時間 TTy is \l 登錄終端 4、今天18:30自動關機,並提示用戶 shutdown -P(power off) "18:30" shutdown -h(halt) now 立即關機 shutdown -r +2 2分鐘後重啟 二、文件管理 1、顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中 間出現至少一位數字的文件或目錄 ls -d /var/1*[0-9]*[[:lower:]] 2、顯示/etc目錄下以任意一位數字開頭,且以非數字結尾的 文件或目錄 ls -d /etc/[0-9]*[^[:digit:]] tuolefu ^ 3、顯示/etc/目錄下以非字母開頭,後面跟了一個字母及其 它任意長度任意字符的文件或目錄 ls -d [^[:alpha:]][[:alpha:]]* 4、顯示/etc/目錄下所有以rc開頭,並後面是0-6之間的數 字,其它為任意字符的文件或目錄 ls -d /etc/rc[0-6]* 5、顯示/etc目錄下,所有以.d結尾的文件或目錄 l s -d /etc/*.d 6、顯示/etc目錄下,所有.conf結尾,且以m,n,r,p開頭的文 件或目錄 ls -d [mnrp]*.conf 7、只顯示/root下的隱藏文件和目錄 ls -d /root/.[^.]* ls -aI /root/[^.]* 8、只顯示/etc下的非隱藏目錄 ls -d /etc/[^.]*/ 總結 *顯示普通文件 壓縮文件 可執行程序 */只顯示目錄 (1) 如何創建/testdir/dir1/x, /testdir/dir1/y, /testdir/dir1/x/a, /testdir/dir1/x/b, /testdir/dir1/y/a, /testdir/dir1/y/b mkdir -pv /testdir/dir1{x,y}/{a,b} (2) 如何創建/testdir/dir2/x, /testdir/dir2/y, /testdir/dir2/x/a, /testdir/dir2/x/b mkdir /testdir/dir2/{x/{a,b},y} -pv (3) 如何創建/testdir/dir3, /testdir/dir4, /testdir/dir5, /testdir/dir5/dir6, /testdir/dir5/dir7 mkdir -pv /testdir/dir{3,4,5/dir{6,7}} 三、重定向與管道 1、將/etc/issue文件中的內容轉換為大寫後保存至/tmp/issue.out文件中 tr ‘a-z‘ ‘A-Z‘ < /etc/issue > /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 `whoami` | $USER ,The system version is here,please help me to check it ,thanks! > Uname -r 系統內核信息 >Cat /etc/centos-release 操作系統版本信息 > EOF 4、將/root/下文件列表,顯示成一行,並文件名之間用空格隔開 ls/root/ | tr ‘\n‘ ‘ ‘ 5、計算1+2+3+..+99+100的總和 [root@centos7 ~]#seq --separator="+" 1 100 | bc 5050 [root@centos7 ~]#seq -s ‘+‘ 1 100 | bc 5050 [root@centos7 ~]#echo {1..100} | tr " " "+" | bc 5050 [root@centos7 ~]# 6、刪除Windows文本文件中的‘^M’字符 tr -d ‘\r‘ < win.txt > linux.txt tr -d ‘\15‘ win2.txt > linux2.txt 7、處理字符串“xt.,l 1 jr#!$mn 2 c*/fe 3 uz 4”,只保留其中的數字和空格 [root@centos7 ~]#echo ‘xt.,l 1 jr#!$mn 2 c*/fe 3 uz 4‘ | tr -dc ‘[0-9] \n‘ ‘xt.,l 1 jr#!$mn 2 c*/fe 3 uz 4‘ 單引號認為!$為普通字符 ,不認為它是上個命令的最後一個參數 8、將PATH變量每個目錄顯示在獨立的一行 echo $PATH | tr ‘:‘ ‘\n‘ 9、將指定文件中0-9分別替代成a-j tr [0-9] [a-j] < testfile.txt 10、將文件中每個單詞(由字母組成)顯示在獨立的一行,並無空行 tr -sc ‘a-z大A到Z‘ ‘\n‘ < /etc/centos-release 四、用戶組和權限管理 1、創建用戶gentoo,附加組為bin和root,默認shell為/bin/csh,註釋信息為"Gentoo Distribution" Useradd -G bin,root -s /bin/csh -c "Gentoo Distribution" gentoo 2、創建下面的用戶、組和組成員關系 名字為admins 的組 用戶natasha,使用admins 作為附屬組 用戶harry,也使用admins 作為附屬組 用戶sarah,不可交互登錄系統,且不是admins 的成員,natasha,harry,sarah密碼都是centos groupadd admins; useradd -G admins natasha; useradd -G admins harry; useradd -s /sbin/nologin sarah ; echo centos | passwd --stdin natasha; echo centos | passwd --stdin harry; echo centos | passwd --stdin sarah; 3、當用戶xiaoming對/testdir 目錄無執行權限時,意味著無法做哪些操作? 不能cd進入該目錄 目錄下的文件什麽都不能做(即使文件有777最高權限) 4、當用戶xiaoqiang對/testdir 目錄無讀權限時,意味著無法做哪些操作? 不能查看目錄的文件列表 5、當用戶wangcai 對/testdir 目錄無寫權限時,該目錄下的只讀文件file1是否可修改和刪除? file1文件是不能刪除的,不能修改 6、當用戶wangcai 對/testdir 目錄有寫和執行權限時,該目錄下的只讀文件file1是否可修改和刪除? file1文件可以刪除,但是不能修改 7、復制/etc/fstab文件到/var/tmp下,設置文件所有者為wangcai讀寫權限,所屬組為sysadmins組有讀寫權限,其他人無權限 cp /etc/fstab /var/tmp/ ; chmod u=rw,g=rw,o= fstab chown wangcai:sysadmins fstab 8、誤刪除了用戶haha的家目錄,請重建並恢復該用戶家目錄及相應的權限屬性、所有者 cp -r /etc/skel /home/haha (復制目錄並改名) chown -R haha:haha /home/haha chmod 700 /home/haha haha用戶的所有者和所有組為haha,所以需更改 9、在/testdir/dir裏創建的新文件自動屬於g1組,組g2的成員如:alice能對這些新文件有讀寫權限,組g3的成員如:tom只能對新文件有讀權限,其它用戶(不屬於g1,g2,g3)不能訪問這個文件夾。 [root@centos7 app]#mkdir /testdir/dir [root@centos7 app]#groupadd g1 [root@centos7 app]#groupadd g2 [root@centos7 app]#groupadd g3 [root@centos7 app]#chgrp g1 /testdir/dir [root@centos7 app]#chmod g+s /testdir/dir 創建用戶並添加到相應組 [root@centos7 ~]#setfacl -m d:g:g2:rw,d:g:g3:r,o::- /testdir/dir (新創建目錄不需要加-R遞歸設置默認權限)
sed文本處理
1、刪除centos7系統/etc/grub2.cfg文件中所有以空白開頭的行行首的空白字符 [root@centos7 ~]$ sed -nr ‘s@^([[:space:]]+)(.*)@\2@p‘ /etc/grub2.cfg 2、刪除/etc/fstab文件中所有以#開頭,後面至少跟一個空白字符的行的行首的#和空白字符 [root@centos7 ~]$ sed -nr ‘s@(^#[[:space:]])(.*)@\2@p‘ /etc/fstab 3、在centos6系統/root/install.log每一行行首增加#號 [root@centos6 ~]# sed -nr ‘s@.*@#\0@p‘ /root/install.log 4、在/etc/fstab文件中不以#開頭的行的行首增加#號 [root@centos6 ~]# sed -nr ‘s@^[^#].*@#\0@p‘ /etc/fstab 5、處理/etc/fstab路徑,使用sed命令取出其目錄名和基名 [root@centos6 ~]# echo "/etc/fstab" |sed -nr ‘s@(.*/)([^/]+)/?@\2@p‘ fstab [root@centos6 ~]# echo "/etc/fstab/" |sed -nr ‘s@(.*/)([^/]+)/?@\2@p‘ fstab [root@centos6 ~]# echo "/etc/" |sed -nr ‘s@(.*/)([^/]+)/?@\1@p‘ 6、利用sed 取出ifconfig命令中本機的IPv4地址 [root@centos7 ~]$ ifconfig ens33 |sed -nr ‘2s@.*inet (.*) netmask.*@\1@p‘ v7、統計centos安裝光盤中Package目錄下的所有rpm文件的以.分隔倒數第二個字段的重復次數 root@centos7 ~]$ ls /misc/cd/Packages/ |sed -nr ‘s@.*\.([^.]*)\.rpm@\1@p‘ |sort |uniq -c 2141 i686 3076 noarch 4374 x86_64 8、統計/etc/init.d/functions文件中每個單詞的出現次數,並排序(用grep和sed兩種方法分別實現) sed方法 [root@centos7 ~]#sed -r ‘s/[^[:alpha:]]/\n/g‘ /etc/init.d/functions | sed ‘/^$/d‘ | uniq -c | sort -n | wc -l grep方法(註意非正則符號前加斜杠) egrep -o "[[:alpha:]]+" /etc/init.d/functions | uniq -c | sort | wc -l 9、將文本文件的n和n+1行合並為一行,n為奇數行 [root@centos7 ~]#seq 1 10 | sed ‘N;s/\n/ /‘ 1 2 3 4 5 6 7 8 9 10 [root@centos7 ~]#seq 1 10 | xargs -n3 (設置最多的參數個數) 1 2 3 4 5 6 7 8 9 10
linux練習題