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

(0)
heianyangguoheianyangguo
上一篇 2016-09-26
下一篇 2016-09-26

相关推荐

  • Linux的哲学思想

    Linux的哲学思想 一切皆文件 不管是普通的文件、目录,还是跟硬件相关的字符设备、块设备、套接字等在Linux中都被当作文件来进行统一的操作管理。 单个程序完成简单的功能,复杂的功能由多个程序组合而成 单个程序只实现简单功能,保证了其高效运行,而复杂功能由多个简单程序组合而成,也能保证一定的高效性。 尽量避免与用户交互 程序从启动开始到结束不需要用户参与,…

    Linux干货 2017-07-02
  • grep命令与正则表达式的应用示例、find命令应用示例

    grep命令与正则表达式的应用示例、find命令应用示例 显示当前系统上root、fedora或user1用户的默认shell。 使用扩展正则表达式,它支持使用A|B表示或者之意。查看用户的默认shell,cat /etc/passwd文件,根据用户名所处位置进行锚定,其最后一个字段即表示该用户的默认shell。实现方式及结果如下:   找出/et…

    Linux干货 2016-11-28
  • quota AND raid

    1.磁盘配额 将home目录独立出来单独的分区,限制用户的使用。 (1)先创建分区,如下图的分区sda6 (2)命令同步系统的新增加分区:partx –a /dev/sda (3)命令格式化新分区:     (4)把创建的设备挂载到/mnt/home下    (5)迁移数据,移动之前要确保home分区没有使用。权限是保…

    Linux干货 2016-09-19
  • 管道、重定向和用户管理练习

    前面一章学习了硬链接和软链接,回顾上一章节内容:    硬链接:在inode表中记录一个条目,所有的元数据和原始文件元数据相同。        ·相当于两个名字。        ·删除原始文件,另一个条目也能够…

    Linux干货 2016-08-04
  • Linux中/etc/passwd、/etc/shadow文件字段的含义以及用处

        今天本人学习到了两个个Linux中非常重要的文件,它们承载着Linux用户的相关信息,如果在账号方面出现一些密码相关的问题,就可以来找这两个文件查看和分析一番。     他们分别是/etc/passwd和/etc/shadow两个文件,他们都存放于/etc目录中,都可以使用cat命令来查看其内容。  …

    Linux干货 2016-01-14
  • N26-第五周博客

    1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; [root@localhost ~]# grep "^[[:space:]].*$" /boot/grub/grub.conf 2、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行; [root…

    系统运维 2017-02-10

评论列表(1条)

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

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