春節過去了,我們又開學了,又可以寫博客,做作業了,好開心.
下面是第6周的博客作業:
請詳細總結vim編輯器的使用并完成以下練習題:
1. 復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc/sysinit文件中的以至少一個空白字符開頭的行的行首加#;
[root@dhcp-10-129-6-166 ~]# head -30 /tmp/rc.sysinit | sed 's@^[[:space:]]@#&@g' #!/bin/bash # # /etc/rc.d/rc.sysinit - run once at boot time # # # # # Rerun ourselves through initlog // 通過 /sbin/initlog 命令重新運行自己 # if [ -z "$IN_INITLOG" -a -x /sbin/initlog ]; then // 條件是 :如果 IN_INITLOG 變量的值不為空,且 /sbin/initlog 可執行 # exec /sbin/initlog -r /etc/rc.d/rc.sysinit // 調用 exec /sbin/initlog ,-r 是表示運行某個程序,為了將rc.sysinit的運行信息記到syslog里(/var/log/messages) # fi # # ###################################################################################################################################################### # # HOSTNAME=`/bin/hostname` # 取得主機名 # HOSTTYPE=`uname -m` # 取得主機類型 # unamer=`uname -r` # 取得內核的 release 版本(例如 2.4.9.30-8) # eval version=`echo $unamer | awk -F '.' '{ print "(" $1 " " $2 ")" }'` # 取得版本號 # # if [ -f /etc/sysconfig/network ]; then # 如果存在 /etc/sysconfig/network ,則執行該文件。 # . /etc/sysconfig/network # network 文件主要控制是否啟用網絡、默認網關、主機名 # fi # if [ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" ]; then # 如果執行 network 文件后 HOSTNAME 為空或者為 "(none)" , # HOSTNAME=localhost # 則將主機名設置為 "localhost" # fi # # # # Mount /proc and /sys (done here so volume labels can work with fsck) # 接下來是掛載 /proc 和 /sys ,這樣 fsck 才能使用卷標 # mount -n -t proc /proc /proc # -n 表示不寫 /etc/mtab ,這在 /etc 所在的文件系統為只讀時用。因為此時的/還是只讀的
2. 復制/boot/grub/grub/conf至/tmp目錄中,刪除/tmp/grub.conf文件中的行首的空白字符;
[root@dhcp-10-129-6-166 ~]# sed 's@^[[:space:]]*@@g' /tmp/grub.cfg # # DO NOT EDIT THIS FILE # # It is automatically generated by grub2-mkconfig using templates # from /etc/grub.d and settings from /etc/default/grub # ### BEGIN /etc/grub.d/00_header ### set pager=1 if [ -s $prefix/grubenv ]; then load_env fi ...
3. 刪除/tmp/rc.sysinit文件中的以#開頭,且后面跟了至少1個空白字符的行的#和空白字符
root@dhcp-10-129-6-166 ~]# head -30 /tmp/rc.sysinit | sed 's@^#[[:space:]]*@@g' !/bin/bash /etc/rc.d/rc.sysinit - run once at boot time # Rerun ourselves through initlog // 通過 /sbin/initlog 命令重新運行自己 if [ -z "$IN_INITLOG" -a -x /sbin/initlog ]; then // 條件是 :如果 IN_INITLOG 變量的值不為空,且 /sbin/initlog 可執行 exec /sbin/initlog -r /etc/rc.d/rc.sysinit // 調用 exec /sbin/initlog ,-r 是表示運行某個程序,為了將rc.sysinit的運行信息記到syslog里(/var/log/messages) fi ###################################################################################################################################################### HOSTNAME=`/bin/hostname` # 取得主機名 HOSTTYPE=`uname -m` # 取得主機類型 unamer=`uname -r` # 取得內核的 release 版本(例如 2.4.9.30-8) eval version=`echo $unamer | awk -F '.' '{ print "(" $1 " " $2 ")" }'` # 取得版本號 if [ -f /etc/sysconfig/network ]; then # 如果存在 /etc/sysconfig/network ,則執行該文件。 . /etc/sysconfig/network # network 文件主要控制是否啟用網絡、默認網關、主機名 fi if [ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" ]; then # 如果執行 network 文件后 HOSTNAME 為空或者為 "(none)" , HOSTNAME=localhost # 則將主機名設置為 "localhost" fi # Mount /proc and /sys (done here so volume labels can work with fsck) # 接下來是掛載 /proc 和 /sys ,這樣 fsck 才能使用卷標 mount -n -t proc /proc /proc # -n 表示不寫 /etc/mtab ,這在 /etc 所在的文件系統為只讀時用。因為此時的/還是只讀的
4. 為/tmp/grub.conf文件中前三行的行首加#號;
[root@dhcp-10-129-6-166 ~]# sed '1,3s@^.*@#&@' grub.cfg.head3 ## ## DO NOT EDIT THIS FILE ##
5. 將/etc/yumrepos.d/CentOS-Media.repo文件中所有的enabled=0或gpgcheck=0的最后的0修改為1;
[root@dhcp-10-129-6-166 ~]# sed -r 's@(enabled|gpgcheck)=0@\1=1@g' /etc/yum.repos.d/CentOS-Media.repo # CentOS-Media.repo # # This repo can be used with mounted DVD media, verify the mount point for # CentOS-7. You can use this repo and yum to install items directly off the # DVD ISO that we release. # # To use this repo, put in your DVD and use it with the other repos too: # yum --enablerepo=c7-media [command] # # or for ONLY the media repo, do this: # # yum --disablerepo=\* --enablerepo=c7-media [command] [c7-media] name=CentOS-$releasever - Media baseurl=file:///media/CentOS/ file:///media/cdrom/ file:///media/cdrecorder/ gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
6. 每4小時執行一次對/etc目標的備份,備份至/backup目錄中,保存的目錄名為刑如etc-201504020202
[root@dhcp-10-129-6-166 ~]# cat /var/spool/cron/root 0 */4 * * * root find /etc | cpio -oc > /backup/etc-$(date +%Y%M%d)
7. 每周2,4,6備份/var/log/messages文件至/back/massages_logs/目錄中,保存的文件名刑如message-20150402
0 0 * * */2 root find /var/log/messages | cpio -oc > /back/message_logs/message-$(date +%Y%M%d)
8. 每天每兩小時取當前系統/proc/meminfo文件中的所有以S開頭的信息至/stats/memory.txt文件中
0 */2 * * * root grep "^S" /proc/meminfo >> /stats/memory.txt
9. 工作日的工作時間內,每兩個小時執行一次echo "howdy"
0 9-18/2 * * 1-5 root echo "howdy"
腳本編程練習:
10. 創建目錄/tmp/testdir-當前日期時間;
11. 在此目錄創建100個空文件;file1-file100
12. 顯示/etc/passwd文件中位于第偶數行的用戶的用戶名;
[root@dhcp-10-129-6-166 ~]# cat ./my_shell/week6 !#/bin/bash #create a directory under /tmp and named following by testdir-CURRENTDATE. declare TEST_DIR=testdir-$(date +%Y%M%d) mkdir /tmp/$TEST_DIR #create 100 new empty file under the directory just created. #use while struction to realize this declare I=1 while [ $I -le 100 ]; do touch /tmp/$TEST_DIR/FILE$I let I++ done #print out user name of even number line in file /etc/password sed -n 'n;p' /etc/passwd | cut -d: -f 1 [root@dhcp-10-129-6-166 ~]#
原創文章,作者:JL,如若轉載,請注明出處:http://www.www58058.com/68282
sed默認是不修改源文件的,修改源文件需要加”-i”選項,加油!?。?/p>