N22-第六周作业

请详细总结vim编辑器的使用并完成以下练习题

单词间跳转

w:下一个单词的词首

e:当前或后一个单词的词尾

b:当前或前一个单词的词首

行首行尾跳转:

^:跳转至行首的第一个非空白字符

0:跳转至行首

$: 跳转至行尾

句间跳转:

)

(

段落跳转:

}

{

字符编辑

x:删除光标所在处的字符

#x:删除光标所在处起始的#个字符

xp:交换光标所在处的字符与其后面的字符的位置

替换命令:

r替换光标所在处的字符

删除命令:

d:可结合光标跳转字符,实现范围删除

粘贴命令

p:缓冲区中的内容如何为整行,则粘贴在当前光标所在行的下方:否则,粘贴至当前光标所在处的后方

P:缓冲区中的内容如何为整行,则粘贴在当前光标所在行的上方:否则,粘贴至当前光标所在处的前方

复制命令

y:复制,工作行为相似于d命令

可视化模式:

v:按字符选定

V:按行选定

结合编辑命令使用:d,c,y

撤销操作:

u:撤销此前的操作

    #u:撤销此前的#个操作

撤销此前的撤销:

    Ctrl+r

重复执行前一个编辑操作

vim命令行模式:

地址定界:

start_pos[,end_pos]

#:特定的第#行,例如5即第五行;

#,#:指定行范围,左侧为起始行,右侧为结束行;

#,+#:指定行范围,左侧为起始行绝对编号,右侧为相对左侧行号的偏移量

点,表示当前号

$:最后一行

%:表示全文

/pattern/:从光标所在处第一次被模式所匹配到的行

查找并替换:

s:命令行模式的命令,使用格式:

        s/要查找内容/替换的内容/修饰符

        要查找的内容:可使用正则表达式

        替换的内容:不能使用正则表达式,但可以引用        

            如果“要查找的内容”部分在模式中使用分组符号:在“替换为的内容”中使用后向引用

            直接引用查找模式匹配到的全部文本

修饰符:i:忽略大小写

                g:全局替换,意味着一行中如果匹配到多次,则均替换


1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#;

[root@localhost ~]# cp /etc/rc.d/rc.sysinit /tmp/rc.sysinit        (先复制/etc/rc.d/rc.sysinit文件至/tmp目录)

[root@localhost ~]# vim /tmp/rc.sysinit        (用vim编辑文件)

在命令行模式输入:%s/^[[:space:]]\+/#&/g

部分截屏:

if [ -x /usr/sbin/system-config-network-cmd ]; then

#  if strstr "$cmdline" netprofile= ; then

#    for arg in $cmdline ; do

#        if [ "${arg##netprofile=}" != "${arg}" ]; then

#           /usr/sbin/system-config-network-cmd –profile ${arg##netprofile=}

#        fi

#    done

#  fi

fi


2、复制/boot/grub/grub.conf至/tmp目录中,删除/tmp/grub.conf文件中的行首的空白字符;

[root@localhost ~]# cp /boot/grub/grub.conf /tmp/grub.conf        (复制/boot/grub/grub.conf至/tmp目录中)

[root@localhost ~]# vim /tmp/grub.conf        (用vim编辑文件)

在命令行模式输入:%s/^[[:space:]]\+//g

部分截屏

default=0

timeout=5

splashimage=(hd0,0)/grub/splash.xpm.gz

hiddenmenu

title CentOS (2.6.32-431.el6.x86_64)

root (hd0,0) 

kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=UUID=fec8b8a8-9718-42e2-af47-26e513138aa1 rd_NO_LUKS rd_NO_LVM.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet

initrd /initramfs-2.6.32-431.el6.x86_64.img


3、删除/tmp/rc.sysinit文件中的以#开头,且后面跟了至少一个空白字符的行行的#和空白字符

[root@localhost ~]# sed 's/^#[[:space:]]\+//g' /tmp/rc.sysinit

(部分截屏)

Set up binfmt_misc

/bin/mount -t binfmt_misc none /proc/sys/fs/binfmt_misc > /dev/null 2>&1

Boot time profiles. Yes, this should be somewhere else.

if [ -x /usr/sbin/system-config-network-cmd ]; then

  if strstr "$cmdline" netprofile= ; then

    for arg in $cmdline ; do

        if [ "${arg##netprofile=}" != "${arg}" ]; then

   /usr/sbin/system-config-network-cmd –profile ${arg##netprofile=}

        fi

    done

  fi

fi

4、为/tmp/grub.conf文件中前三行的行首加#号;

[root@localhost ~]# sed '1,3 s/^.*/#&/g' /tmp/grub.conf

## grub.conf generated by anaconda

##

## Note that you do not have to rerun grub after making changes to this file


5、将/etc/yum.repos.d/CentOS-Media.repo文件中所有的enabled=0或gpgcheck=0的最后的0修改为1;

[root@localhost ~]# sed -r 's/(gpgcheck=|enabled=)0/\11/g' /etc/yum.repos.d/CentOS-Media.repo 

部分截屏

gpgcheck=1

enabled=1


6、每4小时执行一次对/etc目录的备份,备份至/backup目录中,保存的目录名为形如etc-201504020202

[root@localhost /]# mkdir backup        (创建备份目录/backup)

[root@localhost /]# crontab -e 

输入如下:

0 */4 * * * /bin/cp -a /etc /backup/etc-$(date +\%Y\%m\%d\%H\%M)

7、每周2,4,6备份/var/log/messages文件至/backup/messages_logs/目录中,保存的文件名形如messages-20150402

[root@localhost /]# crontab -e

输入如下:

0 0 * * 2,4,6 /bin/cp -a /var/log/messages /backup/messages_logs/messages-$(date +\%Y\%m\%d)


8、每天每两小时取当前系统/proc/meminfo文件中的所有以S开头的信息至/stats/memory.txt文件中

[root@localhost /]# crontab -e

输入如下:

0 */2 * * * /bin/grep "^S" /proc/meminfo > /stats/memory.txt


9、工作日的工作时间内,每两小时执行一次echo "howdy"

0 8-12/2 * * 1-5 echo "howdy"

0 14-18/2 * * 1-5 echo "howdy"


脚本编程练习

10、创建目录/tmp/testdir-当前日期时间; 

11、在此目录创建100个空文件:file1-file100

[root@localhost ~]# vim mkd-testdir.sh        (创建脚本)

#!/bin/bash

# Author: liuguohui

# Date: 2016/09/24 17:20

# Email: liuguohui1008@sina.com

# Version: 0.0.1

# Description: mkdir a directory and touch one hundred file1-file100 empty file

#

dirname="testdir-$(date +\%Y\%m\%d\%H\%M)"

mkdir /tmp/$dirname

for i in {1..100}

do

touch /tmp/$dirname/file$i

done


[root@localhost ~]# bash mkd-testdir        (执行脚本)

[root@localhost ~]# ls /tmp/testdir-201609241129        (查询结果)

file1    file17  file25  file33  file41  file5   file58  file66  file74  file82  file90  file99

file10   file18  file26  file34  file42  file50  file59  file67  file75  file83  file91

file100  file19  file27  file35  file43  file51  file6   file68  file76  file84  file92

file11   file2   file28  file36  file44  file52  file60  file69  file77  file85  file93

file12   file20  file29  file37  file45  file53  file61  file7   file78  file86  file94

file13   file21  file3   file38  file46  file54  file62  file70  file79  file87  file95

file14   file22  file30  file39  file47  file55  file63  file71  file8   file88  file96

file15   file23  file31  file4   file48  file56  file64  file72  file80  file89  file97

file16   file24  file32  file40  file49  file57  file65  file73  file81  file9   file98


12、显示/etc/passwd文件中位于第偶数行的用户的用户名;

[root@localhost ~]# vim show-evenline.sh    (创建脚本)

#!/bin/bash

# Author: liuguohui

# Date: 2016/09/24 19:15

# Email: liuguohui1008@sina.com

# Description: display even number line

#

sed -n '2~2p' $1 |cut -d ':' -f 1


[root@localhost ~]# bash show-evenline.sh /etc/passwd        (执行脚本)

bin

adm

sync

halt

uucp

games

ftp

vcsa

postfix


13、创建10用户user10-user19;密码同用户名;

14、在/tmp/创建10个空文件file10-file19; 

15、把file10的属主和属组改为user10,依次类推。

[root@localhost ~]# vim user.sh    (创建脚本)

#!/bin/bash

# Author: liuguohui

# Date: 2016/09/24 19:32

# Email: liuguohui1008@sina.com

# Description: useradd user10-user19 and password same to useranme and touch file10-file19

#       file empty and file10-19 owner-user,owner-group change user10-19,group10-19

#

for i in $(seq 10 19);

do

# useradd user

useradd "user$i"

# set password

echo "user$i" | passwd –stdin "user$i"

# touch file

touch /tmp/file$i

# change owner-user and owner-group

chown "user$i":"user$i" /tmp/file$i

done


[root@localhost ~]# bash user.sh        (执行脚本)

Changing password for user user10.

passwd: all authentication tokens updated successfully.

Changing password for user user11.

passwd: all authentication tokens updated successfully.

Changing password for user user12.

passwd: all authentication tokens updated successfully.

Changing password for user user13.

passwd: all authentication tokens updated successfully.

Changing password for user user14.

passwd: all authentication tokens updated successfully.

Changing password for user user15.

passwd: all authentication tokens updated successfully.

Changing password for user user16.

passwd: all authentication tokens updated successfully.

Changing password for user user17.

passwd: all authentication tokens updated successfully.

Changing password for user user18.

passwd: all authentication tokens updated successfully.

Changing password for user user19.

passwd: all authentication tokens updated successfully.


[root@localhost ~]# ll /tmp/        (查询属主和属组)

total 32

-rw-r–r–. 1 user10 user10     0 Sep 24 12:45 file10

-rw-r–r–. 1 user11 user11     0 Sep 24 12:45 file11

-rw-r–r–. 1 user12 user12     0 Sep 24 12:45 file12

-rw-r–r–. 1 user13 user13     0 Sep 24 12:45 file13

-rw-r–r–. 1 user14 user14     0 Sep 24 12:45 file14

-rw-r–r–. 1 user15 user15     0 Sep 24 12:45 file15

-rw-r–r–. 1 user16 user16     0 Sep 24 12:45 file16

-rw-r–r–. 1 user17 user17     0 Sep 24 12:45 file17

-rw-r–r–. 1 user18 user18     0 Sep 24 12:45 file18

-rw-r–r–. 1 user19 user19     0 Sep 24 12:45 file19


原创文章,作者:heianyangguo,如若转载,请注明出处:http://www.178linux.com/46678

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-27 09:46

    写的很好,但是还需要注意下排版的问题