linux練習題linux
一、指定格式顯示當前時間,格式: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 將秒數轉化爲天數 二、顯示前天是星期幾 今天星期三 兩天前是星期一 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" 三、在本機字符終端登陸時,除顯示原有信息外,再顯示當前登陸終端號,主機名和當前時間 登陸的終端號 時間 主機名 Nano /etc/issue The hostname is \n 主機名 Time is \t 時間 TTy is \l 登陸終端 四、今天18:30自動關機,並提示用戶 shutdown -P(power off) "18:30" shutdown -h(halt) now 當即關機 shutdown -r +2 2分鐘後重啓 2、文件管理 一、顯示/var目錄下全部以l開頭,以一個小寫字母結尾,且中 間出現至少一位數字的文件或目錄 ls -d /var/1*[0-9]*[[:lower:]] 二、顯示/etc目錄下以任意一位數字開頭,且以非數字結尾的 文件或目錄 ls -d /etc/[0-9]*[^[:digit:]] tuolefu ^ 三、顯示/etc/目錄下以非字母開頭,後面跟了一個字母及其 它任意長度任意字符的文件或目錄 ls -d [^[:alpha:]][[:alpha:]]* 四、顯示/etc/目錄下全部以rc開頭,並後面是0-6之間的數 字,其它爲任意字符的文件或目錄 ls -d /etc/rc[0-6]* 五、顯示/etc目錄下,全部以.d結尾的文件或目錄 l s -d /etc/*.d 六、顯示/etc目錄下,全部.conf結尾,且以m,n,r,p開頭的文 件或目錄 ls -d [mnrp]*.conf 七、只顯示/root下的隱藏文件和目錄 ls -d /root/.[^.]* ls -aI /root/[^.]* 八、只顯示/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}} 3、重定向與管道 一、將/etc/issue文件中的內容轉換爲大寫後保存至/tmp/issue.out文件中 tr 'a-z' 'A-Z' < /etc/issue > /tmp/issue.out 二、將當前系統登陸用戶的信息轉換爲大寫後保存至/tmp/who.out文件中 who | tr [a-z] [A-Z] > /tmp/who.out 三、一個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 四、將/root/下文件列表,顯示成一行,並文件名之間用空格隔開 ls/root/ | tr '\n' ' ' 五、計算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 ~]# 六、刪除Windows文本文件中的‘^M’字符 tr -d '\r' < win.txt > linux.txt tr -d '\15' win2.txt > linux2.txt 七、處理字符串「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' 單引號認爲!$爲普通字符 ,不認爲它是上個命令的最後一個參數 八、將PATH變量每一個目錄顯示在獨立的一行 echo $PATH | tr ':' '\n' 九、將指定文件中0-9分別替代成a-j tr [0-9] [a-j] < testfile.txt 十、將文件中每一個單詞(由字母組成)顯示在獨立的一行,並沒有空行 tr -sc 'a-z大A到Z' '\n' < /etc/centos-release 4、用戶組和權限管理 一、建立用戶gentoo,附加組爲bin和root,默認shell爲/bin/csh,註釋信息爲"Gentoo Distribution" Useradd -G bin,root -s /bin/csh -c "Gentoo Distribution" gentoo 二、建立下面的用戶、組和組成員關係 名字爲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; 三、當用戶xiaoming對/testdir 目錄無執行權限時,意味着沒法作哪些操做? 不能cd進入該目錄 目錄下的文件什麼都不能作(即便文件有777最高權限) 四、當用戶xiaoqiang對/testdir 目錄無讀權限時,意味着沒法作哪些操做? 不能查看目錄的文件列表 五、當用戶wangcai 對/testdir 目錄無寫權限時,該目錄下的只讀文件file1是否可修改和刪除? file1文件是不能刪除的,不能修改 六、當用戶wangcai 對/testdir 目錄有寫和執行權限時,該目錄下的只讀文件file1是否可修改和刪除? file1文件能夠刪除,可是不能修改 七、複製/etc/fstab文件到/var/tmp下,設置文件全部者爲wangcai讀寫權限,所屬組爲sysadmins組有讀寫權限,其餘人無權限 cp /etc/fstab /var/tmp/ ; chmod u=rw,g=rw,o= fstab chown wangcai:sysadmins fstab 八、誤刪除了用戶haha的家目錄,請重建並恢復該用戶家目錄及相應的權限屬性、全部者 cp -r /etc/skel /home/haha (複製目錄並更名) chown -R haha:haha /home/haha chmod 700 /home/haha haha用戶的全部者和全部組爲haha,因此需更改 九、在/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遞歸設置默認權限)
一、刪除centos7系統/etc/grub2.cfg文件中全部以空白開頭的行行首的空白字符 [root@centos7 ~]$ sed -nr 's@^([[:space:]]+)(.*)@\2@p' /etc/grub2.cfg 二、刪除/etc/fstab文件中全部以#開頭,後面至少跟一個空白字符的行的行首的#和空白字符 [root@centos7 ~]$ sed -nr 's@(^#[[:space:]])(.*)@\2@p' /etc/fstab 三、在centos6系統/root/install.log每一行行首增長#號 [root@centos6 ~]# sed -nr 's@.*@#\0@p' /root/install.log 四、在/etc/fstab文件中不以#開頭的行的行首增長#號 [root@centos6 ~]# sed -nr 's@^[^#].*@#\0@p' /etc/fstab 五、處理/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' 六、利用sed 取出ifconfig命令中本機的IPv4地址 [root@centos7 ~]$ ifconfig ens33 |sed -nr '2s@.*inet (.*) netmask.*@\1@p' v七、統計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 八、統計/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 九、將文本文件的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